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
public const string AddProduct = "AddProduct";
// Update Basket
public const string UpdateBasket = "UpdateBasket";
// Filter
public const string Filter = "Filter";

View File

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

View File

@ -104,17 +104,6 @@ namespace eShopOnContainers.Core.ViewModels
Brands = await _productsService.GetCatalogBrandAsync();
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;
}

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>();
await basketViewModel.InitializeAsync(null);
BasketView.BindingContext = basketViewModel;
var homeViewModel = ViewModelLocator.Instance.Resolve<CatalogViewModel>();
await homeViewModel.InitializeAsync(null);
HomeView.BindingContext = homeViewModel;
var profileViewModel = ViewModelLocator.Instance.Resolve<ProfileViewModel>();
await profileViewModel.InitializeAsync(null);
ProfileView.BindingContext = profileViewModel;