37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import {
|
|
HassEntity,
|
|
HassEntityAttributeBase,
|
|
HassEntityBase
|
|
} from 'home-assistant-js-websocket';
|
|
|
|
export const UPDATE_SUPPORT_INSTALL = 1;
|
|
export const UPDATE_SUPPORT_SPECIFIC_VERSION = 2;
|
|
export const UPDATE_SUPPORT_PROGRESS = 4;
|
|
export const UPDATE_SUPPORT_BACKUP = 8;
|
|
export const UPDATE_SUPPORT_RELEASE_NOTES = 16;
|
|
|
|
interface UpdateEntityAttributes extends HassEntityAttributeBase {
|
|
auto_update: boolean | null;
|
|
installed_version: string | null;
|
|
in_progress: boolean | number;
|
|
latest_version: string | null;
|
|
release_summary: string | null;
|
|
release_url: string | null;
|
|
skipped_version: string | null;
|
|
title: string | null;
|
|
}
|
|
|
|
export interface UpdateEntity extends HassEntityBase {
|
|
attributes: UpdateEntityAttributes;
|
|
}
|
|
|
|
export const supportsFeature = (stateObj: HassEntity, feature: number): boolean =>
|
|
((stateObj.attributes.supported_features ?? 0) & feature) !== 0;
|
|
|
|
export const updateUsesProgress = (entity: UpdateEntity): boolean =>
|
|
supportsFeature(entity, UPDATE_SUPPORT_PROGRESS) &&
|
|
typeof entity.attributes.in_progress === 'number';
|
|
|
|
export const updateIsInstalling = (entity: UpdateEntity): boolean =>
|
|
updateUsesProgress(entity) || !!entity.attributes.in_progress;
|