mirror of
https://github.com/tsightler/ring-mqtt.git
synced 2025-10-28 11:01:38 +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) {
|
async init(state, generatedToken) {
|
||||||
|
|
||||||
const ringAuth = {
|
const ringAuth = {
|
||||||
refreshToken: generatedToken ? generatedToken : state.ring_token,
|
refreshToken: generatedToken ? generatedToken : state.data.ring_token,
|
||||||
systemId: state.systemId,
|
systemId: state.data.systemId,
|
||||||
controlCenterDisplayName: (process.env.RUNMODE === 'addon') ? 'ring-mqtt-addon' : 'ring-mqtt',
|
controlCenterDisplayName: (process.env.RUNMODE === 'addon') ? 'ring-mqtt-addon' : 'ring-mqtt',
|
||||||
...utils.config.enable_cameras ? { cameraStatusPollingSeconds: 20, cameraDingsPollingSeconds: 2 } : {},
|
...utils.config.enable_cameras ? { cameraStatusPollingSeconds: 20, cameraDingsPollingSeconds: 2 } : {},
|
||||||
...utils.config.enable_modes ? { locationModePollingSeconds: 20 } : {},
|
...utils.config.enable_modes ? { locationModePollingSeconds: 20 } : {},
|
||||||
@@ -71,6 +70,11 @@ class RingMqtt {
|
|||||||
await this.client.getProfile()
|
await this.client.getProfile()
|
||||||
utils.event.emit('ringState', 'connected')
|
utils.event.emit('ringState', 'connected')
|
||||||
debug(`Successfully established connection to Ring API using ${generatedToken ? 'generated' : 'saved'} token`)
|
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) {
|
} catch(error) {
|
||||||
this.client = false
|
this.client = false
|
||||||
debug(colors.brightYellow(error.message))
|
debug(colors.brightYellow(error.message))
|
||||||
|
|||||||
@@ -17,6 +17,10 @@ class TokenApp {
|
|||||||
utils.event.on('ringState', async (state) => {
|
utils.event.on('ringState', async (state) => {
|
||||||
if (state === 'connected') {
|
if (state === 'connected') {
|
||||||
this.ringConnected = true
|
this.ringConnected = true
|
||||||
|
// Only the addon leaves the web UI running all the time
|
||||||
|
if (process.env.RUNMODE !== 'addon') {
|
||||||
|
this.stop()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.ringConnected = false
|
this.ringConnected = false
|
||||||
}
|
}
|
||||||
|
|||||||
18
ring-mqtt.js
18
ring-mqtt.js
@@ -68,26 +68,16 @@ const main = async(generatedToken) => {
|
|||||||
await utils.sleep(10)
|
await utils.sleep(10)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await ring.init(state.data, generatedToken)) {
|
if (!await ring.init(state, generatedToken)) {
|
||||||
// Subscribe to token update events and save new tokens to state file
|
debug(colors.brightRed('Failed to connect to Ring API using saved token, generate a new token using the Web UI'))
|
||||||
ring.client.onRefreshTokenUpdated.subscribe(({ newRefreshToken, oldRefreshToken }) => {
|
debug(colors.brightRed('or wait 60 seconds to automatically retry authentication using the existing token'))
|
||||||
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.'))
|
|
||||||
tokenApp.start()
|
tokenApp.start()
|
||||||
await utils.sleep(60)
|
await utils.sleep(60)
|
||||||
main()
|
main()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// If a refresh token was not found, start Web UI for token generator
|
// 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()
|
tokenApp.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user