Bugfix: clear working state after timeout

This commit is contained in:
Douglas Barone 2021-11-04 10:31:42 -04:00
parent 7cbb561030
commit 77f3a85a57

View File

@ -147,58 +147,54 @@ async function updateDB(onlineDevices) {
function updateDevicesInfo() { function updateDevicesInfo() {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
if (working) reject('A última atualização ainda não terminou') if (working) return reject('A última atualização ainda não terminou')
else {
working = true
const updateTimeout = setTimeout(() => { working = true
reject('A função atingiu seu tempo limite.')
}, TIMEOUT_IN_MILLISECONDS)
try { const updateTimeout = setTimeout(() => {
const startTime = performance.now() reject('A função atingiu seu tempo limite.')
working = false
}, TIMEOUT_IN_MILLISECONDS)
const onlineDevices = await getOnlineDevices() try {
const startTime = performance.now()
await updateDevicesStatus() const onlineDevices = await getOnlineDevices()
await updateDevicesStatus()
await updateDB(onlineDevices)
await updateDB(onlineDevices) const endTime = performance.now()
const endTime = performance.now() onlineDevices.length > 0
? resolve(
`${onlineDevices.length} atualizados em ${Math.floor(
endTime - startTime
)}ms`
)
: reject('Não há dispositivos conectados no momento.')
onlineDevices.length > 0 pubsub.publish(USER_PRESENCE_UPDATED, {
? resolve( userPresenceUpdated: onlineDevices.length
`${onlineDevices.length} atualizados em ${Math.floor( })
endTime - startTime
)}ms`
)
: reject('Não há dispositivos conectados no momento.')
pubsub.publish(USER_PRESENCE_UPDATED, { logSuccess({
userPresenceUpdated: onlineDevices.length tags: ['wifiDevices'],
}) message: `Foram atualizados ${
onlineDevices.length
} dispositivos Wi-Fi em ${((endTime - startTime) / 1000).toFixed(2)}s.`,
data: onlineDevices
})
} catch (e) {
logError({
tags: ['wifiDevices'],
message: `Erro atualizando dispositivos Wi-Fi: ${e.message}`,
data: e
})
logSuccess({ reject('Não foi possível atualizar as informações dos dispositivos.')
tags: ['wifiDevices'], } finally {
message: `Foram atualizados ${ working = false
onlineDevices.length clearTimeout(updateTimeout)
} dispositivos Wi-Fi em ${((endTime - startTime) / 1000).toFixed(
2
)}s.`,
data: onlineDevices
})
} catch (e) {
logError({
tags: ['wifiDevices'],
message: `Erro atualizando dispositivos Wi-Fi: ${e.message}`,
data: e
})
reject('Não foi possível atualizar as informações dos dispositivos.')
} finally {
working = false
clearTimeout(updateTimeout)
}
} }
}) })
} }