public AppBloc(IAuthBloc authBloc) { authBloc.WhenState .Select(@is => (@is is LoggedOutState) ? (IAppState) new AppLogInState() : (IAppState) new AppHomeState() ) .Subscribe(SetState); }
//protected override HomeViewModelState CreateInitialState() => new HomeViewModelState(); public HomeViewModelBloc(IAuthBloc authBloc) { _authBloc = authBloc; _authBloc.WhenState .WhereAs <IAuthState, LoggedInState>() .Select(s => s.Username) .Select(s => $"{s} detail page") .Subscribe(UpdateStateProperty(s => s.ButtonLabel)); /* * // update the whole state * Observable.Return(new HomeViewModelState { Title = "B" }) * .Delay(TimeSpan.FromSeconds(3)) * .ObserveOn(SynchronizationContext.Current) * .Subscribe(SetState) * ; * * // update only one state property * Observable.Return("C") * .Delay(TimeSpan.FromSeconds(5)) * .ObserveOn(SynchronizationContext.Current) * .Subscribe(UpdateStateProperty(s => s.Title)) * ; * * // other one-property syntax * UpdateStateProperty(s => s.ButtonLabel, "Click Me !!!"); * * // updates multiple properties at once but will only call setstate() 1 time * UpdateStateProperties(state => * { * state.Title = "a"; * state.ButtonLabel = "b"; * return state; * }); * * SetState(new HomeViewModelState()); * SetState(new HomeViewModelState(error:e)); * SetState(new HomeViewModelState(data:obj)); * * // hardcoded values to test ui with states before having business logic * SetState(new HomeViewModelState{ * Title = "A Title", * ButtonLabel = "Click Me" * }); */ }
public LoginViewModelBloc(IAuthBloc authBloc) { _authBloc = authBloc; }