mirror of
https://github.com/tsightler/ring-mqtt.git
synced 2025-10-28 19:01:58 +08:00
Fix token app
This commit is contained in:
10
lib/ring.js
10
lib/ring.js
@@ -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))
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
18
ring-mqtt.js
18
ring-mqtt.js
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user