mirror of
https://github.com/openstf/stf
synced 2025-10-04 10:19:30 +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))
|
return db.run(r.table('users').get(email))
|
||||||
}
|
}
|
||||||
|
|
||||||
dbapi.loadGroupMembers = function(email) {
|
dbapi.loadGroup = function(email) {
|
||||||
return db.run(r.table('devices').getAll(email, {
|
return db.run(r.table('devices').getAll(email, {
|
||||||
index: 'ownerEmail'
|
index: 'ownerEmail'
|
||||||
})('serial'))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
dbapi.saveDeviceLog = function(serial, entry) {
|
dbapi.saveDeviceLog = function(serial, entry) {
|
||||||
|
|
|
@ -114,15 +114,17 @@ module.exports = function(options) {
|
||||||
})
|
})
|
||||||
|
|
||||||
app.get('/api/v1/group', function(req, res) {
|
app.get('/api/v1/group', function(req, res) {
|
||||||
dbapi.loadGroupMembers(req.user.email)
|
dbapi.loadGroup(req.user.email)
|
||||||
.then(function(cursor) {
|
.then(function(cursor) {
|
||||||
return Promise.promisify(cursor.toArray, cursor)()
|
return Promise.promisify(cursor.toArray, cursor)()
|
||||||
.then(function(list) {
|
.then(function(list) {
|
||||||
|
list.forEach(function(device) {
|
||||||
|
datautil.applyData(device)
|
||||||
|
datautil.applyOwner(device, req.user)
|
||||||
|
})
|
||||||
res.json({
|
res.json({
|
||||||
success: true
|
success: true
|
||||||
, group: {
|
, devices: list
|
||||||
members: list
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -55,7 +55,7 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
||||||
if (device) {
|
if (device) {
|
||||||
modify(device, data)
|
modify(device, data)
|
||||||
}
|
}
|
||||||
else if (options.auto) {
|
else if (options.insertPresent) {
|
||||||
insert(data)
|
insert(data)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -70,8 +70,13 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
||||||
scopedSocket.on('device.change', function (data) {
|
scopedSocket.on('device.change', function (data) {
|
||||||
var device = get(data)
|
var device = get(data)
|
||||||
if (device) {
|
if (device) {
|
||||||
|
if (options.removeAbsent) {
|
||||||
|
remove(device)
|
||||||
|
}
|
||||||
|
else {
|
||||||
modify(device, data)
|
modify(device, data)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
this.add = function(device) {
|
this.add = function(device) {
|
||||||
|
@ -84,7 +89,7 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
||||||
|
|
||||||
deviceService.trackAll = function ($scope) {
|
deviceService.trackAll = function ($scope) {
|
||||||
var tracker = new Tracker($scope, {
|
var tracker = new Tracker($scope, {
|
||||||
auto: true
|
insertPresent: true
|
||||||
})
|
})
|
||||||
|
|
||||||
oboe('/api/v1/devices')
|
oboe('/api/v1/devices')
|
||||||
|
@ -95,11 +100,22 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
|
||||||
return tracker
|
return tracker
|
||||||
}
|
}
|
||||||
|
|
||||||
deviceService.get = function (serial, $scope) {
|
deviceService.trackGroup = function ($scope) {
|
||||||
var tracker = new Tracker($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)
|
return $http.get('/api/v1/devices/' + serial)
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
tracker.add(response.data.device)
|
tracker.add(response.data.device)
|
||||||
|
|
|
@ -1,52 +1,9 @@
|
||||||
var _ = require('lodash')
|
var _ = require('lodash')
|
||||||
|
|
||||||
module.exports = function GroupServiceFactory($rootScope, $http, socket, UserService, TransactionService) {
|
module.exports = function GroupServiceFactory(socket, UserService, TransactionService) {
|
||||||
var groupService = {
|
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) {
|
groupService.invite = function (device) {
|
||||||
return UserService.user().then(function (user) {
|
return UserService.user().then(function (user) {
|
||||||
var tx = TransactionService.create([device])
|
var tx = TransactionService.create([device])
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue