mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-07-11 03:52:02 +00:00
Migrate most of frontend callServerMethod usage over to websocket
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
import Logger from './logger';
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
DeckyBackend: WSRouter;
|
||||
}
|
||||
}
|
||||
|
||||
enum MessageType {
|
||||
// Call-reply
|
||||
CALL,
|
||||
@@ -94,7 +100,6 @@ export class WSRouter extends Logger {
|
||||
}
|
||||
|
||||
async onMessage(msg: MessageEvent) {
|
||||
this.debug('WS Message', msg);
|
||||
try {
|
||||
const data = JSON.parse(msg.data) as Message;
|
||||
switch (data.type) {
|
||||
@@ -108,7 +113,7 @@ export class WSRouter extends Logger {
|
||||
await this.write({ type: MessageType.ERROR, id: data.id, error: (e as Error)?.stack || e });
|
||||
}
|
||||
} else {
|
||||
await this.write({ type: MessageType.ERROR, id: data.id, error: 'Route does not exist.' });
|
||||
await this.write({ type: MessageType.ERROR, id: data.id, error: `Route ${data.route} does not exist.` });
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -152,6 +157,10 @@ export class WSRouter extends Logger {
|
||||
return resolver.promise;
|
||||
}
|
||||
|
||||
callable<Args extends any[] = any[], Return = void>(route: string): (...args: Args) => Promise<Return> {
|
||||
return (...args) => this.call<Args, Return>(route, ...args);
|
||||
}
|
||||
|
||||
async onError(error: any) {
|
||||
this.error('WS DISCONNECTED', error);
|
||||
await this.connect();
|
||||
|
||||
Reference in New Issue
Block a user