From 98b47e75056a2dfd2c4ecef6a27ea20eedfe77c4 Mon Sep 17 00:00:00 2001 From: "e.khalilov" Date: Fri, 29 Aug 2025 14:25:34 +0300 Subject: [PATCH] add await in processor & minor fixes --- lib/units/api/controllers/autotests.js | 3 +- lib/units/api/controllers/groups.js | 5 +- lib/units/device/plugins/group.js | 13 +- lib/units/processor/index.js | 157 ++++++++++++------------- 4 files changed, 85 insertions(+), 93 deletions(-) diff --git a/lib/units/api/controllers/autotests.js b/lib/units/api/controllers/autotests.js index d3be3e726..420b74717 100644 --- a/lib/units/api/controllers/autotests.js +++ b/lib/units/api/controllers/autotests.js @@ -25,8 +25,7 @@ function captureDevices(req, res) { const privilege = req.user.privilege const username = req.user.name const runUrl = req.query.runUrl - let timeout = req.query.timeout - timeout = Number(timeout) * 1000 // because Date use milliseconds + const timeout = Number(req.query.timeout) * 1000 // because Date use milliseconds const now = Date.now() const start = new Date(now) const stop = new Date(now + timeout) diff --git a/lib/units/api/controllers/groups.js b/lib/units/api/controllers/groups.js index 4889eae39..76f12c542 100644 --- a/lib/units/api/controllers/groups.js +++ b/lib/units/api/controllers/groups.js @@ -265,10 +265,7 @@ function addGroupDevices(req, res) { } if (amount) { return dbapi.loadBookableDevicesWithFiltersLock(req.user.groups.subscribed, abi, model, type, sdk, version, function(devices) { - let serials = [] - if (devices) { - serials = devices.map(device => device.serial) - } + const serials = devices?.map(device => device.serial) || [] if ((serials.length > 0 && !needAmount) || (needAmount && serials.length === amount)) { return _addGroupDevices(group, serials) } diff --git a/lib/units/device/plugins/group.js b/lib/units/device/plugins/group.js index 1f6c1d849..1affd3af2 100644 --- a/lib/units/device/plugins/group.js +++ b/lib/units/device/plugins/group.js @@ -25,11 +25,11 @@ export default syrup.serial() .dependency(sub) .dependency(channels) .define(async function(options, solo, ident, /** @type {any} */ service, router, push, sub, channels) { - var log = logger.createLogger('device:plugins:group') - var currentGroup = null + const log = logger.createLogger('device:plugins:group') + let currentGroup = null /** @type {any} */ - var plugin = new events.EventEmitter() + const plugin = new events.EventEmitter() await db.connect() @@ -48,10 +48,9 @@ export default syrup.serial() } log.info('Update timeout for ', apiutil.QUARTER_MINUTES) channels.updateTimeout(currentGroup.group, apiutil.QUARTER_MINUTES) - let newTimeout = channels.getTimeout(currentGroup.group) - dbapi.enhanceStatusChangedAt(options.serial, newTimeout).then(() => { - return currentGroup - }) + + const newTimeout = channels.getTimeout(currentGroup.group) + dbapi.enhanceStatusChangedAt(options.serial, newTimeout) }) .catch(grouputil.NoGroupError, function() { currentGroup = newGroup diff --git a/lib/units/processor/index.js b/lib/units/processor/index.js index 48074a83e..b7191a983 100644 --- a/lib/units/processor/index.js +++ b/lib/units/processor/index.js @@ -83,25 +83,24 @@ export default db.ensureConnectivity(async function(options) { .on(wire.TemporarilyUnavailableMessage, defaultWireHandler) .on(wire.UpdateRemoteConnectUrl, defaultWireHandler) .on(wire.InstalledApplications, defaultWireHandler) - .on(wire.DeviceIntroductionMessage, (channel, message, data) => { - dbapi.saveDeviceInitialState(message.serial, message).then(function() { - devDealer.send([ - message.provider.channel, - wireutil.envelope(new wire.DeviceRegisteredMessage(message.serial)) - ]) - appDealer.send([channel, data]) - }) + .on(wire.DeviceIntroductionMessage, async(channel, message, data) => { + await dbapi.saveDeviceInitialState(message.serial, message) + devDealer.send([ + message.provider.channel, + wireutil.envelope(new wire.DeviceRegisteredMessage(message.serial)) + ]) + appDealer.send([channel, data]) }) .on(wire.InitializeIosDeviceState, (channel, message, data) => { dbapi.initializeIosDeviceState(options.publicIp, message) }) - .on(wire.DevicePresentMessage, (channel, message, data) => { - dbapi.setDevicePresent(message.serial) + .on(wire.DevicePresentMessage, async(channel, message, data) => { + await dbapi.setDevicePresent(message.serial) appDealer.send([channel, data]) }) - .on(wire.DeviceAbsentMessage, (channel, message, data) => { + .on(wire.DeviceAbsentMessage, async(channel, message, data) => { if (!message.applications) { - dbapi.setDeviceAbsent(message.serial) + await dbapi.setDeviceAbsent(message.serial) appDealer.send([channel, data]) } }) @@ -109,85 +108,83 @@ export default db.ensureConnectivity(async function(options) { dbapi.saveDeviceStatus(message.serial, message.status) appDealer.send([channel, data]) }) - .on(wire.DeviceReadyMessage, (channel, message, data) => { - dbapi.setDeviceReady(message.serial, message.channel).then(function() { - devDealer.send([message.channel, wireutil.envelope(new wire.ProbeMessage())]) - appDealer.send([channel, data]) - }) + .on(wire.DeviceReadyMessage, async(channel, message, data) => { + await dbapi.setDeviceReady(message.serial, message.channel) + devDealer.send([message.channel, wireutil.envelope(new wire.ProbeMessage())]) + appDealer.send([channel, data]) }) - .on(wire.JoinGroupByAdbFingerprintMessage, (channel, message, data) => { - dbapi - .lookupUserByAdbFingerprint(message.fingerprint) - .then(function(user) { - if (user) { - devDealer.send([ - channel, - wireutil.envelope(new wire.AutoGroupMessage(new wire.OwnerMessage(user.email, user.name, user.group), message.fingerprint)) - ]) - } - else if (message.currentGroup) { - appDealer.send([ - message.currentGroup, - wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(message.serial, message.fingerprint, message.comment)) - ]) - } - }) - .catch(function(err) { - log.error('Unable to lookup user by ADB fingerprint "%s"', message.fingerprint, err.stack) - }) + .on(wire.JoinGroupByAdbFingerprintMessage, async(channel, message, data) => { + try { + const user = await dbapi.lookupUserByAdbFingerprint(message.fingerprint) + if (user) { + devDealer.send([ + channel, + wireutil.envelope(new wire.AutoGroupMessage(new wire.OwnerMessage(user.email, user.name, user.group), message.fingerprint)) + ]) + return + } + appDealer.send([ + message.currentGroup, + wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(message.serial, message.fingerprint, message.comment)) + ]) + } + catch (/** @type any */ err) { + log.error('Unable to lookup user by ADB fingerprint "%s"', message.fingerprint, err.stack) + } }) - .on(wire.JoinGroupByVncAuthResponseMessage, (channel, message, data) => { - dbapi - .lookupUserByVncAuthResponse(message.response, message.serial) - .then(function(user) { - if (user) { - devDealer.send([ - channel, - wireutil.envelope(new wire.AutoGroupMessage(new wire.OwnerMessage(user.email, user.name, user.group), message.response)) - ]) - } - else if (message.currentGroup) { - appDealer.send([ - message.currentGroup, - wireutil.envelope(new wire.JoinGroupByVncAuthResponseMessage(message.serial, message.response)) - ]) - } - }) - .catch(function(err) { - log.error('Unable to lookup user by VNC auth response "%s"', message.response, err.stack) - }) + .on(wire.JoinGroupByVncAuthResponseMessage, async(channel, message, data) => { + try { + const user = await dbapi.lookupUserByVncAuthResponse(message.response, message.serial) + if (user) { + devDealer.send([ + channel, + wireutil.envelope(new wire.AutoGroupMessage(new wire.OwnerMessage(user.email, user.name, user.group), message.response)) + ]) + return + } + + appDealer.send([ + message.currentGroup, + wireutil.envelope(new wire.JoinGroupByVncAuthResponseMessage(message.serial, message.response)) + ]) + } + catch (/** @type any */ err) { + log.error('Unable to lookup user by VNC auth response "%s"', message.response, err.stack) + } }) - .on(wire.ConnectStartedMessage, (channel, message, data) => { - dbapi.setDeviceConnectUrl(message.serial, message.url) + .on(wire.ConnectStartedMessage, async(channel, message, data) => { + await dbapi.setDeviceConnectUrl(message.serial, message.url) appDealer.send([channel, data]) }) - .on(wire.ConnectStoppedMessage, (channel, message, data) => { - dbapi.unsetDeviceConnectUrl(message.serial) + .on(wire.ConnectStoppedMessage, async(channel, message, data) => { + await dbapi.unsetDeviceConnectUrl(message.serial) appDealer.send([channel, data]) }) - .on(wire.JoinGroupMessage, (channel, message, data) => { - dbapi.setDeviceOwner(message.serial, message.owner) - if (message.usage) { - dbapi.setDeviceUsage(message.serial, message.usage) - } + .on(wire.JoinGroupMessage, async(channel, message, data) => { + await Promise.all([ + dbapi.setDeviceOwner(message.serial, message.owner), - const deviceUsage = message?.usage ? `device_${message.usage}` : 'device_use' - dbapi.sendEvent(deviceUsage - , {} - , {deviceSerial: message.serial, userEmail: message.owner.email, groupId: message.owner.group} - , Date.now() - ) + message.usage && + dbapi.setDeviceUsage(message.serial, message.usage), + dbapi.sendEvent(`device_${message.usage || 'use'}` + , {} + , {deviceSerial: message.serial, userEmail: message.owner.email, groupId: message.owner.group} + , Date.now() + ) + ]) appDealer.send([channel, data]) }) - .on(wire.LeaveGroupMessage, (channel, message, data) => { - dbapi.unsetDeviceOwner(message.serial) - dbapi.unsetDeviceUsage(message.serial) - dbapi.sendEvent('device_leave' - , {} - , {deviceSerial: message.serial, userEmail: message.owner.email, groupId: message.owner.group} - , Date.now() - ) + .on(wire.LeaveGroupMessage, async(channel, message, data) => { + await Promise.all([ + dbapi.unsetDeviceOwner(message.serial), + dbapi.unsetDeviceUsage(message.serial), + dbapi.sendEvent('device_leave' + , {} + , {deviceSerial: message.serial, userEmail: message.owner.email, groupId: message.owner.group} + , Date.now() + ) + ]) appDealer.send([channel, data]) }) .on(wire.DeviceIdentityMessage, (channel, message, data) => {