14 lines
952 B
TypeScript
14 lines
952 B
TypeScript
import type { HomeAssistantDiscoveredDevice } from '../services/health'
|
|
import { useDeviceControlContext } from './controlContext'
|
|
|
|
/** 专属详情必须检查当前设备的参数实体,不能用在线设备数或默认值冒充读数。 */
|
|
export function useDeviceCardState(device: () => HomeAssistantDiscoveredDevice) {
|
|
const context = useDeviceControlContext()
|
|
const available = (parameter: string) => context.isParameterAvailable(parameter, device())
|
|
const readable = (parameter: string) => context.hasParameterReading(parameter, device())
|
|
const display = (parameter: string, value: unknown, suffix = '') => readable(parameter) ? `${value}${suffix}` : '--'
|
|
const powerAvailable = () => context.isDeviceControlAvailable(device())
|
|
const powerLabel = (on: string, off: string) => powerAvailable() ? context.isDeviceTurnedOn(device()) ? on : off : '暂不可用'
|
|
return { available, readable, display, powerAvailable, powerLabel }
|
|
}
|