/// <summary> /// Gets an observable of the last page type from currently active section. /// The observable pushes a value whenever a navigation request is processed with the type of the last page ViewModel. /// </summary> /// <returns>An observable of types.</returns> public static IObservable <Type> ObserveActiveSectionLastPageType(this ISectionsNavigator sectionsNavigator) { return(sectionsNavigator .ObserveStateChanged() .Where(args => args.EventArgs.CurrentState.LastRequestState == NavigatorRequestState.Processed) .Select(args => { var state = args.EventArgs.CurrentState; return state.ActiveSection?.State.Stack.LastOrDefault()?.ViewModel.GetType(); }) .StartWith(sectionsNavigator.State.ActiveSection?.State.Stack.LastOrDefault()?.ViewModel.GetType())); }
/// <summary> /// Gets an observable sequence that produces values whenever <see cref="ISectionsNavigator.StateChanged"/> is raised, pushing only the <see cref="SectionsNavigatorEventArgs.CurrentState"/> value. /// </summary> /// <param name="navigator">The sections navigator.</param> /// <returns>An observable sequence of <see cref="SectionsNavigatorState"/>.</returns> public static IObservable <SectionsNavigatorState> ObserveCurrentState(this ISectionsNavigator navigator) { return(navigator .ObserveStateChanged() .Select(pattern => pattern.EventArgs.CurrentState)); }