Files
decky-frontend-lib/src/plugin.ts

34 lines
984 B
TypeScript
Raw Normal View History

2022-04-22 22:31:54 +02:00
export interface Plugin {
title: JSX.Element;
tab: JSX.Element;
panel: JSX.Element;
onDismount?(): void;
}
interface ServerResponseSuccess<TRes> {
success: true;
result: TRes;
}
interface ServerResponseError {
success: false;
result: string;
}
type ServerResponse<TRes> = ServerResponseSuccess<TRes> | ServerResponseError;
export interface ServerAPI {
callPluginMethod<TArgs = {}, TRes = {}>(methodName: string, args: TArgs): Promise<ServerResponse<TRes>>;
callServerMethod<TArgs = {}, TRes = {}>(methodName: string, args: TArgs): Promise<ServerResponse<TRes>>;
fetchNoCors<TRes = {}>(url: string, request: RequestInfo): Promise<ServerResponse<TRes>>;
executeInTab(tab: string, runAsync: boolean, code: string): Promise<unknown>;
removeCssFromTab(tab: string, cssId: string): Promise<unknown>;
}
type DefinePluginFn = (serverAPI: ServerAPI) => Plugin;
// TypeScript helper function
export const definePlugin = (fn: DefinePluginFn) => {
return fn;
};