Skip to content

Commit

Permalink
Automatically subscribe for dings on intercoms
Browse files Browse the repository at this point in the history
  • Loading branch information
dgreif committed Dec 12, 2022
1 parent 503e34f commit 836c580
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
6 changes: 6 additions & 0 deletions .changeset/wet-turtles-remain.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'homebridge-ring': minor
'ring-client-api': minor
---

Automatically subscribe for ding events on intercoms
30 changes: 29 additions & 1 deletion packages/ring-client-api/ring-intercom.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { IntercomHandsetAudioData } from './ring-types'
import { commandsApi, RingRestClient } from './rest-client'
import { clientApi, commandsApi, RingRestClient } from './rest-client'
import { BehaviorSubject, Subject } from 'rxjs'
import { distinctUntilChanged, map } from 'rxjs/operators'
import { getBatteryLevel } from './ring-camera'
import { logError } from './util'

export class RingIntercom {
id
Expand All @@ -25,6 +26,15 @@ export class RingIntercom {
map((data) => getBatteryLevel(data)),
distinctUntilChanged()
)

if (!initialData.subscribed) {
this.subscribeToDingEvents().catch((e) => {
logError(
'Failed to subscribe ' + initialData.description + ' to ding events'
)
logError(e)
})
}
}

updateData(update: IntercomHandsetAudioData) {
Expand Down Expand Up @@ -68,4 +78,22 @@ export class RingIntercom {
},
})
}

private doorbotUrl(path = '') {
return clientApi(`doorbots/${this.id}/${path}`)
}

subscribeToDingEvents() {
return this.restClient.request({
method: 'POST',
url: this.doorbotUrl('subscribe'),
})
}

unsubscribeFromDingEvents() {
return this.restClient.request({
method: 'POST',
url: this.doorbotUrl('unsubscribe'),
})
}
}

0 comments on commit 836c580

Please # to comment.