diff --git a/src/Android/MainApplication.cs b/src/Android/MainApplication.cs index 847608687..7c14fd966 100644 --- a/src/Android/MainApplication.cs +++ b/src/Android/MainApplication.cs @@ -43,6 +43,11 @@ namespace Bit.Droid private void RegisterLocalServices() { + var settingsShim = new App.Migration.SettingsShim(); + ServiceContainer.Register("settingsShim", settingsShim); + App.Utilities.AppHelpers.NeedsMigration = + settingsShim.GetValueOrDefault(Constants.OldLastActivityKey, DateTime.MinValue) > DateTime.MinValue; + Refractored.FabControl.Droid.FloatingActionButtonViewRenderer.Init(); // Note: This might cause a race condition. Investigate more. Task.Run(() => diff --git a/src/Android/Migration/AndroidKeyStoreStorageService.cs b/src/Android/Migration/AndroidKeyStoreStorageService.cs index 453b0f12a..95c3a223a 100644 --- a/src/Android/Migration/AndroidKeyStoreStorageService.cs +++ b/src/Android/Migration/AndroidKeyStoreStorageService.cs @@ -12,6 +12,7 @@ using Java.Util; using Javax.Crypto.Spec; using Android.Preferences; using Bit.App.Migration; +using Bit.Core.Utilities; namespace Bit.Droid.Migration { @@ -39,7 +40,7 @@ namespace Bit.Droid.Migration _oldAndroid = Build.VERSION.SdkInt < BuildVersionCodes.M; _rsaMode = _oldAndroid ? "RSA/ECB/PKCS1Padding" : "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; - _settings = new SettingsShim(); + _settings = ServiceContainer.Resolve("settingsShim"); _keyStore = KeyStore.GetInstance(AndroidKeyStore); _keyStore.Load(null); diff --git a/src/App/Utilities/AppHelpers.cs b/src/App/Utilities/AppHelpers.cs index a914a9ea0..0ee95537d 100644 --- a/src/App/Utilities/AppHelpers.cs +++ b/src/App/Utilities/AppHelpers.cs @@ -13,6 +13,8 @@ namespace Bit.App.Utilities { public static class AppHelpers { + public static bool NeedsMigration = false; + public static async Task CipherListOptions(ContentPage page, CipherView cipher) { var platformUtilsService = ServiceContainer.Resolve("platformUtilsService"); @@ -114,17 +116,19 @@ namespace Bit.App.Utilities public static async Task PerformUpdateTasksAsync(ISyncService syncService, IDeviceActionService deviceActionService, IStorageService storageService) { - var lastSync = await syncService.GetLastSyncAsync(); var currentBuild = deviceActionService.GetBuildNumber(); var lastBuild = await storageService.GetAsync(Constants.LastBuildKey); - if(lastBuild == null) + if(!NeedsMigration) { - // Installed - } - else if(lastBuild != currentBuild) - { - // Updated - var tasks = Task.Run(() => syncService.FullSyncAsync(true)); + if(lastBuild == null) + { + // Installed + } + else if(lastBuild != currentBuild) + { + // Updated + var tasks = Task.Run(() => syncService.FullSyncAsync(true)); + } } if(lastBuild != currentBuild) { diff --git a/src/Core/Constants.cs b/src/Core/Constants.cs index 07719e9c7..66270290d 100644 --- a/src/Core/Constants.cs +++ b/src/Core/Constants.cs @@ -24,6 +24,7 @@ public static string ClearClipboardKey = "clearClipboard"; public static string LastClipboardValueKey = "lastClipboardValue"; public static string LastBuildKey = "lastBuild"; + public static string OldLastActivityKey = "other:lastActivityDate"; public const int SelectFileRequestCode = 42; public const int SelectFilePermissionRequestCode = 43; }