diff --git a/packages/core.gbapp/services/GBAPIService.ts b/packages/core.gbapp/services/GBAPIService.ts index f1e0c741..57d98f8d 100644 --- a/packages/core.gbapp/services/GBAPIService.ts +++ b/packages/core.gbapp/services/GBAPIService.ts @@ -137,8 +137,16 @@ export class DialogClass { return Math.random() * (high - low) + low } const idPromise = random(0, 120000000); - this.min.cbMap[idPromise] = promise; - return await step.beginDialog('/hear', { id: idPromise, previousResolve: previousResolve }); + this.min.cbMap[idPromise] = {}; + this.min.cbMap[idPromise].promise = promise; + + const opts = { id: idPromise, previousResolve: previousResolve }; + if (previousResolve !== undefined) { + previousResolve(opts); + } + else{ + await step.beginDialog('/hear', opts); + } } public async talk(step, text: string) { diff --git a/packages/core.gbapp/services/GBVMService.ts b/packages/core.gbapp/services/GBVMService.ts index 924033d6..55e1328b 100644 --- a/packages/core.gbapp/services/GBVMService.ts +++ b/packages/core.gbapp/services/GBVMService.ts @@ -260,17 +260,16 @@ export class GBVMService extends GBService { step.activeDialog.state.options = {}; step.activeDialog.state.options.cbId = (step.options as any).id; step.activeDialog.state.options.previousResolve = (step.options as any).previousResolve; - return await step.prompt('textPrompt', {}); }, async step => { const cbId = step.activeDialog.state.options.cbId; - const promise = min.cbMap[cbId]; - const res = await promise(step, step.result); - if (step.activeDialog.state.options.previousResolve != undefined){ - step.activeDialog.state.options.previousResolve(); - } - return await step.next(); + const promise = min.cbMap[cbId].promise; + + delete min.cbMap[cbId]; + const opts = await promise(step, step.result); + + return await step.replaceDialog ('/hear', opts); } ]) );