public ReactiveAddIncomeTransactionViewModel(ITransactionService transactionService, IViewModelNavigationService navigationService, ICategoriesService categoriesService, IUserDialogs userDialogs) { _transactionService = transactionService; _navigationService = navigationService; _categoriesService = categoriesService; var isValidCategory = this.WhenAnyValue(m => m.SelectedCategory) .Select(c => c != null); var isValidValue = this.WhenAnyValue(m => m.Value) .Select(IsValidValue); var canAddTransaction = isValidCategory.Merge(isValidValue); AddTransactionCommand = ReactiveCommand.CreateFromObservable <Unit>(AddTransactionAsync, canAddTransaction); GetCategories = ReactiveCommand.CreateFromObservable <Unit, IEnumerable <CategoryModel> >(GetCategoriesAsync); _categories = GetCategories .Select(categories => new ObservableCollection <CategoryModel>(categories)) .Select(categories => new ReadOnlyObservableCollection <CategoryModel>(categories)) .ToProperty(this, vm => vm.Categories); AddTransactionCommand.ThrownExceptions.Subscribe(ex => userDialogs.Alert(ex.Message)); AddTransactionCommand .Subscribe(Observer.Create <Unit>(OnAddTransactionComplete)); StateObservable .Where(s => s == ViewModelState.Disappered) .Subscribe(Observer.Create <ViewModelState>(ClearData)); StateObservable.Where(s => s == ViewModelState.Appeared) .Select(_ => Unit.Default) .InvokeCommand(GetCategories); }
public ReactiveLoginViewModel(IUserService userService, IViewModelNavigationService navigationService) { _userService = userService; _navigationService = navigationService; var canLogin = this.WhenAnyValue(m => m.UserName, m => m.Password) .ObserveOn(RxApp.MainThreadScheduler) .Select(t => IsValidCredentials(t.Item1, t.Item2)); LoginCommand = ReactiveCommand.CreateFromObservable <Unit>(LoginAsync, canLogin); _isUiEnabled = LoginCommand .IsExecuting .ObserveOn(RxApp.MainThreadScheduler) .Select(isExecuting => !isExecuting) .ToProperty(this, m => m.IsUiEnabled, true); var unhandledException = LoginCommand .ThrownExceptions .ObserveOn(RxApp.MainThreadScheduler) .Select(ex => UnhandledErrorMessage); LoginCommand .ThrownExceptions .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(ExceptionObserver); LoginCommand .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(Observer.Create <Unit>(OnSuccessfulLogin)); RegisterCommand = ReactiveCommand.Create(Register); _error = unhandledException .ObserveOn(RxApp.MainThreadScheduler) .ToProperty(this, m => m.Error, string.Empty); }
public ReactiveHomeViewModel(IViewModelNavigationService navigationService, ITransactionService transactionService) { _navigationService = navigationService; _transactionService = transactionService; IncomeCommand = ReactiveCommand.Create(Income); OutcomeCommand = ReactiveCommand.Create(Outcome); GetTransactionsCommand = ReactiveCommand.CreateFromObservable <Unit, IEnumerable <TransactionModel> >(GetTransactions); GetCurrentBalanceCommand = ReactiveCommand.CreateFromObservable <Unit, decimal>(GetCurrentBalance); _transactions = GetTransactionsCommand .Select(transactions => transactions.OrderByDescending(t => t.Date)) .Select(ToObservableCollection) .Select(transactions => new ReadOnlyObservableCollection <TransactionModel>(transactions)) .ToProperty(this, m => m.Transactions); var currentBalanceObservable = GetCurrentBalanceCommand .Select(b => $"{b:C2}"); _currentBalance = currentBalanceObservable .ToProperty(this, m => m.CurrentBalance, string.Empty); _fullCurrentBalance = currentBalanceObservable .Select(s => $"Your balance is: {s}") .ToProperty(this, m => m.FullCurrentBalance, string.Empty); StateObservable .Where(state => state == ViewModelState.Appeared) .Select(s => Unit.Default) .InvokeCommand(GetCurrentBalanceCommand); StateObservable .Where(state => state == ViewModelState.Appeared) .Select(s => Unit.Default) .InvokeCommand(GetTransactionsCommand); }
public ScheduleViewModel(IViewModelNavigationService viewModelNavigationService) { this.viewModelNavigationService = viewModelNavigationService; }
public LoginViewModel(IViewModelNavigationService viewModelNavigationService) { this.viewModelNavigationService = viewModelNavigationService; }
public SplashViewModel(ISettingService settingService, IViewModelNavigationService viewModelNavigationService) { _settingService = settingService; _viewModelNavigationService = viewModelNavigationService; }