From 27f7c483d4261a35aadf6b7e88c71bbde8965303 Mon Sep 17 00:00:00 2001 From: Tom Laird-McConnell Date: Sat, 2 May 2020 08:46:43 -0700 Subject: [PATCH] * cleaned up CreateInnerDC so it is applied consistently * changed WaterfallStepContext ctor to pass in parent dc. --- .../ComponentDialog.cs | 23 +++++++++++++++---- .../WaterfallStepContext.cs | 3 +-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/libraries/Microsoft.Bot.Builder.Dialogs/ComponentDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs/ComponentDialog.cs index a078a2232f..b190081a09 100644 --- a/libraries/Microsoft.Bot.Builder.Dialogs/ComponentDialog.cs +++ b/libraries/Microsoft.Bot.Builder.Dialogs/ComponentDialog.cs @@ -249,9 +249,7 @@ public ComponentDialog AddDialog(Dialog dialog) public override DialogContext CreateChildContext(DialogContext dc) { - var childDc = this.CreateInnerDc(dc.Context, dc.ActiveDialog); - childDc.Parent = dc; - return childDc; + return this.CreateInnerDc(dc, dc.ActiveDialog); } protected async Task EnsureInitializedAsync(DialogContext outerDc) @@ -380,7 +378,22 @@ protected virtual Task EndComponentAsync(DialogContext outerDc return outerDc.EndDialogAsync(result, cancellationToken); } - private DialogContext CreateInnerDc(ITurnContext context, DialogInstance instance) + private DialogContext CreateInnerDc(DialogContext outerDc, DialogInstance instance) + { + var state = BuildDialogState(instance); + + return new DialogContext(this.Dialogs, outerDc, state); + } + + // NOTE: You should only call this if you don't have a dc to work with (such as OnResume()) + private DialogContext CreateInnerDc(ITurnContext turnContext, DialogInstance instance) + { + var state = BuildDialogState(instance); + + return new DialogContext(this.Dialogs, turnContext, state); + } + + private DialogState BuildDialogState(DialogInstance instance) { DialogState state; @@ -399,7 +412,7 @@ private DialogContext CreateInnerDc(ITurnContext context, DialogInstance instanc state.DialogStack = new List(); } - return new DialogContext(this.Dialogs, context, state); + return state; } } } diff --git a/libraries/Microsoft.Bot.Builder.Dialogs/WaterfallStepContext.cs b/libraries/Microsoft.Bot.Builder.Dialogs/WaterfallStepContext.cs index caa0c79fa5..027894af21 100644 --- a/libraries/Microsoft.Bot.Builder.Dialogs/WaterfallStepContext.cs +++ b/libraries/Microsoft.Bot.Builder.Dialogs/WaterfallStepContext.cs @@ -38,12 +38,11 @@ internal WaterfallStepContext( object result = null) : base( dc.Dialogs, - turnContext: dc.Context, + parentDialogContext: dc, state: new DialogState(dc.Stack)) { _parentWaterfall = parentWaterfall; _nextCalled = false; - Parent = dc.Parent; Index = index; Options = options; Reason = reason;