Bitwarden-app-android-iphon.../src/Android/MainApplication.cs

82 lines
3.5 KiB
C#
Raw Normal View History

2019-03-28 01:12:44 +01:00
using System;
2019-04-11 20:14:34 +02:00
using System.IO;
2019-04-18 18:31:35 +02:00
using System.Threading.Tasks;
2019-03-28 01:12:44 +01:00
using Android.App;
using Android.Runtime;
2019-04-11 20:14:34 +02:00
using Bit.App.Abstractions;
using Bit.App.Services;
using Bit.Core.Abstractions;
using Bit.Core.Services;
using Bit.Core.Utilities;
using Bit.Droid.Services;
2019-03-28 01:12:44 +01:00
namespace Bit.Droid
{
#if DEBUG
[Application(Debuggable = true)]
#else
[Application(Debuggable = false)]
#endif
[Register("com.x8bit.bitwarden.MainApplication")]
public class MainApplication : Application
{
public MainApplication(IntPtr handle, JniHandleOwnership transer)
: base(handle, transer)
2019-04-11 20:14:34 +02:00
{
if(ServiceContainer.RegisteredServices.Count == 0)
{
RegisterLocalServices();
ServiceContainer.Init();
}
}
2019-04-10 05:24:03 +02:00
public override void OnCreate()
{
base.OnCreate();
2019-04-18 18:31:35 +02:00
Bootstrap();
2019-04-10 05:24:03 +02:00
Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this);
}
2019-04-11 20:14:34 +02:00
2019-04-18 18:31:35 +02:00
private void RegisterLocalServices()
2019-04-11 20:14:34 +02:00
{
2019-04-22 23:08:37 +02:00
FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true);
2019-04-11 20:14:34 +02:00
var preferencesStorage = new PreferencesStorageService(null);
var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var liteDbStorage = new LiteDbStorageService(Path.Combine(documentsPath, "bitwarden.db"));
var deviceActionService = new DeviceActionService();
2019-04-11 21:33:10 +02:00
var localizeService = new LocalizeService();
2019-04-19 18:29:37 +02:00
var broadcasterService = new BroadcasterService();
var messagingService = new MobileBroadcasterMessagingService(broadcasterService);
2019-04-18 16:40:57 +02:00
var i18nService = new MobileI18nService(localizeService.GetCurrentCultureInfo());
var secureStorageService = new SecureStorageService();
var cryptoPrimitiveService = new CryptoPrimitiveService();
var mobileStorageService = new MobileStorageService(preferencesStorage, liteDbStorage);
var platformUtilsService = new MobilePlatformUtilsService(deviceActionService, messagingService,
broadcasterService);
2019-04-11 20:14:34 +02:00
ServiceContainer.Register<IBroadcasterService>("broadcasterService", broadcasterService);
2019-04-18 16:40:57 +02:00
ServiceContainer.Register<IMessagingService>("messagingService", messagingService);
2019-04-11 21:33:10 +02:00
ServiceContainer.Register<ILocalizeService>("localizeService", localizeService);
2019-04-18 16:40:57 +02:00
ServiceContainer.Register<II18nService>("i18nService", i18nService);
ServiceContainer.Register<ICryptoPrimitiveService>("cryptoPrimitiveService", cryptoPrimitiveService);
ServiceContainer.Register<IStorageService>("storageService", mobileStorageService);
ServiceContainer.Register<IStorageService>("secureStorageService", secureStorageService);
2019-04-11 20:14:34 +02:00
ServiceContainer.Register<IDeviceActionService>("deviceActionService", deviceActionService);
2019-04-18 16:40:57 +02:00
ServiceContainer.Register<IPlatformUtilsService>("platformUtilsService", platformUtilsService);
2019-04-11 20:14:34 +02:00
}
2019-04-18 18:31:35 +02:00
private void Bootstrap()
{
(ServiceContainer.Resolve<II18nService>("i18nService") as MobileI18nService).Init();
ServiceContainer.Resolve<IAuthService>("authService").Init();
// Note: This is not awaited
var bootstrapTask = BootstrapAsync();
}
private async Task BootstrapAsync()
{
await ServiceContainer.Resolve<IEnvironmentService>("environmentService").SetUrlsFromStorageAsync();
}
2019-03-28 01:12:44 +01:00
}
}