mirror of
https://github.com/openstf/stf
synced 2025-10-04 02:09:32 +02:00
Replace groupService's outdated member tracker with deviceService.trackGroup().
This commit is contained in:
parent
efed9aefce
commit
2555168345
4 changed files with 31 additions and 56 deletions
|
@ -34,10 +34,10 @@ dbapi.loadUser = function(email) {
|
|||
return db.run(r.table('users').get(email))
|
||||
}
|
||||
|
||||
dbapi.loadGroupMembers = function(email) {
|
||||
dbapi.loadGroup = function(email) {
|
||||
return db.run(r.table('devices').getAll(email, {
|
||||
index: 'ownerEmail'
|
||||
})('serial'))
|
||||
}))
|
||||
}
|
||||
|
||||
dbapi.saveDeviceLog = function(serial, entry) {
|
||||
|
|
|
@ -114,15 +114,17 @@ module.exports = function(options) {
|
|||
})
|
||||
|
||||
app.get('/api/v1/group', function(req, res) {
|
||||
dbapi.loadGroupMembers(req.user.email)
|
||||
dbapi.loadGroup(req.user.email)
|
||||
.then(function(cursor) {
|
||||
return Promise.promisify(cursor.toArray, cursor)()
|
||||
.then(function(list) {
|
||||
list.forEach(function(device) {
|
||||
datautil.applyData(device)
|
||||
datautil.applyOwner(device, req.user)
|
||||
})
|
||||
res.json({
|
||||
success: true
|
||||
, group: {
|
||||
members: list
|
||||
}
|
||||
, devices: list
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -55,7 +55,7 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
|||
if (device) {
|
||||
modify(device, data)
|
||||
}
|
||||
else if (options.auto) {
|
||||
else if (options.insertPresent) {
|
||||
insert(data)
|
||||
}
|
||||
})
|
||||
|
@ -70,8 +70,13 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
|||
scopedSocket.on('device.change', function (data) {
|
||||
var device = get(data)
|
||||
if (device) {
|
||||
if (options.removeAbsent) {
|
||||
remove(device)
|
||||
}
|
||||
else {
|
||||
modify(device, data)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
this.add = function(device) {
|
||||
|
@ -84,7 +89,7 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
|||
|
||||
deviceService.trackAll = function ($scope) {
|
||||
var tracker = new Tracker($scope, {
|
||||
auto: true
|
||||
insertPresent: true
|
||||
})
|
||||
|
||||
oboe('/api/v1/devices')
|
||||
|
@ -95,11 +100,22 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
|||
return tracker
|
||||
}
|
||||
|
||||
deviceService.get = function (serial, $scope) {
|
||||
deviceService.trackGroup = function ($scope) {
|
||||
var tracker = new Tracker($scope, {
|
||||
auto: false
|
||||
removeAbsent: true
|
||||
})
|
||||
|
||||
oboe('/api/v1/group')
|
||||
.node('devices[*]', function (device) {
|
||||
tracker.add(device)
|
||||
})
|
||||
|
||||
return tracker
|
||||
}
|
||||
|
||||
deviceService.get = function (serial, $scope) {
|
||||
var tracker = new Tracker($scope)
|
||||
|
||||
return $http.get('/api/v1/devices/' + serial)
|
||||
.then(function (response) {
|
||||
tracker.add(response.data.device)
|
||||
|
|
|
@ -1,52 +1,9 @@
|
|||
var _ = require('lodash')
|
||||
|
||||
module.exports = function GroupServiceFactory($rootScope, $http, socket, UserService, TransactionService) {
|
||||
module.exports = function GroupServiceFactory(socket, UserService, TransactionService) {
|
||||
var groupService = {
|
||||
}
|
||||
|
||||
groupService.group = (function () {
|
||||
var groupPromise = $http.get('/api/v1/group')
|
||||
.then(function (response) {
|
||||
return response.data.group
|
||||
})
|
||||
return function () {
|
||||
return groupPromise
|
||||
}
|
||||
})()
|
||||
|
||||
UserService.user().then(function (user) {
|
||||
function ownerFilter(listener) {
|
||||
return function (data) {
|
||||
if (data.owner.email === user.email) {
|
||||
listener()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
socket.on('group.join', ownerFilter(function (data) {
|
||||
groupService.group().then(function (group) {
|
||||
group.members.push(data.serial)
|
||||
console.log('group.join', data)
|
||||
$rootScope.$digest()
|
||||
})
|
||||
}))
|
||||
|
||||
socket.on('group.leave', ownerFilter(function (data) {
|
||||
groupService.group().then(function (group) {
|
||||
_.pull(group.members, data.serial)
|
||||
console.log('group.leave', data)
|
||||
$rootScope.$digest()
|
||||
})
|
||||
}))
|
||||
|
||||
socket.on('device.absent', /* unfiltered */ function (data) {
|
||||
groupService.group().then(function (group) {
|
||||
_.pull(group.members, data.serial)
|
||||
$rootScope.$digest()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
groupService.invite = function (device) {
|
||||
return UserService.user().then(function (user) {
|
||||
var tx = TransactionService.create([device])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue