public MainViewModel( Func <IProvider, IFileManager, IAuthViewModel, IProviderViewModel> providerFactory, Func <IProvider, IAuthViewModel> authFactory, IProviderStorage providerStorage, IFileManager fileManager, IScheduler currentThread, IScheduler mainThread) { _loadProviders = ReactiveCommand.CreateFromTask( providerStorage.LoadProviders, outputScheduler: mainThread); _providers = _loadProviders .Select(providers => providers .Select(x => providerFactory(x, fileManager, authFactory(x))) .ToList()) .StartWithEmpty() .ToProperty(this, x => x.Providers, scheduler: currentThread); _isLoading = _loadProviders .IsExecuting .ToProperty(this, x => x.IsLoading, scheduler: currentThread); _isReady = _loadProviders .IsExecuting .Select(executing => !executing) .Skip(1) .ToProperty(this, x => x.IsReady, scheduler: currentThread); this.WhenAnyValue(x => x.Providers) .Where(providers => providers != null) .Select(providers => providers.FirstOrDefault()) .Subscribe(x => SelectedProvider = x); Activator = new ViewModelActivator(); this.WhenActivated(disposable => { _loadProviders.Execute() .Subscribe(x => { }) .DisposeWith(disposable); }); }
public MainViewModel( ProviderViewModelFactory providerFactory, AuthViewModelFactory authFactory, IProviderStorage storage, IFileManager files, IScheduler current, IScheduler main) { _storage = storage; _refresh = ReactiveCommand.CreateFromTask( storage.Refresh, outputScheduler: main); var providers = storage.Providers(); providers.Transform(x => providerFactory(x, files, authFactory(x))) .ObserveOn(RxApp.MainThreadScheduler) .StartWithEmpty() .Bind(out _providers) .Subscribe(); _isLoading = _refresh .IsExecuting .ToProperty(this, x => x.IsLoading, scheduler: current); _isReady = _refresh .IsExecuting .Skip(1) .Select(executing => !executing) .ToProperty(this, x => x.IsReady, scheduler: current); providers.Where(changes => changes.Any()) .ObserveOn(RxApp.MainThreadScheduler) .OnItemAdded(x => SelectedProvider = Providers.LastOrDefault()) .OnItemRemoved(x => SelectedProvider = null) .Subscribe(); var canRemove = this .WhenAnyValue(x => x.SelectedProvider) .Select(provider => provider != null); _remove = ReactiveCommand.CreateFromTask( () => storage.Remove(SelectedProvider.Id), canRemove); var canAddProvider = this .WhenAnyValue(x => x.SelectedSupportedType) .Select(type => !string.IsNullOrWhiteSpace(type)); _add = ReactiveCommand.CreateFromTask( () => storage.Add(SelectedSupportedType), canAddProvider); _welcomeScreenVisible = this .WhenAnyValue(x => x.SelectedProvider) .Select(provider => provider == null) .ToProperty(this, x => x.WelcomeScreenVisible); _welcomeScreenCollapsed = this .WhenAnyValue(x => x.WelcomeScreenVisible) .Select(visible => !visible) .ToProperty(this, x => x.WelcomeScreenCollapsed); var canUnSelect = this .WhenAnyValue(x => x.SelectedProvider) .Select(provider => provider != null); _unselect = ReactiveCommand.Create( () => { SelectedProvider = null; }, canUnSelect); Activator = new ViewModelActivator(); this.WhenActivated(disposables => { SelectedSupportedType = SupportedTypes.FirstOrDefault(); _refresh.Execute() .Subscribe() .DisposeWith(disposables); }); }
public ProviderLogic(IProviderStorage customerStorage) { _customerStorage = customerStorage; }
public ProviderLogic(IProviderStorage storage) { this.storage = storage; }
public ProviderLogic(IProviderStorage providerStorage) { _providerStorage = providerStorage; }