public SignUpViewModel(INavigatableScreen screen = null) { //Gets intance of INavigatableScreen instance NavigationScreen = screen ?? Locator.Current.GetService <INavigatableScreen>(); //Observable for all properties and it will be true when //all this properties will be not empty var canRegester = this.WhenAny( x => x.Name, x => x.RegesterEmail, x => x.RegesterPassword, x => x.ConfirmPassword, (n, e, p, cp) => !string.IsNullOrEmpty(n.Value) && !string.IsNullOrEmpty(e.Value) && !string.IsNullOrEmpty(p.Value) && !string.IsNullOrEmpty(cp.Value) && cp.Value == p.Value ); //Creating reactive command for regester Regester = ReactiveCommand .CreateAsyncTask(canRegester, async _ => { IsLoading = true; string address = RestofitApiHelper.Address; //bool isReachable = await CrossConnectivity.Current.IsRemoteReachable(address); var client = new HttpClient() { BaseAddress = new Uri(address) }; var api = RestService.For <IRestaurantApi>(client); var result = await api.Regester(Name, RegesterEmail, RegesterPassword, ConfirmPassword); return(result); }); //When regstir command executing sets true for IsLoading property //Regester // .IsExecuting // .Subscribe(x => IsLoading = true); //Raises when completes regester command Regester .Subscribe(r => { MessageBus.Current.SendMessage("User regestred!"); Debug.WriteLine("Complete!"); IsLoading = false; }); //Raises when regester throws any exception Regester .ThrownExceptions .Subscribe(ex => { Debug.WriteLine("Error!"); IsLoading = false; }); }
public SignUpViewModel(INavigatableScreen screen = null) { //Gets intance of INavigatableScreen instance NavigationScreen = screen ?? Locator.Current.GetService<INavigatableScreen>(); //Observable for all properties and it will be true when //all this properties will be not empty var canRegester = this.WhenAny( x => x.Name, x => x.RegesterEmail, x => x.RegesterPassword, x => x.ConfirmPassword, (n,e, p, cp) => !string.IsNullOrEmpty(n.Value) && !string.IsNullOrEmpty(e.Value) && !string.IsNullOrEmpty(p.Value) && !string.IsNullOrEmpty(cp.Value) && cp.Value == p.Value ); //Creating reactive command for regester Regester = ReactiveCommand .CreateAsyncTask(canRegester, async _ => { IsLoading = true; var client = new HttpClient(NetCache.UserInitiated) { BaseAddress = new Uri(Helper.Address) }; var api = RestService.For<IRestaurantApi>(client); var result = await api.Regester(Name, RegesterEmail, RegesterPassword, ConfirmPassword); return result; }); //When regstir command executing sets true for IsLoading property //Regester // .IsExecuting // .Subscribe(x => IsLoading = true); //Raises when completes regester command Regester .Subscribe(r => { MessageBus.Current.SendMessage("User regestred!"); Debug.WriteLine("Complete!"); IsLoading = false; }); //Raises when regester throws any exception Regester .ThrownExceptions .Subscribe(ex => { Debug.WriteLine("Error!"); IsLoading = false; }); }
public BasketViewModel(INavigatableScreen navigationScreen = null) { NavigationScreen = navigationScreen; Orders = new ReactiveList <Order>(); this.WhenAnyValue(x => x.Orders.Count) .Subscribe(x => { OrdersCount = x; }); }
public BasketViewModel(INavigatableScreen navigationScreen = null) { NavigationScreen = navigationScreen; Orders = new ReactiveList<Order>(); this.WhenAnyValue(x => x.Orders.Count) .Subscribe(x => { OrdersCount = x; }); }
public FoodsViewModel(INavigatableScreen screen = null) { OrderableFoods = new ReactiveList <Order>(); OpenOrder = ReactiveCommand.Create(); NavigationScreen = (screen ?? Locator.Current.GetService <INavigatableScreen>()); MainViewModel = Locator.Current.GetService <MainViewModel>(); //var foods = Context.AuthenticationManager.AuthenticatedApi.GetFoods(); //foods.ToObservable() //.Do(x => //{ // var orders = x.Select(f => new Order {Food = f, Id = Guid.NewGuid()}); // OrderableFoods.AddRange(orders); //}) //.Subscribe(); //OpenOrder.Do(_ => // { // NavigationScreen.Navigation.Navigate.Execute(Locator.Current.GetService<BasketViewModel>()); // }).Subscribe(); }
public FoodsViewModel(INavigatableScreen screen = null) { OrderableFoods = new ReactiveList<Order>(); OpenOrder = ReactiveCommand.Create(); NavigationScreen = (screen ?? Locator.Current.GetService<INavigatableScreen>()); MainViewModel = Locator.Current.GetService<MainViewModel>(); var foods = Global.AuthenticationManager.AuthenticatedApi.GetFoods(); foods.ToObservable() .Do(x => { var orders = x.Select(f => new Order {Food = f, Id = Guid.NewGuid()}); OrderableFoods.AddRange(orders); }) .Subscribe(); OpenOrder.Do(_ => { NavigationScreen.Navigation.Navigate.Execute(Locator.Current.GetService<BasketViewModel>()); }).Subscribe(); }
public AuthenticationViewModel(INavigatableScreen screen = null) { NavigationScreen = (screen ?? Locator.Current.GetService <INavigatableScreen>()); var canLogin = this.WhenAny(x => x.Email, x => x.Password, (e, p) => !string.IsNullOrEmpty(e.Value) && !string.IsNullOrEmpty(p.Value)); Login = ReactiveCommand .CreateAsyncTask(canLogin, async _ => { IsBusy = true; AuthenticationStatus = "started logging..."; Debug.WriteLine(RestofitApiHelper.Address); var client = new HttpClient(NetCache.UserInitiated) { BaseAddress = new Uri(RestofitApiHelper.Address) }; var api = RestService.For <IRestaurantApi>(client); var token = await api.GetToken(Email, Password); AuthenticationStatus = "started authentication..."; Context.AuthenticationManager.AuthenticatedClient = new HttpClient(new AuthenticatedHttpClientHandler(token.access_token)) { BaseAddress = new Uri(RestofitApiHelper.Address) }; var info = await Context.AuthenticationManager.AuthenticatedApi.GetUserInfo(); return(info); }); Login. Subscribe(x => IsBusy = false); Login .ThrownExceptions .Subscribe(ex => { UserError.Throw("Invalid login or password!"); Debug.WriteLine("Error! - " + ex.Message); IsBusy = false; }); #region OpenRegester OpenRegester = ReactiveCommand.Create(); OpenRegester.Subscribe(x => { var viewModel = Locator.Current.GetService <SignUpViewModel>(); if (viewModel == null) { var regViewModel = new SignUpViewModel(NavigationScreen); Locator.CurrentMutable.RegisterConstant(regViewModel, typeof(SignUpViewModel)); NavigationScreen.Navigation.Navigate.Execute(regViewModel); } else { NavigationScreen.Navigation.Navigate.Execute(viewModel); } }); OpenLogin = ReactiveCommand.Create(); OpenLogin.Subscribe(x => { var authenViewModel = Locator.Current.GetService <AuthenticationViewModel>(); NavigationScreen.Navigation.Navigate.Execute(authenViewModel); }); #endregion }
public AuthenticationViewModel(INavigatableScreen screen = null) { NavigationScreen = (screen ?? Locator.Current.GetService<INavigatableScreen>()); var canLogin = this.WhenAny(x => x.Email, x => x.Password, (e, p) => !string.IsNullOrEmpty(e.Value) && !string.IsNullOrEmpty(p.Value)); Login = ReactiveCommand .CreateAsyncTask(canLogin, async _ => { IsBusy = true; AuthenticationStatus = "started logging..."; Debug.WriteLine(Helper.Address); var client = new HttpClient(NetCache.UserInitiated) { BaseAddress = new Uri(Helper.Address) }; var api = RestService.For<IRestaurantApi>(client); var token = await api.GetToken(Email, Password); AuthenticationStatus = "started authentication..."; Global.AuthenticationManager.AuthenticatedClient = new HttpClient(new AuthenticatedHttpClientHandler(token.access_token)) { BaseAddress = new Uri(Helper.Address) }; var info = await Global.AuthenticationManager.AuthenticatedApi.GetUserInfo(); return info; }); Login. Subscribe(x => IsBusy = false); Login .ThrownExceptions .Subscribe(ex => { UserError.Throw("Invalid login or password!"); Debug.WriteLine("Error! - " + ex.Message); IsBusy = false; }); #region OpenRegester OpenRegester = ReactiveCommand.Create(); OpenRegester.Subscribe(x => { var viewModel = Locator.Current.GetService<SignUpViewModel>(); if (viewModel == null) { var regViewModel = new SignUpViewModel(NavigationScreen); Locator.CurrentMutable.RegisterConstant(regViewModel, typeof(SignUpViewModel)); NavigationScreen.Navigation.Navigate.Execute(regViewModel); } else { NavigationScreen.Navigation.Navigate.Execute(viewModel); } }); OpenLogin = ReactiveCommand.Create(); OpenLogin.Subscribe(x => { var authenViewModel = Locator.Current.GetService<AuthenticationViewModel>(); NavigationScreen.Navigation.Navigate.Execute(authenViewModel); }); #endregion }