diff --git a/desktop/angular/src/app/integration/taur-app.ts b/desktop/angular/src/app/integration/taur-app.ts index ad663e6b..41ed37b5 100644 --- a/desktop/angular/src/app/integration/taur-app.ts +++ b/desktop/angular/src/app/integration/taur-app.ts @@ -24,7 +24,7 @@ function asyncInvoke(method: string, args: object): Promise { return new Promise((resolve, reject) => { const eventId = uuid(); - once(eventId, (event) => { + const listenerPromise = once(eventId, (event) => { if (typeof event.payload === 'object' && 'error' in event.payload) { reject(event.payload); return @@ -33,14 +33,17 @@ function asyncInvoke(method: string, args: object): Promise { resolve(event.payload); }) - invoke(method, { - ...args, - responseId: eventId, - }).catch((err: any) => { - console.error("tauri:invoke rejected: ", method, args, err); - reject(err) - }); - }) + // Only make the invoke call after the listener is registered + listenerPromise.then(() => { + invoke(method, { + ...args, + responseId: eventId, + }).catch((err: any) => { + console.error("tauri:invoke rejected: ", method, args, err); + reject(err) + }); + }) + }); } export type ServiceManagerStatus = 'Running' | 'Stopped' | 'NotFound' | 'unsupported service manager' | 'unsupported operating system';