Changed Basket API integration

This commit is contained in:
Javier Suárez Ruiz 2017-01-10 15:42:46 +01:00
parent 67bfe7ddf9
commit 3340595b4f
4 changed files with 15 additions and 25 deletions

View File

@ -5,9 +5,6 @@
// Add product to basket // Add product to basket
public const string AddProduct = "AddProduct"; public const string AddProduct = "AddProduct";
// Update Basket
public const string UpdateBasket = "UpdateBasket";
// Filter // Filter
public const string Filter = "Filter"; public const string Filter = "Filter";

View File

@ -6,7 +6,6 @@ using eShopOnContainers.Core.Services.User;
using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.Core.ViewModels.Base;
using eShopOnContainers.ViewModels.Base; using eShopOnContainers.ViewModels.Base;
using System; using System;
using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -66,20 +65,26 @@ namespace eShopOnContainers.Core.ViewModels
public ICommand CheckoutCommand => new Command(Checkout); public ICommand CheckoutCommand => new Command(Checkout);
public override Task InitializeAsync(object navigationData) public override async Task InitializeAsync(object navigationData)
{ {
if (BasketItems == null) if (BasketItems == null)
BasketItems = new ObservableCollection<BasketItem>(); BasketItems = new ObservableCollection<BasketItem>();
MessagingCenter.Unsubscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket); var authToken = Settings.AuthAccessToken;
MessagingCenter.Subscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket, (sender, arg) => var userInfo = await _userService.GetUserInfoAsync(authToken);
// Update Basket
var basket = await _basketService.GetBasketAsync(userInfo.UserId, authToken);
if (basket != null && basket.Items != null && basket.Items.Any())
{ {
foreach (var basketItem in arg) BasketItems.Clear();
foreach (var basketItem in basket.Items)
{ {
BadgeCount += basketItem.Quantity; BadgeCount += basketItem.Quantity;
AddBasketItem(basketItem); AddBasketItem(basketItem);
} }
}); }
MessagingCenter.Unsubscribe<CatalogViewModel, CatalogItem>(this, MessengerKeys.AddProduct); MessagingCenter.Unsubscribe<CatalogViewModel, CatalogItem>(this, MessengerKeys.AddProduct);
MessagingCenter.Subscribe<CatalogViewModel, CatalogItem>(this, MessengerKeys.AddProduct, (sender, arg) => MessagingCenter.Subscribe<CatalogViewModel, CatalogItem>(this, MessengerKeys.AddProduct, (sender, arg) =>
@ -89,7 +94,7 @@ namespace eShopOnContainers.Core.ViewModels
AddCatalogItem(arg); AddCatalogItem(arg);
}); });
return base.InitializeAsync(navigationData); await base.InitializeAsync(navigationData);
} }
private void AddCatalogItem(CatalogItem item) private void AddCatalogItem(CatalogItem item)

View File

@ -104,17 +104,6 @@ namespace eShopOnContainers.Core.ViewModels
Brands = await _productsService.GetCatalogBrandAsync(); Brands = await _productsService.GetCatalogBrandAsync();
Types = await _productsService.GetCatalogTypeAsync(); Types = await _productsService.GetCatalogTypeAsync();
var authToken = Settings.AuthAccessToken;
var userInfo = await _userService.GetUserInfoAsync(authToken);
// Update Basket
var basket = await _basketService.GetBasketAsync(userInfo.UserId, authToken);
if (basket != null && basket.Items != null && basket.Items.Any())
{
MessagingCenter.Send(this, MessengerKeys.UpdateBasket, basket.Items);
}
IsBusy = false; IsBusy = false;
} }

View File

@ -32,15 +32,14 @@ namespace eShopOnContainers.Core.Views
} }
}); });
var homeViewModel = ViewModelLocator.Instance.Resolve<CatalogViewModel>();
await homeViewModel.InitializeAsync(null);
HomeView.BindingContext = homeViewModel;
var basketViewModel = ViewModelLocator.Instance.Resolve<BasketViewModel>(); var basketViewModel = ViewModelLocator.Instance.Resolve<BasketViewModel>();
await basketViewModel.InitializeAsync(null); await basketViewModel.InitializeAsync(null);
BasketView.BindingContext = basketViewModel; BasketView.BindingContext = basketViewModel;
var homeViewModel = ViewModelLocator.Instance.Resolve<CatalogViewModel>();
await homeViewModel.InitializeAsync(null);
HomeView.BindingContext = homeViewModel;
var profileViewModel = ViewModelLocator.Instance.Resolve<ProfileViewModel>(); var profileViewModel = ViewModelLocator.Instance.Resolve<ProfileViewModel>();
await profileViewModel.InitializeAsync(null); await profileViewModel.InitializeAsync(null);
ProfileView.BindingContext = profileViewModel; ProfileView.BindingContext = profileViewModel;