Commit 0b923a98 authored by nanahira's avatar nanahira

fix blank session problem

parent 80ba6078
...@@ -118,9 +118,10 @@ export class ReplySession< ...@@ -118,9 +118,10 @@ export class ReplySession<
const prom = new Promise<string>((resolve) => { const prom = new Promise<string>((resolve) => {
const prompt: Prompt = { const prompt: Prompt = {
resolver: resolve, resolver: resolve,
timeout: setTimeout(() => { timeout: setTimeout(
resolver.resolvePrompt(identifier, undefined); () => resolver.resolvePrompt(identifier, undefined),
}, timeout), timeout,
),
session: this, session: this,
callback, callback,
}; };
...@@ -139,7 +140,7 @@ class PromptResolver extends StarterPlugin() { ...@@ -139,7 +140,7 @@ class PromptResolver extends StarterPlugin() {
addPrompt(identifier: string, prompt: Prompt) { addPrompt(identifier: string, prompt: Prompt) {
const oldPrompt = this.prompts.get(identifier); const oldPrompt = this.prompts.get(identifier);
if (oldPrompt) { if (oldPrompt) {
this.resolvePrompt(identifier, undefined); this.resolvePrompt(identifier, undefined).then();
} }
this.prompts.set(identifier, prompt); this.prompts.set(identifier, prompt);
} }
...@@ -151,7 +152,7 @@ class PromptResolver extends StarterPlugin() { ...@@ -151,7 +152,7 @@ class PromptResolver extends StarterPlugin() {
return next(); return next();
} }
const identifier = session.getIdentifier(); const identifier = session.getIdentifier();
const prompt = this.resolvePrompt(identifier, session); const prompt = await this.resolvePrompt(identifier, session);
if (!prompt) { if (!prompt) {
return next(); return next();
} }
...@@ -159,10 +160,10 @@ class PromptResolver extends StarterPlugin() { ...@@ -159,10 +160,10 @@ class PromptResolver extends StarterPlugin() {
return; return;
} }
resolvePrompt(identifier: string, session: ReplySession) { async resolvePrompt(identifier: string, session: ReplySession) {
const prompt = this.prompts.get(identifier); const prompt = this.prompts.get(identifier);
if (prompt) { if (prompt) {
prompt.resolver(prompt.callback(session)); prompt.resolver(session ? await prompt.callback(session) : undefined);
clearTimeout(prompt.timeout); clearTimeout(prompt.timeout);
this.prompts.delete(identifier); this.prompts.delete(identifier);
return prompt; return prompt;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment