Browse Source

SettingsService now uses Application.Current.Properties dictionary.

Platform specific settings code removed.
pull/565/head
David Britch 6 years ago
parent
commit
a627d1f9e2
11 changed files with 811 additions and 1001 deletions
  1. +0
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Extensions/ObservableExtension.cs
  2. +8
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Settings/ISettingsService.cs
  3. +0
    -13
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Settings/ISettingsServiceImplementation.cs
  4. +80
    -29
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Settings/SettingsService.cs
  5. +1
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Extensions/LocationExtensions.cs
  6. +0
    -149
      src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/SettingsServiceImplementation.cs
  7. +1
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj
  8. +227
    -227
      src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.iOS/eShopOnContainers.TestRunner.iOS.csproj
  9. +70
    -25
      src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/Mocks/MockSettingsService.cs
  10. +0
    -128
      src/Mobile/eShopOnContainers/eShopOnContainers.iOS/Services/SettingsServiceImplementation.cs
  11. +424
    -425
      src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj

+ 0
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Extensions/ObservableExtension.cs View File

@ -15,7 +15,6 @@ namespace eShopOnContainers.Core.Extensions
}
return collection;
}
}
}

+ 8
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Settings/ISettingsService.cs View File

@ -1,4 +1,6 @@
namespace eShopOnContainers.Core.Services.Settings
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.Settings
{
public interface ISettingsService
{
@ -10,5 +12,10 @@
string Latitude { get; set; }
string Longitude { get; set; }
bool AllowGpsLocation { get; set; }
bool GetValueOrDefault(string key, bool defaultValue);
string GetValueOrDefault(string key, string defaultValue);
Task AddOrUpdateValue(string key, bool value);
Task AddOrUpdateValue(string key, string value);
}
}

+ 0
- 13
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Settings/ISettingsServiceImplementation.cs View File

@ -1,13 +0,0 @@
namespace eShopOnContainers.Core.Services.Settings
{
public interface ISettingsServiceImplementation
{
bool GetValueOrDefault(string key, bool defaultValue);
string GetValueOrDefault(string key, string defaultValue);
bool AddOrUpdateValue(string key, bool value);
bool AddOrUpdateValue(string key, string value);
void Remove(string key);
}
}

+ 80
- 29
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Settings/SettingsService.cs View File

@ -1,21 +1,11 @@
using eShopOnContainers.Core.Services.Dependency;
using System;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace eShopOnContainers.Core.Services.Settings
{
public class SettingsService : ISettingsService
{
private readonly ISettingsServiceImplementation _settingsService;
ISettingsServiceImplementation AppSettings
{
get { return _settingsService; }
}
public SettingsService(IDependencyService dependencyService)
{
_settingsService = dependencyService.Get<ISettingsServiceImplementation>();
}
#region Setting Constants
private const string AccessToken = "access_token";
@ -37,52 +27,113 @@ namespace eShopOnContainers.Core.Services.Settings
#endregion
#region Settings Properties
public string AuthAccessToken
{
get => AppSettings.GetValueOrDefault(AccessToken, AccessTokenDefault);
set => AppSettings.AddOrUpdateValue(AccessToken, value);
get => GetValueOrDefault(AccessToken, AccessTokenDefault);
set => AddOrUpdateValue(AccessToken, value);
}
public string AuthIdToken
{
get => AppSettings.GetValueOrDefault(IdToken, IdTokenDefault);
set => AppSettings.AddOrUpdateValue(IdToken, value);
get => GetValueOrDefault(IdToken, IdTokenDefault);
set => AddOrUpdateValue(IdToken, value);
}
public bool UseMocks
{
get => AppSettings.GetValueOrDefault(IdUseMocks, UseMocksDefault);
set => AppSettings.AddOrUpdateValue(IdUseMocks, value);
get => GetValueOrDefault(IdUseMocks, UseMocksDefault);
set => AddOrUpdateValue(IdUseMocks, value);
}
public string UrlBase
{
get => AppSettings.GetValueOrDefault(IdUrlBase, UrlBaseDefault);
set => AppSettings.AddOrUpdateValue(IdUrlBase, value);
get => GetValueOrDefault(IdUrlBase, UrlBaseDefault);
set => AddOrUpdateValue(IdUrlBase, value);
}
public bool UseFakeLocation
{
get => AppSettings.GetValueOrDefault(IdUseFakeLocation, UseFakeLocationDefault);
set => AppSettings.AddOrUpdateValue(IdUseFakeLocation, value);
get => GetValueOrDefault(IdUseFakeLocation, UseFakeLocationDefault);
set => AddOrUpdateValue(IdUseFakeLocation, value);
}
public string Latitude
{
get => AppSettings.GetValueOrDefault(IdLatitude, FakeLatitudeDefault.ToString());
set => AppSettings.AddOrUpdateValue(IdLatitude, value);
get => GetValueOrDefault(IdLatitude, FakeLatitudeDefault.ToString());
set => AddOrUpdateValue(IdLatitude, value);
}
public string Longitude
{
get => AppSettings.GetValueOrDefault(IdLongitude, FakeLongitudeDefault.ToString());
set => AppSettings.AddOrUpdateValue(IdLongitude, value);
get => GetValueOrDefault(IdLongitude, FakeLongitudeDefault.ToString());
set => AddOrUpdateValue(IdLongitude, value);
}
public bool AllowGpsLocation
{
get => AppSettings.GetValueOrDefault(IdAllowGpsLocation, AllowGpsLocationDefault);
set => AppSettings.AddOrUpdateValue(IdAllowGpsLocation, value);
get => GetValueOrDefault(IdAllowGpsLocation, AllowGpsLocationDefault);
set => AddOrUpdateValue(IdAllowGpsLocation, value);
}
#endregion
#region Public Methods
public Task AddOrUpdateValue(string key, bool value) => AddOrUpdateValueInternal(key, value);
public Task AddOrUpdateValue(string key, string value) => AddOrUpdateValueInternal(key, value);
public bool GetValueOrDefault(string key, bool defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
public string GetValueOrDefault(string key, string defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
#endregion
#region Internal Implementation
async Task AddOrUpdateValueInternal<T>(string key, T value)
{
if (value == null)
{
await Remove(key);
}
Application.Current.Properties[key] = value;
try
{
await Application.Current.SavePropertiesAsync();
}
catch (Exception ex)
{
Console.WriteLine("Unable to save: " + key, " Message: " + ex.Message);
}
}
T GetValueOrDefaultInternal<T>(string key, T defaultValue = default(T))
{
object value = null;
if (Application.Current.Properties.ContainsKey(key))
{
value = Application.Current.Properties[key];
}
return null != value ? (T)value : defaultValue;
}
async Task Remove(string key)
{
try
{
if (Application.Current.Properties[key] != null)
{
Application.Current.Properties.Remove(key);
await Application.Current.SavePropertiesAsync();
}
}
catch (Exception ex)
{
Console.WriteLine("Unable to remove: " + key, " Message: " + ex.Message);
}
}
#endregion
}
}

+ 1
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Extensions/LocationExtensions.cs View File

@ -32,7 +32,7 @@ namespace eShopOnContainers.Droid.Extensions
{
return new DateTimeOffset(Epoch.AddMilliseconds(location.Time));
}
catch (Exception e)
catch (Exception)
{
return new DateTimeOffset(Epoch);
}


+ 0
- 149
src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/SettingsServiceImplementation.cs View File

@ -1,149 +0,0 @@
using Android.App;
using Android.Content;
using Android.Preferences;
using eShopOnContainers.Core.Services.Settings;
using eShopOnContainers.Droid.Services;
using System;
[assembly: Xamarin.Forms.Dependency(typeof(SettingsServiceImplementation))]
namespace eShopOnContainers.Droid.Services
{
public class SettingsServiceImplementation : ISettingsServiceImplementation
{
#region Internal Implementation
readonly object _locker = new object();
ISharedPreferences GetSharedPreference()
{
return PreferenceManager.GetDefaultSharedPreferences(Application.Context);
}
bool AddOrUpdateValueInternal<T>(string key, T value)
{
if (Application.Context == null)
return false;
if (value == null)
{
Remove(key);
return true;
}
var type = typeof(T);
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
type = Nullable.GetUnderlyingType(type);
}
var typeCode = Type.GetTypeCode(type);
lock (_locker)
{
using (var sharedPrefs = GetSharedPreference())
{
using (var editor = sharedPrefs.Edit())
{
switch (typeCode)
{
case TypeCode.Boolean:
editor.PutBoolean(key, Convert.ToBoolean(value));
break;
case TypeCode.String:
editor.PutString(key, Convert.ToString(value));
break;
default:
throw new ArgumentException($"Value of type {typeCode} is not supported.");
}
editor.Commit();
}
}
}
return true;
}
T GetValueOrDefaultInternal<T>(string key, T defaultValue = default(T))
{
if (Application.Context == null)
return defaultValue;
if (!Contains(key))
return defaultValue;
lock (_locker)
{
using (var sharedPrefs = GetSharedPreference())
{
var type = typeof(T);
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
type = Nullable.GetUnderlyingType(type);
}
object value = null;
var typeCode = Type.GetTypeCode(type);
switch (typeCode)
{
case TypeCode.Boolean:
value = sharedPrefs.GetBoolean(key, Convert.ToBoolean(defaultValue));
break;
case TypeCode.String:
value = sharedPrefs.GetString(key, Convert.ToString(defaultValue));
break;
default:
throw new ArgumentException($"Value of type {typeCode} is not supported.");
}
return null != value ? (T)value : defaultValue;
}
}
}
bool Contains(string key)
{
if (Application.Context == null)
return false;
lock (_locker)
{
using (var sharedPrefs = GetSharedPreference())
{
if (sharedPrefs == null)
return false;
return sharedPrefs.Contains(key);
}
}
}
#endregion
#region ISettingsServiceImplementation
public bool AddOrUpdateValue(string key, bool value) => AddOrUpdateValueInternal(key, value);
public bool AddOrUpdateValue(string key, string value) => AddOrUpdateValueInternal(key, value);
public bool GetValueOrDefault(string key, bool defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
public string GetValueOrDefault(string key, string defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
public void Remove(string key)
{
if (Application.Context == null)
return;
lock (_locker)
{
using (var sharedPrefs = GetSharedPreference())
{
using (var editor = sharedPrefs.Edit())
{
editor.Remove(key);
editor.Commit();
}
}
}
}
#endregion
}
}

+ 1
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj View File

@ -19,7 +19,7 @@
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v8.1</TargetFrameworkVersion>
<AndroidSupportedAbis>armeabi,armeabi-v7a,x86</AndroidSupportedAbis>
<AndroidStoreUncompressedFileExtensions />
<MandroidI18n />
@ -211,7 +211,6 @@
<Compile Include="Effects\CircleEffect.cs" />
<Compile Include="Effects\BaseContainerEffect.cs" />
<Compile Include="Activities\SplashActivity.cs" />
<Compile Include="Services\SettingsServiceImplementation.cs" />
<Compile Include="Services\PermissionsService.cs" />
<Compile Include="Services\LocationServiceImplementation.cs" />
<Compile Include="Services\GeolocationSingleListener.cs" />


+ 227
- 227
src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.iOS/eShopOnContainers.TestRunner.iOS.csproj View File

@ -1,232 +1,232 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props')" />
<Import Project="..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.props" Condition="Exists('..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProjectGuid>{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}</ProjectGuid>
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Exe</OutputType>
<RootNamespace>eShopOnContainers.TestRunner.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>eShopOnContainersTestRunneriOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>True</MtouchDebug>
<MtouchProfiling>False</MtouchProfiling>
<MtouchFastDev>False</MtouchFastDev>
<MtouchUseLlvm>False</MtouchUseLlvm>
<MtouchUseThumb>False</MtouchUseThumb>
<MtouchEnableBitcode>False</MtouchEnableBitcode>
<OptimizePNGs>True</OptimizePNGs>
<MtouchTlsProvider>Default</MtouchTlsProvider>
<MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
<MtouchFloat32>False</MtouchFloat32>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchLink>None</MtouchLink>
<MtouchArch>x86_64</MtouchArch>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<MtouchLink>None</MtouchLink>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Developer</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<BuildIpa>True</BuildIpa>
<CodesignProvision>Automatic:AdHoc</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\AppStore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
</PropertyGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="AppDelegate.cs" />
<None Include="app.config" />
<None Include="Info.plist" />
<Compile Include="Properties\AssemblyInfo.cs" />
<InterfaceDefinition Include="Resources\LaunchScreen.xib" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.iOS, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="Xamarin.iOS" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Net.Http" />
<Reference Include="xunit.runner.devices">
<HintPath>..\..\..\..\packages\xunit.runner.devices.2.3.3\lib\xamarinios10\xunit.runner.devices.dll</HintPath>
</Reference>
<Reference Include="xunit.runner.utility.netstandard15">
<HintPath>..\..\..\..\packages\xunit.runner.devices.2.3.3\lib\xamarinios10\xunit.runner.utility.netstandard15.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions">
<HintPath>..\..\..\..\packages\xunit.abstractions.2.0.1\lib\netstandard1.0\xunit.abstractions.dll</HintPath>
</Reference>
<Reference Include="xunit.assert">
<HintPath>..\..\..\..\packages\xunit.assert.2.3.1\lib\netstandard1.1\xunit.assert.dll</HintPath>
</Reference>
<Reference Include="xunit.core">
<HintPath>..\..\..\..\packages\xunit.extensibility.core.2.3.1\lib\netstandard1.1\xunit.core.dll</HintPath>
</Reference>
<Reference Include="xunit.execution.dotnet">
<HintPath>..\..\..\..\packages\xunit.extensibility.execution.2.3.1\lib\netstandard1.1\xunit.execution.dotnet.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit.iOS">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.iOS.dll</HintPath>
</Reference>
<Reference Include="IdentityModel">
<HintPath>..\..\..\..\packages\IdentityModel.3.0.0\lib\netstandard2.0\IdentityModel.dll</HintPath>
</Reference>
<Reference Include="Acr.Support.iOS">
<HintPath>..\..\..\..\packages\Acr.Support.2.1.0\lib\Xamarin.iOS10\Acr.Support.iOS.dll</HintPath>
</Reference>
<Reference Include="BTProgressHUD">
<HintPath>..\..\..\..\packages\BTProgressHUD.1.2.0.5\lib\Xamarin.iOS10\BTProgressHUD.dll</HintPath>
</Reference>
<Reference Include="Splat">
<HintPath>..\..\..\..\packages\Splat.2.0.0\lib\Xamarin.iOS10\Splat.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs.Interface">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.Interface.dll</HintPath>
</Reference>
<Reference Include="WebP.Touch">
<HintPath>..\..\..\..\packages\WebP.Touch.1.0.7\lib\Xamarin.iOS10\WebP.Touch.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Platform">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Platform.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms.Touch">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.Touch.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Windows.Core">
<HintPath>..\..\..\..\packages\PInvoke.Windows.Core.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Windows.Core.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Kernel32">
<HintPath>..\..\..\..\packages\PInvoke.Kernel32.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Kernel32.dll</HintPath>
</Reference>
<Reference Include="PInvoke.BCrypt">
<HintPath>..\..\..\..\packages\PInvoke.BCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.BCrypt.dll</HintPath>
</Reference>
<Reference Include="PInvoke.NCrypt">
<HintPath>..\..\..\..\packages\PInvoke.NCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.NCrypt.dll</HintPath>
</Reference>
<Reference Include="Validation">
<HintPath>..\..\..\..\packages\Validation.2.2.8\lib\dotnet\Validation.dll</HintPath>
</Reference>
<Reference Include="PCLCrypto">
<HintPath>..\..\..\..\packages\PCLCrypto.2.0.147\lib\xamarinios10\PCLCrypto.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="Entitlements.plist" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj">
<Project>{FDD910BC-DF0F-483D-B7D5-C7D831855172}</Project>
<Name>eShopOnContainers.UnitTests</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\..\..\..\packages\xunit.runner.devices.2.3.3\build\xamarinios10\xunit.runner.devices.targets" Condition="Exists('..\..\..\..\packages\xunit.runner.devices.2.3.3\build\xamarinios10\xunit.runner.devices.targets')" />
<Import Project="..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.targets" Condition="Exists('..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props')" />
<Import Project="..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.props" Condition="Exists('..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.props')" />
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProjectGuid>{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}</ProjectGuid>
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Exe</OutputType>
<RootNamespace>eShopOnContainers.TestRunner.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>eShopOnContainersTestRunneriOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props'))" />
<Error Condition="!Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets'))" />
</Target>
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets')" />
<Import Project="..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" />
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>True</MtouchDebug>
<MtouchProfiling>False</MtouchProfiling>
<MtouchFastDev>False</MtouchFastDev>
<MtouchUseLlvm>False</MtouchUseLlvm>
<MtouchUseThumb>False</MtouchUseThumb>
<MtouchEnableBitcode>False</MtouchEnableBitcode>
<OptimizePNGs>True</OptimizePNGs>
<MtouchTlsProvider>Default</MtouchTlsProvider>
<MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
<MtouchFloat32>False</MtouchFloat32>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchLink>None</MtouchLink>
<MtouchArch>x86_64</MtouchArch>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<MtouchLink>None</MtouchLink>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Developer</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<BuildIpa>True</BuildIpa>
<CodesignProvision>Automatic:AdHoc</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\AppStore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
</PropertyGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="AppDelegate.cs" />
<None Include="app.config" />
<None Include="Info.plist" />
<Compile Include="Properties\AssemblyInfo.cs" />
<InterfaceDefinition Include="Resources\LaunchScreen.xib" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.iOS, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="Xamarin.iOS" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Net.Http" />
<Reference Include="xunit.runner.devices">
<HintPath>..\..\..\..\packages\xunit.runner.devices.2.3.3\lib\xamarinios10\xunit.runner.devices.dll</HintPath>
</Reference>
<Reference Include="xunit.runner.utility.netstandard15">
<HintPath>..\..\..\..\packages\xunit.runner.devices.2.3.3\lib\xamarinios10\xunit.runner.utility.netstandard15.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions">
<HintPath>..\..\..\..\packages\xunit.abstractions.2.0.1\lib\netstandard1.0\xunit.abstractions.dll</HintPath>
</Reference>
<Reference Include="xunit.assert">
<HintPath>..\..\..\..\packages\xunit.assert.2.3.1\lib\netstandard1.1\xunit.assert.dll</HintPath>
</Reference>
<Reference Include="xunit.core">
<HintPath>..\..\..\..\packages\xunit.extensibility.core.2.3.1\lib\netstandard1.1\xunit.core.dll</HintPath>
</Reference>
<Reference Include="xunit.execution.dotnet">
<HintPath>..\..\..\..\packages\xunit.extensibility.execution.2.3.1\lib\netstandard1.1\xunit.execution.dotnet.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit.iOS">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.iOS.dll</HintPath>
</Reference>
<Reference Include="IdentityModel">
<HintPath>..\..\..\..\packages\IdentityModel.3.0.0\lib\netstandard2.0\IdentityModel.dll</HintPath>
</Reference>
<Reference Include="Acr.Support.iOS">
<HintPath>..\..\..\..\packages\Acr.Support.2.1.0\lib\Xamarin.iOS10\Acr.Support.iOS.dll</HintPath>
</Reference>
<Reference Include="BTProgressHUD">
<HintPath>..\..\..\..\packages\BTProgressHUD.1.2.0.5\lib\Xamarin.iOS10\BTProgressHUD.dll</HintPath>
</Reference>
<Reference Include="Splat">
<HintPath>..\..\..\..\packages\Splat.2.0.0\lib\Xamarin.iOS10\Splat.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs.Interface">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.Interface.dll</HintPath>
</Reference>
<Reference Include="WebP.Touch">
<HintPath>..\..\..\..\packages\WebP.Touch.1.0.7\lib\Xamarin.iOS10\WebP.Touch.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Platform">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Platform.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms.Touch">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.Touch.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Windows.Core">
<HintPath>..\..\..\..\packages\PInvoke.Windows.Core.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Windows.Core.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Kernel32">
<HintPath>..\..\..\..\packages\PInvoke.Kernel32.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Kernel32.dll</HintPath>
</Reference>
<Reference Include="PInvoke.BCrypt">
<HintPath>..\..\..\..\packages\PInvoke.BCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.BCrypt.dll</HintPath>
</Reference>
<Reference Include="PInvoke.NCrypt">
<HintPath>..\..\..\..\packages\PInvoke.NCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.NCrypt.dll</HintPath>
</Reference>
<Reference Include="Validation">
<HintPath>..\..\..\..\packages\Validation.2.2.8\lib\dotnet\Validation.dll</HintPath>
</Reference>
<Reference Include="PCLCrypto">
<HintPath>..\..\..\..\packages\PCLCrypto.2.0.147\lib\xamarinios10\PCLCrypto.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="Entitlements.plist" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj">
<Project>{FDD910BC-DF0F-483D-B7D5-C7D831855172}</Project>
<Name>eShopOnContainers.UnitTests</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\..\..\..\packages\xunit.runner.devices.2.3.3\build\xamarinios10\xunit.runner.devices.targets" Condition="Exists('..\..\..\..\packages\xunit.runner.devices.2.3.3\build\xamarinios10\xunit.runner.devices.targets')" />
<Import Project="..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.targets" Condition="Exists('..\..\..\..\packages\xunit.core.2.3.1\build\xunit.core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props'))" />
<Error Condition="!Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets'))" />
</Target>
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets')" />
<Import Project="..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" />
</Project>

+ 70
- 25
src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/Mocks/MockSettingsService.cs View File

@ -1,65 +1,110 @@
using eShopOnContainers.Core.Services.Settings;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace eShopOnContainers.UnitTests.Mocks
{
public class MockSettingsService : ISettingsService
{
string _accessTokenDefault = string.Empty;
string _idTokenDefault = string.Empty;
bool _useMocksDefault = true;
string _urlBaseDefault = "https://13.88.8.119";
bool _useFakeLocationDefault = false;
bool _allowGpsLocationDefault = false;
double _fakeLatitudeDefault = 47.604610d;
double _fakeLongitudeDefault = -122.315752d;
IDictionary<string, object> _settings = new Dictionary<string, object>();
const string AccessToken = "access_token";
const string IdToken = "id_token";
const string IdUseMocks = "use_mocks";
const string IdUrlBase = "url_base";
const string IdUseFakeLocation = "use_fake_location";
const string IdLatitude = "latitude";
const string IdLongitude = "longitude";
const string IdAllowGpsLocation = "allow_gps_location";
readonly string AccessTokenDefault = string.Empty;
readonly string IdTokenDefault = string.Empty;
readonly bool UseMocksDefault = true;
readonly bool UseFakeLocationDefault = false;
readonly bool AllowGpsLocationDefault = false;
readonly double FakeLatitudeDefault = 47.604610d;
readonly double FakeLongitudeDefault = -122.315752d;
readonly string UrlBaseDefault = "https://13.88.8.119";
public string AuthAccessToken
{
get { return _accessTokenDefault; }
set { _accessTokenDefault = value; }
get => GetValueOrDefault(AccessToken, AccessTokenDefault);
set => AddOrUpdateValue(AccessToken, value);
}
public string AuthIdToken
{
get { return _idTokenDefault; }
set { _idTokenDefault = value; }
get => GetValueOrDefault(IdToken, IdTokenDefault);
set => AddOrUpdateValue(IdToken, value);
}
public bool UseMocks
{
get { return _useMocksDefault; }
set { _useMocksDefault = value; }
get => GetValueOrDefault(IdUseMocks, UseMocksDefault);
set => AddOrUpdateValue(IdUseMocks, value);
}
public string UrlBase
{
get { return _urlBaseDefault; }
set { _urlBaseDefault = value; }
get => GetValueOrDefault(IdUrlBase, UrlBaseDefault);
set => AddOrUpdateValue(IdUrlBase, value);
}
public bool UseFakeLocation
{
get { return _useFakeLocationDefault; }
set { _useFakeLocationDefault = value; }
get => GetValueOrDefault(IdUseFakeLocation, UseFakeLocationDefault);
set => AddOrUpdateValue(IdUseFakeLocation, value);
}
public string Latitude
{
get { return _fakeLatitudeDefault.ToString(); }
set { _fakeLatitudeDefault = Convert.ToDouble(value); }
get => GetValueOrDefault(IdLatitude, FakeLatitudeDefault.ToString());
set => AddOrUpdateValue(IdLatitude, value);
}
public string Longitude
{
get { return _fakeLongitudeDefault.ToString(); }
set { _fakeLongitudeDefault = Convert.ToDouble(value); }
get => GetValueOrDefault(IdLongitude, FakeLongitudeDefault.ToString());
set => AddOrUpdateValue(IdLongitude, value);
}
public bool AllowGpsLocation
{
get { return _allowGpsLocationDefault; }
set { _allowGpsLocationDefault = value; }
get => GetValueOrDefault(IdAllowGpsLocation, AllowGpsLocationDefault);
set => AddOrUpdateValue(IdAllowGpsLocation, value);
}
public Task AddOrUpdateValue(string key, bool value) => AddOrUpdateValueInternal(key, value);
public Task AddOrUpdateValue(string key, string value) => AddOrUpdateValueInternal(key, value);
public bool GetValueOrDefault(string key, bool defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
public string GetValueOrDefault(string key, string defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
Task AddOrUpdateValueInternal<T>(string key, T value)
{
if (value == null)
{
Remove(key);
}
_settings[key] = value;
return Task.Delay(10);
}
T GetValueOrDefaultInternal<T>(string key, T defaultValue = default(T))
{
object value = null;
if (_settings.ContainsKey(key))
{
value = _settings[key];
}
return null != value ? (T)value : defaultValue;
}
void Remove(string key)
{
if (_settings[key] != null)
{
_settings.Remove(key);
}
}
}
}

+ 0
- 128
src/Mobile/eShopOnContainers/eShopOnContainers.iOS/Services/SettingsServiceImplementation.cs View File

@ -1,128 +0,0 @@
using eShopOnContainers.Core.Services.Settings;
using eShopOnContainers.iOS.Services;
using Foundation;
using System;
[assembly: Xamarin.Forms.Dependency(typeof(SettingsServiceImplementation))]
namespace eShopOnContainers.iOS.Services
{
public class SettingsServiceImplementation : ISettingsServiceImplementation
{
#region Internal Implementation
readonly object _locker = new object();
NSUserDefaults GetUserDefaults() => NSUserDefaults.StandardUserDefaults;
bool AddOrUpdateValueInternal<T>(string key, T value)
{
if (value == null)
{
Remove(key);
return true;
}
var type = typeof(T);
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
type = Nullable.GetUnderlyingType(type);
}
var typeCode = Type.GetTypeCode(type);
lock (_locker)
{
var defaults = GetUserDefaults();
switch (typeCode)
{
case TypeCode.Boolean:
defaults.SetBool(Convert.ToBoolean(value), key);
break;
case TypeCode.String:
defaults.SetString(Convert.ToString(value), key);
break;
default:
throw new ArgumentException($"Value of type {typeCode} is unsupported.");
}
try
{
defaults.Synchronize();
}
catch (Exception ex)
{
Console.WriteLine("Unable to save: " + key, " Message: " + ex.Message);
}
}
return true;
}
T GetValueOrDefaultInternal<T>(string key, T defaultValue = default(T))
{
lock (_locker)
{
var defaults = GetUserDefaults();
if (defaults[key] == null)
{
return defaultValue;
}
var type = typeof(T);
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
type = Nullable.GetUnderlyingType(type);
}
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;
}
}
#endregion
#region ISettingsServiceImplementation
public bool AddOrUpdateValue(string key, bool value) => AddOrUpdateValueInternal(key, value);
public bool AddOrUpdateValue(string key, string value) => AddOrUpdateValueInternal(key, value);
public bool GetValueOrDefault(string key, bool defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
public string GetValueOrDefault(string key, string defaultValue) => GetValueOrDefaultInternal(key, defaultValue);
public void Remove(string key)
{
lock (_locker)
{
var defaults = GetUserDefaults();
try
{
if (defaults[key] != null)
{
defaults.RemoveObject(key);
defaults.Synchronize();
}
}
catch (Exception ex)
{
Console.WriteLine("Unable to remove: " + key, " Message: " + ex.Message);
}
}
}
#endregion
}
}

+ 424
- 425
src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj View File

@ -1,429 +1,428 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6EEB23DC-7063-4444-9AF8-90DF24F549C0}</ProjectGuid>
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Exe</OutputType>
<RootNamespace>eShopOnContainers.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>eShopOnContainersiOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<SkipValidatePackageReferences>true</SkipValidatePackageReferences>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>i386, x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>True</MtouchDebug>
<MtouchProfiling>False</MtouchProfiling>
<MtouchFastDev>False</MtouchFastDev>
<MtouchUseLlvm>False</MtouchUseLlvm>
<MtouchUseThumb>False</MtouchUseThumb>
<MtouchEnableBitcode>False</MtouchEnableBitcode>
<OptimizePNGs>True</OptimizePNGs>
<MtouchTlsProvider>Default</MtouchTlsProvider>
<MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
<MtouchFloat32>False</MtouchFloat32>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchLink>None</MtouchLink>
<MtouchArch>i386, x86_64</MtouchArch>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchLink>None</MtouchLink>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Developer</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<BuildIpa>True</BuildIpa>
<CodesignProvision>Automatic:AdHoc</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\AppStore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<ItemGroup>
<Compile Include="Effects\EntryLineColorEffect.cs" />
<Compile Include="Main.cs" />
<Compile Include="AppDelegate.cs" />
<BundleResource Include="..\CommonResources\Fonts\Montserrat-Bold.ttf">
<Link>Resources\fonts\Montserrat-Bold.ttf</Link>
</BundleResource>
<BundleResource Include="..\CommonResources\Fonts\Montserrat-Regular.ttf">
<Link>Resources\fonts\Montserrat-Regular.ttf</Link>
</BundleResource>
<BundleResource Include="..\CommonResources\Fonts\SourceSansPro-Regular.ttf">
<Link>Resources\fonts\SourceSansPro-Regular.ttf</Link>
</BundleResource>
<Compile Include="Renderers\CustomTabbedPageRenderer.cs" />
<Compile Include="Renderers\SlideDownMenuPageRenderer.cs" />
<None Include="app.config" />
<None Include="Entitlements.plist" />
<None Include="Info.plist" />
<Compile Include="Properties\AssemblyInfo.cs" />
<ITunesArtwork Include="iTunesArtwork" />
<ITunesArtwork Include="iTunesArtwork@2x" />
<Compile Include="Effects\CircleEffect.cs" />
<BundleResource Include="Resources\menu_campaigns.png" />
<BundleResource Include="Resources\menu_campaigns%402x.png" />
<BundleResource Include="Resources\menu_campaigns%403x.png" />
<None Include="packages.config" />
<Compile Include="Services\SettingsServiceImplementation.cs" />
<Compile Include="Services\LocationServiceImplementation.cs" />
<Compile Include="Services\PermissionsService.cs" />
<Compile Include="Services\GeolocationSingleUpdateDelegate.cs" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-60%403x.png" />
<BundleResource Include="Resources\Icon-Small-40%403x.png" />
<BundleResource Include="Resources\Icon-Small%403x.png" />
<InterfaceDefinition Include="Resources\LaunchScreen.storyboard" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.iOS" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Net.Http" />
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.iOS">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="WebP.Touch">
<HintPath>..\..\..\..\packages\WebP.Touch.1.0.7\lib\Xamarin.iOS10\WebP.Touch.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Platform">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Platform.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms.Touch">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.Touch.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit.iOS">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.iOS.dll</HintPath>
</Reference>
<Reference Include="Plugin.Settings.Abstractions">
<HintPath>..\..\..\..\packages\Xam.Plugins.Settings.3.1.1\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Plugin.Settings">
<HintPath>..\..\..\..\packages\Xam.Plugins.Settings.3.1.1\lib\Xamarin.iOS10\Plugin.Settings.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Acr.Support.iOS">
<HintPath>..\..\..\..\packages\Acr.Support.2.1.0\lib\Xamarin.iOS10\Acr.Support.iOS.dll</HintPath>
</Reference>
<Reference Include="BTProgressHUD">
<HintPath>..\..\..\..\packages\BTProgressHUD.1.2.0.5\lib\Xamarin.iOS10\BTProgressHUD.dll</HintPath>
</Reference>
<Reference Include="Splat">
<HintPath>..\..\..\..\packages\Splat.2.0.0\lib\Xamarin.iOS10\Splat.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs.Interface">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.Interface.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Windows.Core">
<HintPath>..\..\..\..\packages\PInvoke.Windows.Core.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Windows.Core.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Kernel32">
<HintPath>..\..\..\..\packages\PInvoke.Kernel32.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Kernel32.dll</HintPath>
</Reference>
<Reference Include="PInvoke.BCrypt">
<HintPath>..\..\..\..\packages\PInvoke.BCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.BCrypt.dll</HintPath>
</Reference>
<Reference Include="PInvoke.NCrypt">
<HintPath>..\..\..\..\packages\PInvoke.NCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.NCrypt.dll</HintPath>
</Reference>
<Reference Include="Validation">
<HintPath>..\..\..\..\packages\Validation.2.2.8\lib\dotnet\Validation.dll</HintPath>
</Reference>
<Reference Include="PCLCrypto">
<HintPath>..\..\..\..\packages\PCLCrypto.2.0.147\lib\xamarinios10\PCLCrypto.dll</HintPath>
</Reference>
<Reference Include="IdentityModel">
<HintPath>..\..\..\..\packages\IdentityModel.3.0.0\lib\netstandard2.0\IdentityModel.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_01.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_03.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_02.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_04.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_05.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_cart.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_cart%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_cart%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_filter.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_filter%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_filter%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_profile.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_profile%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_profile%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\product_add.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\product_add%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\product_add%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\app_settings%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\app_settings.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\app_settings%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOff.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOff%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOff%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOn.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOn%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOn%403x.png" />
</ItemGroup>
<ItemGroup>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-60%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-76.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-76%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small-40.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small-40%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-568h%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-Portrait.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-Portrait%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-750%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-1242%403x.png">
<Visible>false</Visible>
</ImageAsset>
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Logo.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\noimage.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\default_product.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\banner.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-568h%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-Portrait.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-Portrait%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-60%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-76.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-76%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small-40.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small-40%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_campaign_01.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_campaign_02.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\default_campaign.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\eShopOnContainers.Core\eShopOnContainers.Core.csproj">
<Project>{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}</Project>
<Name>eShopOnContainers.Core</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Services\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets')" />
<Import Project="..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.props')" />
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6EEB23DC-7063-4444-9AF8-90DF24F549C0}</ProjectGuid>
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Exe</OutputType>
<RootNamespace>eShopOnContainers.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>eShopOnContainersiOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<SkipValidatePackageReferences>true</SkipValidatePackageReferences>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets'))" />
</Target>
</Project>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>i386, x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>True</MtouchDebug>
<MtouchProfiling>False</MtouchProfiling>
<MtouchFastDev>False</MtouchFastDev>
<MtouchUseLlvm>False</MtouchUseLlvm>
<MtouchUseThumb>False</MtouchUseThumb>
<MtouchEnableBitcode>False</MtouchEnableBitcode>
<OptimizePNGs>True</OptimizePNGs>
<MtouchTlsProvider>Default</MtouchTlsProvider>
<MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
<MtouchFloat32>False</MtouchFloat32>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchLink>None</MtouchLink>
<MtouchArch>i386, x86_64</MtouchArch>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchLink>None</MtouchLink>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Developer</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<BuildIpa>True</BuildIpa>
<CodesignProvision>Automatic:AdHoc</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\AppStore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<ItemGroup>
<Compile Include="Effects\EntryLineColorEffect.cs" />
<Compile Include="Main.cs" />
<Compile Include="AppDelegate.cs" />
<BundleResource Include="..\CommonResources\Fonts\Montserrat-Bold.ttf">
<Link>Resources\fonts\Montserrat-Bold.ttf</Link>
</BundleResource>
<BundleResource Include="..\CommonResources\Fonts\Montserrat-Regular.ttf">
<Link>Resources\fonts\Montserrat-Regular.ttf</Link>
</BundleResource>
<BundleResource Include="..\CommonResources\Fonts\SourceSansPro-Regular.ttf">
<Link>Resources\fonts\SourceSansPro-Regular.ttf</Link>
</BundleResource>
<Compile Include="Renderers\CustomTabbedPageRenderer.cs" />
<Compile Include="Renderers\SlideDownMenuPageRenderer.cs" />
<None Include="app.config" />
<None Include="Entitlements.plist" />
<None Include="Info.plist" />
<Compile Include="Properties\AssemblyInfo.cs" />
<ITunesArtwork Include="iTunesArtwork" />
<ITunesArtwork Include="iTunesArtwork@2x" />
<Compile Include="Effects\CircleEffect.cs" />
<BundleResource Include="Resources\menu_campaigns.png" />
<BundleResource Include="Resources\menu_campaigns%402x.png" />
<BundleResource Include="Resources\menu_campaigns%403x.png" />
<None Include="packages.config" />
<Compile Include="Services\LocationServiceImplementation.cs" />
<Compile Include="Services\PermissionsService.cs" />
<Compile Include="Services\GeolocationSingleUpdateDelegate.cs" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-60%403x.png" />
<BundleResource Include="Resources\Icon-Small-40%403x.png" />
<BundleResource Include="Resources\Icon-Small%403x.png" />
<InterfaceDefinition Include="Resources\LaunchScreen.storyboard" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.iOS" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Net.Http" />
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.iOS">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="WebP.Touch">
<HintPath>..\..\..\..\packages\WebP.Touch.1.0.7\lib\Xamarin.iOS10\WebP.Touch.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Platform">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Platform.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.dll</HintPath>
</Reference>
<Reference Include="FFImageLoading.Forms.Touch">
<HintPath>..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.3.4\lib\Xamarin.iOS10\FFImageLoading.Forms.Touch.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.dll</HintPath>
</Reference>
<Reference Include="SlideOverKit.iOS">
<HintPath>..\..\..\..\packages\SlideOverKit.2.1.5\lib\Xamarin.iOS10\SlideOverKit.iOS.dll</HintPath>
</Reference>
<Reference Include="Plugin.Settings.Abstractions">
<HintPath>..\..\..\..\packages\Xam.Plugins.Settings.3.1.1\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Plugin.Settings">
<HintPath>..\..\..\..\packages\Xam.Plugins.Settings.3.1.1\lib\Xamarin.iOS10\Plugin.Settings.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Acr.Support.iOS">
<HintPath>..\..\..\..\packages\Acr.Support.2.1.0\lib\Xamarin.iOS10\Acr.Support.iOS.dll</HintPath>
</Reference>
<Reference Include="BTProgressHUD">
<HintPath>..\..\..\..\packages\BTProgressHUD.1.2.0.5\lib\Xamarin.iOS10\BTProgressHUD.dll</HintPath>
</Reference>
<Reference Include="Splat">
<HintPath>..\..\..\..\packages\Splat.2.0.0\lib\Xamarin.iOS10\Splat.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.dll</HintPath>
</Reference>
<Reference Include="Acr.UserDialogs.Interface">
<HintPath>..\..\..\..\packages\Acr.UserDialogs.6.5.1\lib\Xamarin.iOS10\Acr.UserDialogs.Interface.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Windows.Core">
<HintPath>..\..\..\..\packages\PInvoke.Windows.Core.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Windows.Core.dll</HintPath>
</Reference>
<Reference Include="PInvoke.Kernel32">
<HintPath>..\..\..\..\packages\PInvoke.Kernel32.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Kernel32.dll</HintPath>
</Reference>
<Reference Include="PInvoke.BCrypt">
<HintPath>..\..\..\..\packages\PInvoke.BCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.BCrypt.dll</HintPath>
</Reference>
<Reference Include="PInvoke.NCrypt">
<HintPath>..\..\..\..\packages\PInvoke.NCrypt.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.NCrypt.dll</HintPath>
</Reference>
<Reference Include="Validation">
<HintPath>..\..\..\..\packages\Validation.2.2.8\lib\dotnet\Validation.dll</HintPath>
</Reference>
<Reference Include="PCLCrypto">
<HintPath>..\..\..\..\packages\PCLCrypto.2.0.147\lib\xamarinios10\PCLCrypto.dll</HintPath>
</Reference>
<Reference Include="IdentityModel">
<HintPath>..\..\..\..\packages\IdentityModel.3.0.0\lib\netstandard2.0\IdentityModel.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_01.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_03.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_02.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_04.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_product_05.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_cart.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_cart%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_cart%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_filter.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_filter%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_filter%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_profile.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_profile%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\menu_profile%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\product_add.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\product_add%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\product_add%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\app_settings%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\app_settings.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\app_settings%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOff.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOff%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOff%403x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOn.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOn%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\switchOn%403x.png" />
</ItemGroup>
<ItemGroup>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-60%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-76.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-76%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small-40.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-Small-40%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-568h%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-Portrait.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-Portrait%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-750%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\Default-1242%403x.png">
<Visible>false</Visible>
</ImageAsset>
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Logo.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\noimage.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\default_product.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\banner.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-568h%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-Portrait.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-Portrait%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-60%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-76.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-76%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small-40.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Icon-Small-40%402x.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_campaign_01.png" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\fake_campaign_02.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\default_campaign.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\eShopOnContainers.Core\eShopOnContainers.Core.csproj">
<Project>{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}</Project>
<Name>eShopOnContainers.Core</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Services\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets" Condition="Exists('..\..\..\..\packages\Xamarin.Forms.2.5.0.122203\build\netstandard1.0\Xamarin.Forms.targets')" />
<Import Project="..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets'))" />
</Target>
</Project>

Loading…
Cancel
Save