mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-18 16:13:24 +02:00
59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
var Promise = require('bluebird')
|
|
|
|
module.exports = function GroupServiceFactory(
|
|
socket
|
|
, TransactionService
|
|
, TransactionError
|
|
) {
|
|
var groupService = {
|
|
}
|
|
|
|
groupService.invite = function (device) {
|
|
if (!device.usable) {
|
|
return Promise.reject(new Error('Device is not usable'))
|
|
}
|
|
|
|
var tx = TransactionService.create(device)
|
|
socket.emit('group.invite', device.channel, tx.channel, {
|
|
requirements: {
|
|
serial: {
|
|
value: device.serial
|
|
, match: 'exact'
|
|
}
|
|
}
|
|
})
|
|
return tx.promise
|
|
.then(function(result) {
|
|
return result.device
|
|
})
|
|
.catch(TransactionError, function() {
|
|
throw new Error('Device refused to join the group')
|
|
})
|
|
}
|
|
|
|
groupService.kick = function (device, force) {
|
|
if (!force && !device.usable) {
|
|
return Promise.reject(new Error('Device is not usable'))
|
|
}
|
|
|
|
var tx = TransactionService.create(device)
|
|
socket.emit('group.kick', device.channel, tx.channel, {
|
|
requirements: {
|
|
serial: {
|
|
value: device.serial
|
|
, match: 'exact'
|
|
}
|
|
}
|
|
})
|
|
return tx.promise
|
|
.then(function(result) {
|
|
return result.device
|
|
})
|
|
.catch(TransactionError, function() {
|
|
throw new Error('Device refused to join the group')
|
|
})
|
|
}
|
|
|
|
return groupService
|
|
}
|