public async Task <AppMetadata.FlowMetadata.FlowStepMetadata> GetMetadata(IUiFlowInitializationStep initializationStep) { return(new AppMetadata.FlowMetadata.FlowStepMetadata { Data = await ResolveScreenDataMetadata(initializationStep), Navigations = await ResolveUserNavigationsMetadata(initializationStep) }); }
internal FlowInitializerWithLifecycleAdapter(IUiFlowInitializationStep target) { _target = target; SetRegistry(); _uiFlowContextData = new UiFlowContextData { CurrentScreenStep = ScreenName.PreStart }; void SetRegistry() { var items = typeof(TInitializer).Namespace.Split('.').SkipLast(2); var flowsRootNamespace = string.Join('.', items); _target.SetPropertyValueFast(nameof(UiFlowScreen.Registry), new FlowsRegistry(typeof(TInitializer).Assembly, flowsRootNamespace, string.Empty)); } }
public FlowRuntimeInfo(IUiFlowInitializationStep initializationStep, IReadOnlyDictionary <ScreenName, IUiFlowScreen> screens) { InitializationStep = initializationStep; Screens = screens; }
private async Task <AppMetadata.FlowMetadata.ScreenDataModelMetadata> ResolveScreenDataMetadata(IUiFlowInitializationStep uiFlowScreen) { var type = uiFlowScreen.GetType(); Type dataType = null; while (type != null && (dataType = type.GetNestedTypes().SingleOrDefault(x => x.BaseTypes().Contains(typeof(InitialFlowScreenModel)))) == null) { type = type.BaseType; } AppMetadata.FlowMetadata.ScreenDataModelMetadata resolveScreenDataMetadata = null; if (dataType != null) { resolveScreenDataMetadata = new AppMetadata.FlowMetadata.ScreenDataModelMetadata { TypeName = dataType.FullName, Properties = dataType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty | BindingFlags.DeclaredOnly) .Select(x => new AppMetadata.FlowMetadata.ScreenDataModelMetadata.ScreenProperty { TypeName = x.PropertyType.FullName, Name = x.Name, IsSerialized = x.GetCustomAttribute <JsonIgnoreAttribute>() == null }).ToArray() }; } return(resolveScreenDataMetadata); }
private async Task <IEnumerable <AppMetadata.FlowMetadata.NavigationMetadata> > ResolveUserNavigationsMetadata(IUiFlowInitializationStep uiFlowScreen) { throw new NotSupportedException("navigations metadata resolver needs to be implemented first"); return(new AppMetadata.FlowMetadata.NavigationMetadata[0]); }
public TestFlowCreateStepDataConfigurator(IUiFlowInitializationStep initializationTarget) : base(ScreenName.PreStart) { _initializationTarget = initializationTarget; }