mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-31 21:17: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;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
this.supervisor
|
||||
?.callApi({ endpoint: "/supervisor/ping", rest: false })
|
||||
.then((result) => console.log("result", result));
|
||||
return html`
|
||||
<div class="content">
|
||||
<h1>Add-ons</h1>
|
||||
|
@ -7,7 +7,10 @@ import {
|
||||
} from "lit-element";
|
||||
import { atLeastVersion } from "../../src/common/config/version";
|
||||
import { fetchHassioAddonsInfo } from "../../src/data/hassio/addon";
|
||||
import { HassioResponse } from "../../src/data/hassio/common";
|
||||
import {
|
||||
hassioApiResultExtractor,
|
||||
HassioResponse,
|
||||
} from "../../src/data/hassio/common";
|
||||
import {
|
||||
fetchHassioHassOsInfo,
|
||||
fetchHassioHostInfo,
|
||||
@ -23,6 +26,9 @@ import {
|
||||
getSupervisorEventCollection,
|
||||
subscribeSupervisorEvents,
|
||||
Supervisor,
|
||||
supervisorApiRequest,
|
||||
SupervisorAPIRequestParams,
|
||||
supervisorApiWsRequest,
|
||||
SupervisorObject,
|
||||
supervisorStore,
|
||||
} from "../../src/data/supervisor/supervisor";
|
||||
@ -56,7 +62,11 @@ export class SupervisorBaseElement extends urlSyncMixin(
|
||||
}
|
||||
|
||||
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 {
|
||||
@ -142,10 +152,48 @@ export class SupervisorBaseElement extends urlSyncMixin(
|
||||
os,
|
||||
network,
|
||||
resolution,
|
||||
callApi: (params) => this._callAPI(params),
|
||||
};
|
||||
|
||||
this.addEventListener("supervisor-update", (ev) =>
|
||||
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 {
|
||||
endpoint: string;
|
||||
method?: "get" | "post" | "delete" | "put";
|
||||
force_rest?: boolean;
|
||||
data?: any;
|
||||
}
|
||||
|
||||
@ -52,6 +51,14 @@ export interface SupervisorEvent {
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
export interface SupervisorAPIRequestParams {
|
||||
connection?: any;
|
||||
rest?: boolean;
|
||||
data?: any;
|
||||
endpoint: string;
|
||||
method?: "get" | "post" | "delete" | "put";
|
||||
}
|
||||
|
||||
export interface Supervisor {
|
||||
host: HassioHostInfo;
|
||||
supervisor: HassioSupervisorInfo;
|
||||
@ -61,6 +68,7 @@ export interface Supervisor {
|
||||
resolution: HassioResolution;
|
||||
os: HassioHassOSInfo;
|
||||
addon: HassioAddonsInfo;
|
||||
callApi<T>(params: SupervisorAPIRequestParams): Promise<T>;
|
||||
}
|
||||
|
||||
export const supervisorApiWsRequest = <T>(
|
||||
|
Loading…
x
Reference in New Issue
Block a user