Skip to content

Commit 1a8215a

Browse files
David BritchDavid Britch
authored andcommitted
Merge branch 'dev' into xamarin-settings
2 parents e358099 + d2e27b7 commit 1a8215a

17 files changed

Lines changed: 4393 additions & 65 deletions

File tree

src/Mobile/eShopOnContainers/eShopOnContainers.Core/TinyIoC/TinyIoC.cs

Lines changed: 4303 additions & 0 deletions
Large diffs are not rendered by default.

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

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using Autofac;
2-
using eShopOnContainers.Services;
1+
using eShopOnContainers.Services;
32
using System;
43
using System.Globalization;
54
using System.Reflection;
@@ -16,12 +15,13 @@
1615
using eShopOnContainers.Core.Services.Settings;
1716
using eShopOnContainers.Core.Services.FixUri;
1817
using Xamarin.Forms;
18+
using TinyIoC;
1919

2020
namespace eShopOnContainers.Core.ViewModels.Base
2121
{
2222
public static class ViewModelLocator
2323
{
24-
private static IContainer _container;
24+
private static TinyIoCContainer _container;
2525

2626
public static readonly BindableProperty AutoWireViewModelProperty =
2727
BindableProperty.CreateAttached("AutoWireViewModel", typeof(bool), typeof(ViewModelLocator), default(bool), propertyChanged: OnAutoWireViewModelChanged);
@@ -38,62 +38,62 @@ public static void SetAutoWireViewModel(BindableObject bindable, bool value)
3838

3939
public static bool UseMockService { get; set; }
4040

41-
public static void RegisterDependencies(bool useMockServices)
41+
static ViewModelLocator()
4242
{
43-
var builder = new ContainerBuilder();
43+
_container = new TinyIoCContainer();
4444

4545
// View models
46-
builder.RegisterType<BasketViewModel>();
47-
builder.RegisterType<CatalogViewModel>();
48-
builder.RegisterType<CheckoutViewModel>();
49-
builder.RegisterType<LoginViewModel>();
50-
builder.RegisterType<MainViewModel>();
51-
builder.RegisterType<OrderDetailViewModel>();
52-
builder.RegisterType<ProfileViewModel>();
53-
builder.RegisterType<SettingsViewModel>();
54-
builder.RegisterType<CampaignViewModel>();
55-
builder.RegisterType<CampaignDetailsViewModel>();
46+
_container.Register<BasketViewModel>();
47+
_container.Register<CatalogViewModel>();
48+
_container.Register<CheckoutViewModel>();
49+
_container.Register<LoginViewModel>();
50+
_container.Register<MainViewModel>();
51+
_container.Register<OrderDetailViewModel>();
52+
_container.Register<ProfileViewModel>();
53+
_container.Register<SettingsViewModel>();
54+
_container.Register<CampaignViewModel>();
55+
_container.Register<CampaignDetailsViewModel>();
5656

5757
// Services
58-
builder.RegisterType<NavigationService>().As<INavigationService>().SingleInstance();
59-
builder.RegisterType<DialogService>().As<IDialogService>();
60-
builder.RegisterType<OpenUrlService>().As<IOpenUrlService>();
61-
builder.RegisterType<IdentityService>().As<IIdentityService>();
62-
builder.RegisterType<RequestProvider>().As<IRequestProvider>();
63-
builder.RegisterType<LocationService>().As<ILocationService>().SingleInstance();
64-
builder.RegisterType<Services.Dependency.DependencyService>().As<IDependencyService>();
65-
builder.RegisterType<SettingsService>().As<ISettingsService>().SingleInstance();
66-
builder.RegisterType<FixUriService>().As<FixUriService>().SingleInstance();
58+
_container.Register<INavigationService, NavigationService>().AsSingleton();
59+
_container.Register<IDialogService, DialogService>();
60+
_container.Register<IOpenUrlService, OpenUrlService>();
61+
_container.Register<IIdentityService, IdentityService>();
62+
_container.Register<IRequestProvider, RequestProvider>();
63+
_container.Register<ILocationService, LocationService>().AsSingleton();
64+
_container.Register<ICatalogService, CatalogMockService>().AsSingleton();
65+
_container.Register<IBasketService, BasketMockService>().AsSingleton();
66+
_container.Register<IOrderService, OrderMockService>().AsSingleton();
67+
_container.Register<IUserService, UserMockService>().AsSingleton();
68+
_container.Register<ICampaignService, CampaignMockService>().AsSingleton();
69+
}
6770

71+
public static void UpdateDependencies(bool useMockServices)
72+
{
73+
// Change injected dependencies
6874
if (useMockServices)
6975
{
70-
builder.RegisterInstance(new CatalogMockService()).As<ICatalogService>();
71-
builder.RegisterInstance(new BasketMockService()).As<IBasketService>();
72-
builder.RegisterInstance(new OrderMockService()).As<IOrderService>();
73-
builder.RegisterInstance(new UserMockService()).As<IUserService>();
74-
builder.RegisterInstance(new CampaignMockService()).As<ICampaignService>();
76+
_container.Register<ICatalogService, CatalogMockService>().AsSingleton();
77+
_container.Register<IBasketService, BasketMockService>().AsSingleton();
78+
_container.Register<IOrderService, OrderMockService>().AsSingleton();
79+
_container.Register<IUserService, UserMockService>().AsSingleton();
80+
_container.Register<ICampaignService, CampaignMockService>().AsSingleton();
7581

7682
UseMockService = true;
7783
}
7884
else
7985
{
80-
builder.RegisterType<CatalogService>().As<ICatalogService>().SingleInstance();
81-
builder.RegisterType<BasketService>().As<IBasketService>().SingleInstance();
82-
builder.RegisterType<OrderService>().As<IOrderService>().SingleInstance();
83-
builder.RegisterType<UserService>().As<IUserService>().SingleInstance();
84-
builder.RegisterType<CampaignService>().As<ICampaignService>().SingleInstance();
86+
_container.Register<ICatalogService, CatalogService>().AsSingleton();
87+
_container.Register<IBasketService, BasketService>().AsSingleton();
88+
_container.Register<IOrderService, OrderService>().AsSingleton();
89+
_container.Register<IUserService, UserService>().AsSingleton();
90+
_container.Register<ICampaignService, CampaignService>().AsSingleton();
8591

8692
UseMockService = false;
8793
}
88-
89-
if (_container != null)
90-
{
91-
_container.Dispose();
92-
}
93-
_container = builder.Build();
9494
}
9595

96-
public static T Resolve<T>()
96+
public static T Resolve<T>() where T : class
9797
{
9898
return _container.Resolve<T>();
9999
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ public override Task InitializeAsync(object navigationData)
216216

217217
private async Task ToggleMockServicesAsync()
218218
{
219-
ViewModelLocator.RegisterDependencies(!UseAzureServices);
219+
ViewModelLocator.UpdateDependencies(!UseAzureServices);
220220
UpdateInfoUseAzureServices();
221221

222222
var previousPageViewModel = NavigationService.PreviousPageViewModel;
@@ -230,6 +230,7 @@ private async Task ToggleMockServicesAsync()
230230
{
231231
_settingsService.AuthAccessToken = string.Empty;
232232
_settingsService.AuthIdToken = string.Empty;
233+
233234
await NavigationService.NavigateToAsync<LoginViewModel>(new LogoutParameter { Logout = true });
234235
await NavigationService.RemoveBackStackAsync();
235236
}
@@ -239,7 +240,7 @@ private async Task ToggleMockServicesAsync()
239240

240241
private void ToggleFakeLocationAsync()
241242
{
242-
ViewModelLocator.RegisterDependencies(!UseAzureServices);
243+
ViewModelLocator.UpdateDependencies(!UseAzureServices);
243244
UpdateInfoFakeLocation();
244245
}
245246

src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
<PackageReference Include="Xam.Plugin.Geolocator" Version="3.0.4" />
1414
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.3.4" />
1515
<PackageReference Include="Xamarin.Forms" Version="2.5.0.122203" />
16-
<PackageReference Include="Autofac" Version="4.6.2" />
1716
<PackageReference Include="IdentityModel" Version="3.0.0" />
1817
</ItemGroup>
1918
<ItemGroup>
2019
<Folder Include="Services\Settings\" />
2120
<Folder Include="Services\Dependency\" />
2221
<Folder Include="Services\FixUri\" />
22+
<Folder Include="TinyIoC\" />
2323
</ItemGroup>
2424
</Project>

src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,6 @@
178178
<Reference Include="IdentityModel">
179179
<HintPath>..\..\..\..\packages\IdentityModel.3.0.0\lib\netstandard2.0\IdentityModel.dll</HintPath>
180180
</Reference>
181-
<Reference Include="Autofac">
182-
<HintPath>..\..\..\..\packages\Autofac.4.6.2\lib\netstandard1.1\Autofac.dll</HintPath>
183-
</Reference>
184181
<Reference Include="PInvoke.Windows.Core">
185182
<HintPath>..\..\..\..\packages\PInvoke.Windows.Core.0.3.2\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\PInvoke.Windows.Core.dll</HintPath>
186183
</Reference>

src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
<package id="Acr.Support" version="2.1.0" targetFramework="monoandroid80" />
44
<package id="Acr.UserDialogs" version="6.5.1" targetFramework="monoandroid80" />
55
<package id="AndHUD" version="1.2.0" targetFramework="monoandroid80" />
6-
<package id="Autofac" version="4.6.2" targetFramework="monoandroid80" />
76
<package id="IdentityModel" version="3.0.0" targetFramework="monoandroid80" />
87
<package id="Microsoft.Bcl" version="1.1.10" targetFramework="monoandroid80" />
98
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="monoandroid80" />

src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,11 @@
151151
<Reference Include="IdentityModel">
152152
<HintPath>..\..\..\..\packages\IdentityModel.3.0.0\lib\netstandard2.0\IdentityModel.dll</HintPath>
153153
</Reference>
154-
<Reference Include="Autofac">
155-
<HintPath>..\..\..\..\packages\Autofac.4.6.2\lib\netstandard1.1\Autofac.dll</HintPath>
154+
<Reference Include="Plugin.Settings.Abstractions">
155+
<HintPath>..\..\..\..\packages\Xam.Plugins.Settings.3.1.1\lib\MonoAndroid10\Plugin.Settings.Abstractions.dll</HintPath>
156+
</Reference>
157+
<Reference Include="Plugin.Settings">
158+
<HintPath>..\..\..\..\packages\Xam.Plugins.Settings.3.1.1\lib\MonoAndroid10\Plugin.Settings.dll</HintPath>
156159
</Reference>
157160
<Reference Include="Plugin.CurrentActivity">
158161
<HintPath>..\..\..\..\packages\Plugin.CurrentActivity.1.0.1\lib\MonoAndroid10\Plugin.CurrentActivity.dll</HintPath>
@@ -285,4 +288,4 @@
285288
</Target>
286289
<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')" />
287290
<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')" />
288-
</Project>
291+
</Project>

src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/packages.config

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
<package id="Acr.Support" version="2.1.0" targetFramework="monoandroid80" />
44
<package id="Acr.UserDialogs" version="6.5.1" targetFramework="monoandroid80" />
55
<package id="AndHUD" version="1.2.0" targetFramework="monoandroid80" />
6-
<package id="Autofac" version="4.6.2" targetFramework="monoandroid80" />
76
<package id="IdentityModel" version="3.0.0" targetFramework="monoandroid80" />
87
<package id="Microsoft.CSharp" version="4.3.0" targetFramework="monoandroid80" />
98
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="monoandroid80" />

src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.iOS/eShopOnContainers.TestRunner.iOS.csproj

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,6 @@
143143
<Reference Include="xunit.execution.dotnet">
144144
<HintPath>..\..\..\..\packages\xunit.extensibility.execution.2.3.1\lib\netstandard1.1\xunit.execution.dotnet.dll</HintPath>
145145
</Reference>
146-
<Reference Include="Autofac">
147-
<HintPath>..\..\..\..\packages\Autofac.4.6.2\lib\netstandard1.1\Autofac.dll</HintPath>
148-
</Reference>
149146
<Reference Include="Microsoft.CSharp" />
150147
<Reference Include="Newtonsoft.Json">
151148
<HintPath>..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll</HintPath>

src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.iOS/packages.config

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Autofac" version="4.6.2" targetFramework="xamarinios10" />
43
<package id="Microsoft.CSharp" version="4.3.0" targetFramework="xamarinios10" />
54
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="xamarinios10" />
65
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="xamarinios10" />

0 commit comments

Comments
 (0)