Bitwarden-app-android-iphon.../src/iOS.Core/Utilities/iOSCoreHelpers.cs

96 lines
4.8 KiB
C#
Raw Normal View History

2020-02-10 20:07:06 +01:00
using System;
using System.IO;
2019-06-28 14:21:44 +02:00
using System.Threading.Tasks;
using Bit.App.Abstractions;
using Bit.App.Services;
using Bit.App.Utilities;
using Bit.Core.Abstractions;
using Bit.Core.Services;
using Bit.Core.Utilities;
using Bit.iOS.Core.Services;
using Foundation;
using UIKit;
namespace Bit.iOS.Core.Utilities
{
public static class iOSCoreHelpers
{
public static string AppId = "com.8bit.bitwarden";
2019-07-05 23:10:37 +02:00
public static string AppAutofillId = "com.8bit.bitwarden.autofill";
public static string AppExtensionId = "com.8bit.bitwarden.find-login-action-extension";
2019-06-28 14:21:44 +02:00
public static string AppGroupId = "group.com.8bit.bitwarden";
public static string AccessGroup = "LTZ2PFU5D6.com.8bit.bitwarden";
public static void RegisterAppCenter()
2019-06-28 14:21:44 +02:00
{
var appCenterHelper = new AppCenterHelper(
2019-06-28 14:21:44 +02:00
ServiceContainer.Resolve<IAppIdService>("appIdService"),
ServiceContainer.Resolve<IUserService>("userService"));
var appCenterTask = appCenterHelper.InitAsync();
2019-06-28 14:21:44 +02:00
}
public static void RegisterLocalServices()
{
if (ServiceContainer.Resolve<ILogService>("logService", true) == null)
2019-06-28 14:21:44 +02:00
{
ServiceContainer.Register<ILogService>("logService", new ConsoleLogService());
}
var preferencesStorage = new PreferencesStorageService(AppGroupId);
var appGroupContainer = new NSFileManager().GetContainerUrl(AppGroupId);
var liteDbStorage = new LiteDbStorageService(
Path.Combine(appGroupContainer.Path, "Library", "bitwarden.db"));
liteDbStorage.InitAsync();
var localizeService = new LocalizeService();
var broadcasterService = new BroadcasterService();
var messagingService = new MobileBroadcasterMessagingService(broadcasterService);
var i18nService = new MobileI18nService(localizeService.GetCurrentCultureInfo());
2019-07-04 02:04:23 +02:00
var secureStorageService = new KeyChainStorageService(AppId, AccessGroup,
() => ServiceContainer.Resolve<IAppIdService>("appIdService").GetAppIdAsync());
2019-06-28 14:21:44 +02:00
var cryptoPrimitiveService = new CryptoPrimitiveService();
var mobileStorageService = new MobileStorageService(preferencesStorage, liteDbStorage);
var deviceActionService = new DeviceActionService(mobileStorageService, messagingService);
var platformUtilsService = new MobilePlatformUtilsService(deviceActionService, messagingService,
broadcasterService);
ServiceContainer.Register<IBroadcasterService>("broadcasterService", broadcasterService);
ServiceContainer.Register<IMessagingService>("messagingService", messagingService);
ServiceContainer.Register<ILocalizeService>("localizeService", localizeService);
ServiceContainer.Register<II18nService>("i18nService", i18nService);
ServiceContainer.Register<ICryptoPrimitiveService>("cryptoPrimitiveService", cryptoPrimitiveService);
ServiceContainer.Register<IStorageService>("storageService", mobileStorageService);
ServiceContainer.Register<IStorageService>("secureStorageService", secureStorageService);
ServiceContainer.Register<IDeviceActionService>("deviceActionService", deviceActionService);
ServiceContainer.Register<IPlatformUtilsService>("platformUtilsService", platformUtilsService);
}
2020-02-10 20:07:06 +01:00
public static void Bootstrap(Func<Task> postBootstrapFunc = null)
2019-06-28 14:21:44 +02:00
{
(ServiceContainer.Resolve<II18nService>("i18nService") as MobileI18nService).Init();
ServiceContainer.Resolve<IAuthService>("authService").Init();
// Note: This is not awaited
2020-02-10 20:07:06 +01:00
var bootstrapTask = BootstrapAsync(postBootstrapFunc);
2019-06-28 14:21:44 +02:00
}
public static void AppearanceAdjustments(IDeviceActionService deviceActionService)
2019-06-28 14:21:44 +02:00
{
ThemeHelpers.SetAppearance(ThemeManager.GetTheme(false), deviceActionService.UsingDarkTheme());
2019-06-28 14:21:44 +02:00
UIApplication.SharedApplication.StatusBarHidden = false;
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
}
2020-02-10 20:07:06 +01:00
private static async Task BootstrapAsync(Func<Task> postBootstrapFunc = null)
2019-06-28 14:21:44 +02:00
{
var disableFavicon = await ServiceContainer.Resolve<IStorageService>("storageService").GetAsync<bool?>(
Bit.Core.Constants.DisableFaviconKey);
await ServiceContainer.Resolve<IStateService>("stateService").SaveAsync(
Bit.Core.Constants.DisableFaviconKey, disableFavicon);
await ServiceContainer.Resolve<IEnvironmentService>("environmentService").SetUrlsFromStorageAsync();
if (postBootstrapFunc != null)
2020-02-10 20:07:06 +01:00
{
await postBootstrapFunc.Invoke();
}
2019-06-28 14:21:44 +02:00
}
}
2020-02-10 20:07:06 +01:00
}