Invite/kick now uses transactions so that you can know whether the device actually joined or not. It's a bit messy right now, should introduce some sugar to make it cleaner.

This commit is contained in:
Simo Kinnunen
2014-02-26 19:03:11 +09:00
parent b177d198b3
commit be9d1c9579
3 changed files with 116 additions and 37 deletions

View File

@@ -1,6 +1,6 @@
var _ = require('lodash')
module.exports = function GroupServiceFactory($rootScope, $http, socket, UserService) {
module.exports = function GroupServiceFactory($rootScope, $http, socket, UserService, TransactionService) {
var groupService = {
}
@@ -47,17 +47,35 @@ module.exports = function GroupServiceFactory($rootScope, $http, socket, UserSer
})
})
groupService.invite = function (requirements) {
UserService.user().then(function (user) {
socket.emit('group.invite', requirements)
groupService.invite = function (device) {
return UserService.user().then(function (user) {
var tx = TransactionService.create([device])
socket.emit('group.invite', device.channel, tx.channel, {
serial: {
value: device.serial
, match: 'exact'
}
})
return tx.promise.then(function(results) {
return results[0].success
})
})
}
groupService.kick = function (requirements) {
UserService.user().then(function (user) {
socket.emit('group.kick', requirements)
groupService.kick = function (device) {
return UserService.user().then(function (user) {
var tx = TransactionService.create([device])
socket.emit('group.kick', device.channel, tx.channel, {
serial: {
value: device.serial
, match: 'exact'
}
})
return tx.promise.then(function(results) {
return results[0].success
})
})
}
return groupService
}
}