import type { ICommand } from '../services/commands/ICommand'; import { GetSDKConfigCommand } from '../services/commands/GetSDKConfigCommand'; type SendToJavaScript = (script: string) => void; export class CommandDispatcher { private commandMap: Record; private sendToJavaScript: SendToJavaScript; constructor(sendToJavaScript: SendToJavaScript) { this.sendToJavaScript = sendToJavaScript; this.commandMap = { GetSDKConfig: new GetSDKConfigCommand(), }; } async dispatch(method: string, jsonParams?: string | null): Promise { const command = this.commandMap[method]; if (!command) { console.error(`CommandDispatcher: Unknown method "${method}"`); return; } try { const params = jsonParams && jsonParams.trim().length > 0 ? JSON.parse(jsonParams) : {}; const jsonResponse = await command.execute(params); this.sendResponseToJavaScript(method, jsonResponse); } catch (error) { console.error('CommandDispatcher dispatch error', error); } } private sendResponseToJavaScript(method: string, jsonResponse: string): void { const script = `window.mychipsNativeCallback('${method}', ${jsonResponse}); true;`; this.sendToJavaScript(script); } }