public async Task <UiFlowScreenModel> RefreshStepDataAsync(IUiFlowContextData contextData, UiFlowScreenModel originalScreenModel, IDictionary <string, object> stepViewCustomizations = null) { TraceBegin(nameof(RefreshStepDataAsync), contextData); var result = originalScreenModel; if (!_stepDataLoaded) { await _syncLock.AsyncCriticalSection(async() => { if (!_stepDataLoaded) { LifecycleStage = ScreenLifecycleStage.RefreshingStepData; _stepDataLoaded = true; var onRefreshStepDataAsync = await OnRefreshModelAsync(contextData, originalScreenModel, stepViewCustomizations); await OnScreenLoadCompletedAsync(contextData); result = onRefreshStepDataAsync; LifecycleStage = ScreenLifecycleStage.RefreshStepDataCompleted; } } ); } TraceEnd(nameof(RefreshStepDataAsync), contextData); return(result); }
public async Task <IDictionary <string, object> > ResolveContainedFlowStartInfo(IUiFlowContextData contextData, IDictionary <string, object> stepViewCustomizations) { LifecycleStage = ScreenLifecycleStage.ResolvingContainedFlowStartInfo; var startInfo = await OnResolveContainedFlowStartInfo(contextData, stepViewCustomizations); LifecycleStage = ScreenLifecycleStage.ResolveContainedFlowStartInfoCompleted; return(startInfo); }
private void ThrowIfMustFail(IUiFlowContextData contextData, ScreenLifecycleStage stage) { var root = contextData.GetStepData <FlowInitializer.StartScreenModel>(); if (root != null && (ScreenName)root.FailOnStep == ScreenNameId && root.FailOnEvent == stage) { throw new Exception($"Failing on {ScreenNameId}.{stage}"); } }
public bool ValidateTransitionAttempt(ScreenEvent triggeredEvent, IUiFlowContextData contextData, out string errorMessage) { TraceBegin(nameof(HandleStepEvent), contextData, triggeredEvent); LifecycleStage = ScreenLifecycleStage.ValidatingTransition; var isValid = OnValidate(triggeredEvent, contextData, out errorMessage); LifecycleStage = isValid ? ScreenLifecycleStage.ValidateTransitionCompleted : ScreenLifecycleStage.ValidateTransitionCompletedWithErrors; TraceEnd(nameof(HandleStepEvent), contextData, triggeredEvent); return(isValid); }
public async Task <UiFlowScreenModel> CreateStepDataAsync(IUiFlowContextData contextData) { TraceBegin(nameof(CreateStepDataAsync), contextData); LifecycleStage = ScreenLifecycleStage.CreatingStepData; var result = await OnCreateModelAsync(contextData); _stepDataLoaded = true; await OnScreenLoadCompletedAsync(contextData); LifecycleStage = ScreenLifecycleStage.CreateStepDataCompleted; TraceEnd(nameof(CreateStepDataAsync), contextData); return(result); }
public IScreenFlowConfigurator DefineActionHandlersOnCurrentScreen(IScreenFlowConfigurator screenConfiguration, IUiFlowContextData contextData) { TraceBegin(nameof(DefineActionHandlersOnCurrentScreen), contextData); LifecycleStage = ScreenLifecycleStage.DefiningTransitionsFromCurrentScreen; var cfg = OnRegisterUserActions(screenConfiguration, contextData); var internalScreenFlowConfigurator = ((IInternalScreenFlowConfigurator)cfg); internalScreenFlowConfigurator.AddErrorTransitionIfUndefined(); this.Transitions = internalScreenFlowConfigurator.Transitions; this._eventHandlers = internalScreenFlowConfigurator.Handlers; LifecycleStage = ScreenLifecycleStage.DefineTransitionsFromCurrentScreenCompleted; TraceEnd(nameof(DefineActionHandlersOnCurrentScreen), contextData); return(cfg); }
public async Task HandleStepEvent(ScreenEvent triggeredEvent, IUiFlowContextData contextData) { TraceBegin(nameof(HandleStepEvent), contextData, triggeredEvent); LifecycleStage = ScreenLifecycleStage.HandlingEvent; //TDO: inline next await OnHandlingStepEvent(triggeredEvent, contextData); var uiFlowStepData = contextData.GetCurrentStepData <UiFlowScreenModel>(); if (uiFlowStepData != null) { uiFlowStepData.Errors = new List <UiFlowUserInputError>(); } LifecycleStage = ScreenLifecycleStage.HandleEventCompleted; TraceEnd(nameof(HandleStepEvent), contextData, triggeredEvent); }