Skip to content

Commit

Permalink
improve types
Browse files Browse the repository at this point in the history
  • Loading branch information
OlivierZal committed Apr 16, 2024
1 parent 0c77e4c commit 938b86f
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
14 changes: 9 additions & 5 deletions drivers/nuos/device.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {
Capabilities,
CapabilityOptionsEntries,
DeviceDetails,
ManifestDriver,
PostDataCapabilities,
SetCapabilities,
SettingCapabilities,
Expand Down Expand Up @@ -368,9 +369,8 @@ class NuosDevice extends Device {
}

async #handleCapabilities(): Promise<void> {
const requiredCapabilities =
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
this.driver.manifest.capabilities as string[]
const requiredCapabilities = (this.driver.manifest as ManifestDriver)
.capabilities as string[]
await requiredCapabilities.reduce<Promise<void>>(
async (acc, capability) => {
await acc
Expand Down Expand Up @@ -452,8 +452,12 @@ class NuosDevice extends Device {
}

#registerCapabilityListeners<K extends keyof SetCapabilities>(): void {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
;(this.driver.manifest.capabilities as K[]).forEach((capability) => {
;(
(this.driver.manifest as ManifestDriver).capabilities.filter(
(capability) =>
!capability.startsWith('measure') && !capability.startsWith('meter'),
) as K[]
).forEach((capability) => {
this.registerCapabilityListener(
capability,
(value: SetCapabilities[K]) => {
Expand Down
10 changes: 4 additions & 6 deletions drivers/nuos/driver.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Capabilities, DeviceDetails, FlowArgs } from '../../types'
import type { DeviceDetails, FlowArgs, ManifestDriver } from '../../types'
import { type LoginCredentials, WheType } from '../../ariston/types'
import type AristonApp from '../../app'
import { Driver } from 'homey'
Expand All @@ -9,11 +9,9 @@ export = class NuosDriver extends Driver {

readonly #deviceType = WheType.nuos

readonly #onoffCapabilities =
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
(this.manifest.capabilities as (keyof Capabilities)[]).filter(
(capability) => capability.startsWith('onoff.'),
)
readonly #onoffCapabilities = (
this.manifest as ManifestDriver
).capabilities.filter((capability) => capability.startsWith('onoff.'))

public async onInit(): Promise<void> {
this.#registerRunListeners()
Expand Down
4 changes: 4 additions & 0 deletions types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,7 @@ export interface FlowArgs {
readonly onoff: boolean
readonly operation_mode: keyof typeof OperationMode
}

export type ManifestDriver = object & {
readonly capabilities: readonly (keyof Capabilities)[]
}

0 comments on commit 938b86f

Please sign in to comment.