1
0
Fork 0
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:
Simo Kinnunen 2014-03-19 16:45:30 +09:00
parent efed9aefce
commit 2555168345
4 changed files with 31 additions and 56 deletions

View file

@ -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) {

View file

@ -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
}
}) })
}) })
}) })

View file

@ -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,7 +70,12 @@ 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) {
modify(device, data) if (options.removeAbsent) {
remove(device)
}
else {
modify(device, data)
}
} }
}) })
@ -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)

View file

@ -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])