public ApplicationModel( IFactory <AuthenticationModel> authenticationModelFactory, IFactory <WorkspaceModel> workspaceModelFactory, IApplicationPopupController popupController, IAuthenticator authenticator) { _authenticationModelFactory = authenticationModelFactory; _workspaceModelFactory = workspaceModelFactory; SubscribeToState(authenticator); SubscribeToPopup(popupController); }
public ApplicationController( IAuthenticator authenticator, IApplicationPopupController applicationPopupController, IActivator <AuthenticationModel> authenticationActivator, IActivator <WorkspaceModel> workspaceActivator) { _authenticationActivator = authenticationActivator; _workspaceActivator = workspaceActivator; BindAuthenticator(authenticator) .DisposeWith(this); BindPopup(applicationPopupController) .DisposeWith(this); }
private IDisposable BindPopup(IApplicationPopupController controller) { return(Observable.FromEventPattern <PopupModel>( h => controller.ContextChanged += h, h => controller.ContextChanged -= h) .Select(e => e.EventArgs) .SubscribeOn(TaskPoolScheduler.Default) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(popupModel => { Model.PopupModel = popupModel ?? new PopupModel { IsPopupVisible = false }; })); }
private void SubscribeToPopup(IApplicationPopupController controller) { PopupModel = new HiddenPopupModel(controller); Observable.FromEventPattern <PopupModel>( h => controller.ContextChanged += h, h => controller.ContextChanged -= h) .Select(e => e.EventArgs) .SubscribeOn(TaskPoolScheduler.Default) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(popupModel => { PopupModel.Dispose(); PopupModel = popupModel ?? new HiddenPopupModel(controller); }) .DisposeWith(_modelDisposable); }