Skip to content

Commit 7b7c68d

Browse files
committed
Added Setting access from Login View (Xamarin)
1 parent 7ad7a24 commit 7b7c68d

14 files changed

Lines changed: 383 additions & 317 deletions

File tree

src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using eShopOnContainers.Services;
1+
using eShopOnContainers.Core.Helpers;
2+
using eShopOnContainers.Services;
23
using eShopOnContainers.ViewModels.Base;
34
using System.Threading.Tasks;
45
using Xamarin.Forms;
@@ -25,7 +26,7 @@ public App()
2526

2627
private void InitApp()
2728
{
28-
UseMockServices = true;
29+
UseMockServices = Settings.UseMocks;
2930

3031
ViewModelLocator.Instance.UpdateDependencies(UseMockServices);
3132
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class GlobalSetting
88
public GlobalSetting()
99
{
1010
AuthToken = "INSERT AUTHENTICATION TOKEN";
11-
BaseEndpoint = "http://10.106.144.28";
11+
BaseEndpoint = "http://13.88.8.119";
1212
}
1313

1414
public static GlobalSetting Instance

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using eShopOnContainers.ViewModels.Base;
12
using Plugin.Settings;
23
using Plugin.Settings.Abstractions;
34

@@ -22,8 +23,12 @@ private static ISettings AppSettings
2223

2324
private const string AccessToken = "access_token";
2425
private const string IdToken = "id_token";
26+
private const string IdUseMocks = "use_mocks";
27+
private const string IdUrlBase = "url_base";
2528
private static readonly string AccessTokenDefault = string.Empty;
2629
private static readonly string IdTokenDefault = string.Empty;
30+
private static readonly bool UseMocksDefault = ViewModelLocator.Instance.UseMockService;
31+
private static readonly string UrlBaseDefault = GlobalSetting.Instance.BaseEndpoint;
2732

2833
#endregion
2934

@@ -51,5 +56,30 @@ public static string AuthIdToken
5156
AppSettings.AddOrUpdateValue<string>(IdToken, value);
5257
}
5358
}
59+
60+
61+
public static bool UseMocks
62+
{
63+
get
64+
{
65+
return AppSettings.GetValueOrDefault<bool>(IdUseMocks, UseMocksDefault);
66+
}
67+
set
68+
{
69+
AppSettings.AddOrUpdateValue<bool>(IdUseMocks, value);
70+
}
71+
}
72+
73+
public static string UrlBase
74+
{
75+
get
76+
{
77+
return AppSettings.GetValueOrDefault<string>(IdUrlBase, UrlBaseDefault);
78+
}
79+
set
80+
{
81+
AppSettings.AddOrUpdateValue<string>(IdUrlBase, value);
82+
}
83+
}
5484
}
5585
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,6 @@
99
using eShopOnContainers.Core.Services.Identity;
1010
using eShopOnContainers.Core.Services.Order;
1111
using eShopOnContainers.Core.Services.User;
12-
using Xamarin.Forms;
13-
using System.Collections.Generic;
14-
using eShopOnContainers.Core.Models.Basket;
15-
using eShopOnContainers.Core.Models.Catalog;
16-
using eShopOnContainers.Core.ViewModels.Base;
17-
using eShopOnContainers.Core.Helpers;
18-
using eShopOnContainers.Core;
1912

2013
namespace eShopOnContainers.ViewModels.Base
2114
{

src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
using System.Linq;
1010
using eShopOnContainers.Core.Services.Basket;
1111
using eShopOnContainers.Core.Helpers;
12-
using System;
1312
using eShopOnContainers.Core.Services.User;
1413

1514
namespace eShopOnContainers.Core.ViewModels
@@ -121,6 +120,7 @@ public override async Task InitializeAsync(object navigationData)
121120

122121
private void AddCatalogItem(CatalogItem catalogItem)
123122
{
123+
// Add new item to Basket
124124
MessagingCenter.Send(this, MessengerKeys.AddProduct, catalogItem);
125125
}
126126

@@ -133,7 +133,7 @@ private async void Filter()
133133

134134
IsBusy = true;
135135

136-
// Filter
136+
// Filter catalog products
137137
MessagingCenter.Send(this, MessengerKeys.Filter);
138138
Products = await _productsService.FilterAsync(Brand.Id, Type.Id);
139139

src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using eShopOnContainers.Core.Services.OpenUrl;
55
using eShopOnContainers.Core.Services.User;
66
using eShopOnContainers.Core.Validations;
7-
using eShopOnContainers.Core.ViewModels.Base;
87
using eShopOnContainers.ViewModels.Base;
98
using IdentityModel.Client;
109
using System;
@@ -40,8 +39,7 @@ public LoginViewModel(
4039
_userName = new ValidatableObject<string>();
4140
_password = new ValidatableObject<string>();
4241

43-
IsMock = ViewModelLocator.Instance.UseMockService;
44-
42+
InvalidateMock();
4543
AddValidations();
4644
}
4745

@@ -214,7 +212,7 @@ private void Logout()
214212
LoginUrl = logoutRequest;
215213
}
216214

217-
if(ViewModelLocator.Instance.UseMockService)
215+
if(Settings.UseMocks)
218216
{
219217
Settings.AuthAccessToken = string.Empty;
220218
Settings.AuthIdToken = string.Empty;
@@ -266,5 +264,10 @@ private void AddValidations()
266264
_userName.Validations.Add(new IsNotNullOrEmptyRule<string> { ValidationMessage = "Username should not be empty" });
267265
_password.Validations.Add(new IsNotNullOrEmptyRule<string> { ValidationMessage = "Password should not be empty" });
268266
}
267+
268+
public void InvalidateMock()
269+
{
270+
IsMock = Settings.UseMocks;
271+
}
269272
}
270273
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@
33
using eShopOnContainers.Core.Models.Navigation;
44
using Xamarin.Forms;
55
using eShopOnContainers.Core.ViewModels.Base;
6-
using System.Windows.Input;
76

87
namespace eShopOnContainers.Core.ViewModels
98
{
109
public class MainViewModel : ViewModelBase
1110
{
12-
public ICommand SettingsCommand => new Command(Settings);
13-
1411
public override Task InitializeAsync(object navigationData)
1512
{
1613
IsBusy = true;
@@ -24,10 +21,5 @@ public override Task InitializeAsync(object navigationData)
2421

2522
return base.InitializeAsync(navigationData);
2623
}
27-
28-
private void Settings()
29-
{
30-
NavigationService.NavigateToAsync<SettingsViewModel>();
31-
}
3224
}
3325
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Windows.Input;
33
using Xamarin.Forms;
44
using System.Threading.Tasks;
5+
using eShopOnContainers.Core.Helpers;
56

67
namespace eShopOnContainers.Core.ViewModels
78
{
@@ -14,7 +15,7 @@ public class SettingsViewModel : ViewModelBase
1415

1516
public SettingsViewModel()
1617
{
17-
UseAzureServices = !ViewModelLocator.Instance.UseMockService;
18+
UseAzureServices = !Settings.UseMocks;
1819
}
1920

2021
public string Title
@@ -43,6 +44,9 @@ public bool UseAzureServices
4344
set
4445
{
4546
_useAzureServices = value;
47+
48+
// Save use mocks services to local storage
49+
Settings.UseMocks = !_useAzureServices;
4650
RaisePropertyChanged(() => UseAzureServices);
4751
}
4852
}
@@ -75,7 +79,7 @@ public override Task InitializeAsync(object navigationData)
7579
{
7680
UpdateInfo();
7781

78-
Endpoint = GlobalSetting.Instance.BaseEndpoint;
82+
Endpoint = Settings.UrlBase;
7983

8084
return base.InitializeAsync(navigationData);
8185
}
@@ -96,8 +100,8 @@ private void UpdateInfo()
96100

97101
private void UpdateEndpoint(string endpoint)
98102
{
99-
// Update remote endpoint
100-
GlobalSetting.Instance.BaseEndpoint = endpoint;
103+
// Update remote endpoint (save to local storage)
104+
Settings.UrlBase = endpoint;
101105
}
102106
}
103107
}

0 commit comments

Comments
 (0)