Fix token app

This commit is contained in:
tsightler
2022-03-04 21:02:03 -05:00
parent be1bafeb55
commit f5d4ab5a34
3 changed files with 15 additions and 17 deletions

View File

@@ -55,10 +55,9 @@ class RingMqtt {
}
async init(state, generatedToken) {
const ringAuth = {
refreshToken: generatedToken ? generatedToken : state.ring_token,
systemId: state.systemId,
refreshToken: generatedToken ? generatedToken : state.data.ring_token,
systemId: state.data.systemId,
controlCenterDisplayName: (process.env.RUNMODE === 'addon') ? 'ring-mqtt-addon' : 'ring-mqtt',
...utils.config.enable_cameras ? { cameraStatusPollingSeconds: 20, cameraDingsPollingSeconds: 2 } : {},
...utils.config.enable_modes ? { locationModePollingSeconds: 20 } : {},
@@ -71,6 +70,11 @@ class RingMqtt {
await this.client.getProfile()
utils.event.emit('ringState', 'connected')
debug(`Successfully established connection to Ring API using ${generatedToken ? 'generated' : 'saved'} token`)
// Subscribe to token update events and save new tokens to state file
this.client.onRefreshTokenUpdated.subscribe(({ newRefreshToken, oldRefreshToken }) => {
state.updateToken(newRefreshToken, oldRefreshToken)
})
} catch(error) {
this.client = false
debug(colors.brightYellow(error.message))

View File

@@ -17,6 +17,10 @@ class TokenApp {
utils.event.on('ringState', async (state) => {
if (state === 'connected') {
this.ringConnected = true
// Only the addon leaves the web UI running all the time
if (process.env.RUNMODE !== 'addon') {
this.stop()
}
} else {
this.ringConnected = false
}

View File

@@ -68,26 +68,16 @@ const main = async(generatedToken) => {
await utils.sleep(10)
}
if (await ring.init(state.data, generatedToken)) {
// Subscribe to token update events and save new tokens to state file
ring.client.onRefreshTokenUpdated.subscribe(({ newRefreshToken, oldRefreshToken }) => {
state.updateToken(newRefreshToken, oldRefreshToken)
})
// Only leave the web UI active if this is the addon
if (process.env.RUNMODE === 'addon') {
tokenApp.stop()
}
} else {
debug(colors.brightRed('Failed to connect to Ring API using saved token, generate a new token using the Web UI.'))
debug(colors.brightRed('Authentication will be automatically retried in 60 seconds using the existing token.'))
if (!await ring.init(state, generatedToken)) {
debug(colors.brightRed('Failed to connect to Ring API using saved token, generate a new token using the Web UI'))
debug(colors.brightRed('or wait 60 seconds to automatically retry authentication using the existing token'))
tokenApp.start()
await utils.sleep(60)
main()
}
} else {
// If a refresh token was not found, start Web UI for token generator
debug(colors.brightRed('No refresh token was found in state file, generate a token using the Web UI.'))
debug(colors.brightRed('No refresh token was found in state file, generate a token using the Web UI'))
tokenApp.start()
}
}