SettingsService works on iOS.
This commit is contained in:
parent
1a8215a822
commit
a86a11694a
@ -15,7 +15,6 @@ namespace eShopOnContainers
|
|||||||
public partial class App : Application
|
public partial class App : Application
|
||||||
{
|
{
|
||||||
ISettingsService _settingsService;
|
ISettingsService _settingsService;
|
||||||
bool _useMockServices;
|
|
||||||
|
|
||||||
public App()
|
public App()
|
||||||
{
|
{
|
||||||
@ -30,9 +29,9 @@ namespace eShopOnContainers
|
|||||||
|
|
||||||
private void InitApp()
|
private void InitApp()
|
||||||
{
|
{
|
||||||
_useMockServices = true;//_settingsService.UseMocks;
|
|
||||||
ViewModelLocator.RegisterDependencies(_useMockServices);
|
|
||||||
_settingsService = ViewModelLocator.Resolve<ISettingsService>();
|
_settingsService = ViewModelLocator.Resolve<ISettingsService>();
|
||||||
|
if (!_settingsService.UseMocks)
|
||||||
|
ViewModelLocator.UpdateDependencies(_settingsService.UseMocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task InitNavigation()
|
private Task InitNavigation()
|
||||||
|
@ -60,6 +60,9 @@ namespace eShopOnContainers.Core.ViewModels.Base
|
|||||||
_container.Register<IOpenUrlService, OpenUrlService>();
|
_container.Register<IOpenUrlService, OpenUrlService>();
|
||||||
_container.Register<IIdentityService, IdentityService>();
|
_container.Register<IIdentityService, IdentityService>();
|
||||||
_container.Register<IRequestProvider, RequestProvider>();
|
_container.Register<IRequestProvider, RequestProvider>();
|
||||||
|
_container.Register<IDependencyService, Services.Dependency.DependencyService>();
|
||||||
|
_container.Register<ISettingsService, SettingsService>().AsSingleton();
|
||||||
|
_container.Register<IFixUriService, FixUriService>().AsSingleton();
|
||||||
_container.Register<ILocationService, LocationService>().AsSingleton();
|
_container.Register<ILocationService, LocationService>().AsSingleton();
|
||||||
_container.Register<ICatalogService, CatalogMockService>().AsSingleton();
|
_container.Register<ICatalogService, CatalogMockService>().AsSingleton();
|
||||||
_container.Register<IBasketService, BasketMockService>().AsSingleton();
|
_container.Register<IBasketService, BasketMockService>().AsSingleton();
|
||||||
|
@ -35,7 +35,7 @@ namespace eShopOnContainers.Core.ViewModels
|
|||||||
_settingsService = settingsService;
|
_settingsService = settingsService;
|
||||||
_locationService = locationService;
|
_locationService = locationService;
|
||||||
|
|
||||||
_useAzureServices = _settingsService.UseMocks;
|
_useAzureServices = !_settingsService.UseMocks;
|
||||||
_endpoint = _settingsService.UrlBase;
|
_endpoint = _settingsService.UrlBase;
|
||||||
_latitude = double.Parse(_settingsService.Latitude, CultureInfo.CurrentCulture);
|
_latitude = double.Parse(_settingsService.Latitude, CultureInfo.CurrentCulture);
|
||||||
_longitude = double.Parse(_settingsService.Longitude, CultureInfo.CurrentCulture);
|
_longitude = double.Parse(_settingsService.Longitude, CultureInfo.CurrentCulture);
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
using Foundation;
|
using Foundation;
|
||||||
using eShopOnContainers.Core.Services.Settings;
|
using eShopOnContainers.Core.Services.Settings;
|
||||||
using eShopOnContainers.iOS.Services;
|
using eShopOnContainers.iOS.Services;
|
||||||
using System.Globalization;
|
|
||||||
|
|
||||||
[assembly: Xamarin.Forms.Dependency(typeof(SettingsServiceImplementation))]
|
[assembly: Xamarin.Forms.Dependency(typeof(SettingsServiceImplementation))]
|
||||||
namespace eShopOnContainers.iOS.Services
|
namespace eShopOnContainers.iOS.Services
|
||||||
@ -34,7 +33,7 @@ namespace eShopOnContainers.iOS.Services
|
|||||||
switch (typeCode)
|
switch (typeCode)
|
||||||
{
|
{
|
||||||
case TypeCode.Boolean:
|
case TypeCode.Boolean:
|
||||||
defaults.SetString(Convert.ToString(value, CultureInfo.InvariantCulture), key);
|
defaults.SetBool(Convert.ToBoolean(value), key);
|
||||||
break;
|
break;
|
||||||
case TypeCode.String:
|
case TypeCode.String:
|
||||||
defaults.SetString(Convert.ToString(value), key);
|
defaults.SetString(Convert.ToString(value), key);
|
||||||
@ -57,34 +56,37 @@ namespace eShopOnContainers.iOS.Services
|
|||||||
|
|
||||||
T GetValueOrDefaultInternal<T>(string key, T defaultValue = default(T))
|
T GetValueOrDefaultInternal<T>(string key, T defaultValue = default(T))
|
||||||
{
|
{
|
||||||
var defaults = GetUserDefaults();
|
lock (locker)
|
||||||
|
|
||||||
if (defaults[key] == null)
|
|
||||||
{
|
{
|
||||||
return defaultValue;
|
var defaults = GetUserDefaults();
|
||||||
}
|
|
||||||
|
|
||||||
var type = typeof(T);
|
if (defaults[key] == null)
|
||||||
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
|
{
|
||||||
{
|
return defaultValue;
|
||||||
type = Nullable.GetUnderlyingType(type);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
object value = null;
|
var type = typeof(T);
|
||||||
var typeCode = Type.GetTypeCode(type);
|
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
|
||||||
switch (typeCode)
|
{
|
||||||
{
|
type = Nullable.GetUnderlyingType(type);
|
||||||
case TypeCode.Boolean:
|
}
|
||||||
value = defaults.BoolForKey(key);
|
|
||||||
break;
|
|
||||||
case TypeCode.String:
|
|
||||||
value = defaults.StringForKey(key);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new ArgumentException($"Value of type {typeCode} is unsupported.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return null != value ? (T)value : defaultValue;
|
object value = null;
|
||||||
|
var typeCode = Type.GetTypeCode(type);
|
||||||
|
switch (typeCode)
|
||||||
|
{
|
||||||
|
case TypeCode.Boolean:
|
||||||
|
value = defaults.BoolForKey(key);
|
||||||
|
break;
|
||||||
|
case TypeCode.String:
|
||||||
|
value = defaults.StringForKey(key);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentException($"Value of type {typeCode} is unsupported.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null != value ? (T)value : defaultValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region ISettingsService Implementation
|
#region ISettingsService Implementation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user