typedelectron/ts_web/classes.typedelectronfrontend.ts
2023-12-06 02:16:36 +01:00

29 lines
874 B
TypeScript

import * as plugins from './plugins.js';
export class TypedElectronFrontend {
// STATIC
public static async createTypedElectronFrontend() {
return new TypedElectronFrontend();
}
// INSTANCE
public typedrouter = new plugins.typedrequest.TypedRouter();
constructor() {
plugins.electronApi.receiveMessage('typedrequest', (payloadArg) => {
this.typedrouter.routeAndAddResponse(payloadArg);
});
}
createTypedRequest<T extends plugins.typedrequestInterfaces.ITypedRequest>(
methodName: T['method'],
) {
const typedrequest = new plugins.typedrequest.TypedRequest<T>(new plugins.typedrequest.TypedTarget({
typedRouterRef: this.typedrouter,
postMethodWithTypedRouter: async (payloadArg: T) => {
plugins.electronApi.sendMessage('typedrequest', payloadArg);
}
}), methodName);
return typedrequest;
}
}