From a3455599c4c0c22917d9cb5251c44c6d299796de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez=20Ruiz?= Date: Tue, 29 Nov 2016 11:14:07 +0100 Subject: [PATCH] Downgrade API Level requirements Added Settings feedback --- .../eShopOnContainers.Core/GlobalSettings.cs | 50 ++++++++++++++++--- .../Services/Basket/BasketService.cs | 6 +-- .../Services/Catalog/CatalogService.cs | 8 +-- .../Services/Identity/IdentityService.cs | 10 ++-- .../Services/Order/OrderService.cs | 8 +-- .../ViewModels/LoginViewModel.cs | 4 +- .../ViewModels/SettingsViewModel.cs | 24 +++++++++ .../Views/LoginView.xaml.cs | 5 ++ .../Views/SettingsView.xaml | 36 ++++++++++++- .../eShopOnContainers.Droid.csproj | 4 +- .../eShopOnContainers.Windows.csproj | 7 ++- 11 files changed, 129 insertions(+), 33 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs index 706f3592e..792c10deb 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs @@ -1,19 +1,53 @@ namespace eShopOnContainers.Core { - public static class GlobalSetting + public class GlobalSetting { - public const string RegisterWebsite = "http://104.40.62.65/Account/Register"; + private string _baseEndpoint; + private static readonly GlobalSetting _instance = new GlobalSetting(); - public const string CatalogEndpoint = "http://104.40.62.65:5101/"; + public GlobalSetting() + { + BaseEndpoint = "http://104.40.62.65"; + } - public const string OrdersEndpoint = "http://104.40.62.65:5102/"; + public static GlobalSetting Instance + { + get { return _instance; } + } - public const string BasketEndpoint = "http://104.40.62.65:5103/"; + public string BaseEndpoint + { + get { return _baseEndpoint; } + set + { + _baseEndpoint = value; + UpdateEndpoint(_baseEndpoint); + } + } - public const string IdentityEndpoint = "http://104.40.62.65:5105/connect/authorize"; + public string RegisterWebsite { get; set; } - public const string LogoutEndpoint = "http://104.40.62.65:5105/connect/endsession"; + public string CatalogEndpoint { get; set; } - public const string IdentityCallback = "http://localhost:5003/callback.html"; + public string OrdersEndpoint { get; set; } + + public string BasketEndpoint { get; set; } + + public string IdentityEndpoint { get; set; } + + public string LogoutEndpoint { get; set; } + + public string IdentityCallback { get; set; } + + private void UpdateEndpoint(string baseEndpoint) + { + RegisterWebsite = string.Format("{0}/Account/Register", baseEndpoint); + CatalogEndpoint = string.Format("{0}:5101", baseEndpoint); + OrdersEndpoint = string.Format("{0}:5102", baseEndpoint); + BasketEndpoint = string.Format("{0}:5103", baseEndpoint); + IdentityEndpoint = string.Format("{0}:5105/connect/authorize", baseEndpoint); + LogoutEndpoint = string.Format("{0}:5105/connect/endsession", baseEndpoint); + IdentityCallback = "http://localhost:5003/callback.html"; + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs index 2fb8c1f90..979d7188e 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs @@ -18,7 +18,7 @@ namespace eShopOnContainers.Core.Services.Basket { try { - UriBuilder builder = new UriBuilder(GlobalSetting.BasketEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint); builder.Path = guidUser; @@ -41,7 +41,7 @@ namespace eShopOnContainers.Core.Services.Basket public async Task UpdateBasketAsync(CustomerBasket customerBasket) { - UriBuilder builder = new UriBuilder(GlobalSetting.BasketEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint); string uri = builder.ToString(); @@ -52,7 +52,7 @@ namespace eShopOnContainers.Core.Services.Basket public async Task ClearBasketAsync(string guidUser) { - UriBuilder builder = new UriBuilder(GlobalSetting.BasketEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint); builder.Path = guidUser; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs index dd8118a53..9234e4059 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs @@ -21,7 +21,7 @@ namespace eShopOnContainers.Core.Services.Catalog { try { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); builder.Path = string.Format("api/v1/catalog/items/type/{0}/brand/{1}", catalogTypeId, catalogBrandId); @@ -42,7 +42,7 @@ namespace eShopOnContainers.Core.Services.Catalog { try { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); builder.Path = "api/v1/catalog/items"; @@ -68,7 +68,7 @@ namespace eShopOnContainers.Core.Services.Catalog { try { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); builder.Path = "api/v1/catalog/catalogbrands"; @@ -89,7 +89,7 @@ namespace eShopOnContainers.Core.Services.Catalog { try { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); builder.Path = "api/v1/catalog/catalogtypes"; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs index 66c60cb21..b6f61c420 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs @@ -13,15 +13,15 @@ namespace eShopOnContainers.Core.Services.Identity { // Create URI to authorize endpoint var authorizeRequest = - new AuthorizeRequest(GlobalSetting.IdentityEndpoint); + new AuthorizeRequest(GlobalSetting.Instance.IdentityEndpoint); // Dictionary with values for the authorize request var dic = new Dictionary(); - dic.Add("client_id", "js"); + dic.Add("client_id", "xamarin"); dic.Add("response_type", "id_token token"); dic.Add("scope", "openid profile basket"); - dic.Add("redirect_uri", GlobalSetting.IdentityCallback); + dic.Add("redirect_uri", GlobalSetting.Instance.IdentityCallback); dic.Add("nonce", Guid.NewGuid().ToString("N")); // Add CSRF token to protect against cross-site request forgery attacks. @@ -36,9 +36,9 @@ namespace eShopOnContainers.Core.Services.Identity public string CreateLogoutRequest(string token) { return string.Format("{0}?id_token_hint={1}&post_logout_redirect_uri={2}", - GlobalSetting.LogoutEndpoint, + GlobalSetting.Instance.LogoutEndpoint, token, - GlobalSetting.IdentityCallback); + GlobalSetting.Instance.IdentityCallback); } public string DecodeToken(string token) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs index ed8e5fb7e..50da93209 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs @@ -16,7 +16,7 @@ namespace eShopOnContainers.Core.Services.Order public async Task CreateOrderAsync(Models.Orders.Order newOrder) { - UriBuilder builder = new UriBuilder(GlobalSetting.OrdersEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); builder.Path = "api/v1/orders/new"; @@ -29,7 +29,7 @@ namespace eShopOnContainers.Core.Services.Order { try { - UriBuilder builder = new UriBuilder(GlobalSetting.OrdersEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); builder.Path = "api/v1/orders"; @@ -50,7 +50,7 @@ namespace eShopOnContainers.Core.Services.Order { try { - UriBuilder builder = new UriBuilder(GlobalSetting.OrdersEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); builder.Path = string.Format("api/v1/orders/{0}", orderId); @@ -71,7 +71,7 @@ namespace eShopOnContainers.Core.Services.Order { try { - UriBuilder builder = new UriBuilder(GlobalSetting.OrdersEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); builder.Path = "api/v1/orders/cardtypes"; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs index b17de8734..67a6b4734 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs @@ -170,7 +170,7 @@ namespace eShopOnContainers.Core.ViewModels private void Register() { - _openUrlService.OpenUrl(GlobalSetting.RegisterWebsite); + _openUrlService.OpenUrl(GlobalSetting.Instance.RegisterWebsite); } private void Logout() @@ -188,7 +188,7 @@ namespace eShopOnContainers.Core.ViewModels private async void NavigateAsync(string url) { - if (url.Contains(GlobalSetting.IdentityCallback)) + if (url.Contains(GlobalSetting.Instance.IdentityCallback)) { // Parse response var authResponse = new AuthorizeResponse(url); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs index c0455b8cb..77e0dbf9b 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs @@ -10,6 +10,7 @@ namespace eShopOnContainers.Core.ViewModels private string _title; private string _description; private bool _useAzureServices; + private string _endpoint; public SettingsViewModel() { @@ -46,6 +47,22 @@ namespace eShopOnContainers.Core.ViewModels } } + public string Endpoint + { + get { return _endpoint; } + set + { + _endpoint = value; + + if(!string.IsNullOrEmpty(_endpoint)) + { + UpdateEndpoint(_endpoint); + } + + RaisePropertyChanged(() => Endpoint); + } + } + public ICommand MockServicesCommand => new Command(MockServices); private void MockServices() @@ -58,6 +75,8 @@ namespace eShopOnContainers.Core.ViewModels { UpdateInfo(); + Endpoint = GlobalSetting.Instance.BaseEndpoint; + return base.InitializeAsync(navigationData); } @@ -74,5 +93,10 @@ namespace eShopOnContainers.Core.ViewModels Description = "Azure Services are real objects that required a valid internet connection"; } } + + private void UpdateEndpoint(string endpoint) + { + GlobalSetting.Instance.BaseEndpoint = endpoint; + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml.cs index 6ab0aa074..4d3a5762e 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml.cs @@ -31,6 +31,11 @@ namespace eShopOnContainers.Core.Views public async Task AnimateIn() { + if (Device.OS == TargetPlatform.Windows) + { + return; + } + await AnimateItem(Banner, 10500); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml index 0be02df91..b13a4855d 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml @@ -43,6 +43,18 @@ Value="12, 12, 12, 0" /> + + @@ -82,6 +94,7 @@ + - + + + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj index 6ed77d519..bff3a3eb4 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj @@ -16,8 +16,8 @@ Resources\Resource.Designer.cs Off Properties\AndroidManifest.xml - true - v7.0 + False + v6.0 armeabi,armeabi-v7a,x86 diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj index ae51ee5ab..12242a7ab 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj @@ -11,8 +11,8 @@ eShopOnContainers.Windows en-US UAP - 10.0.14393.0 - 10.0.14393.0 + 10.0.10586.0 + 10.0.10586.0 14 true 512 @@ -174,11 +174,10 @@ - + Windows Mobile Extensions for the UWP - 14.0