From 4689bfb2389fcf8735066eec5277e770df853914 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Fri, 30 Aug 2019 14:06:01 -0300 Subject: [PATCH] fix(whatsapp.gblib): Multi-turn dialog fixed in BASIC processing. --- packages/core.gbapp/services/GBAPIService.ts | 12 ++++++++++-- packages/core.gbapp/services/GBVMService.ts | 13 ++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) 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); } ]) );