mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-01 13:37:47 +00:00
init
This commit is contained in:
parent
8bfc8ece9d
commit
42023ed4a5
@ -25,6 +25,9 @@ class HassioAddons extends LitElement {
|
|||||||
@property({ attribute: false }) public supervisor!: Supervisor;
|
@property({ attribute: false }) public supervisor!: Supervisor;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
|
this.supervisor
|
||||||
|
?.callApi({ endpoint: "/supervisor/ping", rest: false })
|
||||||
|
.then((result) => console.log("result", result));
|
||||||
return html`
|
return html`
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1>Add-ons</h1>
|
<h1>Add-ons</h1>
|
||||||
|
@ -7,7 +7,10 @@ import {
|
|||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { atLeastVersion } from "../../src/common/config/version";
|
import { atLeastVersion } from "../../src/common/config/version";
|
||||||
import { fetchHassioAddonsInfo } from "../../src/data/hassio/addon";
|
import { fetchHassioAddonsInfo } from "../../src/data/hassio/addon";
|
||||||
import { HassioResponse } from "../../src/data/hassio/common";
|
import {
|
||||||
|
hassioApiResultExtractor,
|
||||||
|
HassioResponse,
|
||||||
|
} from "../../src/data/hassio/common";
|
||||||
import {
|
import {
|
||||||
fetchHassioHassOsInfo,
|
fetchHassioHassOsInfo,
|
||||||
fetchHassioHostInfo,
|
fetchHassioHostInfo,
|
||||||
@ -23,6 +26,9 @@ import {
|
|||||||
getSupervisorEventCollection,
|
getSupervisorEventCollection,
|
||||||
subscribeSupervisorEvents,
|
subscribeSupervisorEvents,
|
||||||
Supervisor,
|
Supervisor,
|
||||||
|
supervisorApiRequest,
|
||||||
|
SupervisorAPIRequestParams,
|
||||||
|
supervisorApiWsRequest,
|
||||||
SupervisorObject,
|
SupervisorObject,
|
||||||
supervisorStore,
|
supervisorStore,
|
||||||
} from "../../src/data/supervisor/supervisor";
|
} from "../../src/data/supervisor/supervisor";
|
||||||
@ -56,7 +62,11 @@ export class SupervisorBaseElement extends urlSyncMixin(
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected _updateSupervisor(obj: Partial<Supervisor>): void {
|
protected _updateSupervisor(obj: Partial<Supervisor>): void {
|
||||||
this.supervisor = { ...this.supervisor!, ...obj };
|
this.supervisor = {
|
||||||
|
...this.supervisor!,
|
||||||
|
...obj,
|
||||||
|
callApi: (params) => this._callAPI(params),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected firstUpdated(changedProps: PropertyValues): void {
|
protected firstUpdated(changedProps: PropertyValues): void {
|
||||||
@ -142,10 +152,48 @@ export class SupervisorBaseElement extends urlSyncMixin(
|
|||||||
os,
|
os,
|
||||||
network,
|
network,
|
||||||
resolution,
|
resolution,
|
||||||
|
callApi: (params) => this._callAPI(params),
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addEventListener("supervisor-update", (ev) =>
|
this.addEventListener("supervisor-update", (ev) =>
|
||||||
this._updateSupervisor(ev.detail)
|
this._updateSupervisor(ev.detail)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async _callAPI<T>(params: SupervisorAPIRequestParams): Promise<T> {
|
||||||
|
const hasHass = this.hass !== undefined;
|
||||||
|
const canUseWS =
|
||||||
|
!params.rest &&
|
||||||
|
hasHass &&
|
||||||
|
atLeastVersion(this.hass.config.version, 2021, 2, 4);
|
||||||
|
|
||||||
|
if (canUseWS) {
|
||||||
|
const connection = hasHass ? this.hass.connection : params.connection;
|
||||||
|
if (connection === undefined) {
|
||||||
|
throw Error(`No connection found, aborting API call - ${params}`);
|
||||||
|
}
|
||||||
|
const requestParams: supervisorApiRequest = {
|
||||||
|
...params,
|
||||||
|
};
|
||||||
|
delete requestParams.rest;
|
||||||
|
delete requestParams.connection;
|
||||||
|
return await supervisorApiWsRequest<T>(connection, requestParams);
|
||||||
|
} else {
|
||||||
|
const method =
|
||||||
|
params.method === "post"
|
||||||
|
? "POST"
|
||||||
|
: params.method === "put"
|
||||||
|
? "PUT"
|
||||||
|
: params.method === "delete"
|
||||||
|
? "DELETE"
|
||||||
|
: "GET";
|
||||||
|
return hassioApiResultExtractor<T>(
|
||||||
|
await this.hass.callApi<HassioResponse<T>>(
|
||||||
|
method,
|
||||||
|
`hassio${params.endpoint}`,
|
||||||
|
params.data
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,6 @@ export type SupervisorObject =
|
|||||||
interface supervisorApiRequest {
|
interface supervisorApiRequest {
|
||||||
endpoint: string;
|
endpoint: string;
|
||||||
method?: "get" | "post" | "delete" | "put";
|
method?: "get" | "post" | "delete" | "put";
|
||||||
force_rest?: boolean;
|
|
||||||
data?: any;
|
data?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,6 +51,14 @@ export interface SupervisorEvent {
|
|||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface SupervisorAPIRequestParams {
|
||||||
|
connection?: any;
|
||||||
|
rest?: boolean;
|
||||||
|
data?: any;
|
||||||
|
endpoint: string;
|
||||||
|
method?: "get" | "post" | "delete" | "put";
|
||||||
|
}
|
||||||
|
|
||||||
export interface Supervisor {
|
export interface Supervisor {
|
||||||
host: HassioHostInfo;
|
host: HassioHostInfo;
|
||||||
supervisor: HassioSupervisorInfo;
|
supervisor: HassioSupervisorInfo;
|
||||||
@ -61,6 +68,7 @@ export interface Supervisor {
|
|||||||
resolution: HassioResolution;
|
resolution: HassioResolution;
|
||||||
os: HassioHassOSInfo;
|
os: HassioHassOSInfo;
|
||||||
addon: HassioAddonsInfo;
|
addon: HassioAddonsInfo;
|
||||||
|
callApi<T>(params: SupervisorAPIRequestParams): Promise<T>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const supervisorApiWsRequest = <T>(
|
export const supervisorApiWsRequest = <T>(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user