浏览代码

Enabled migration manager in MainApp

Migration manager added to DI.

Migration manager called in place of legacy migration code.

Signed-off-by: Chris Narkiewicz <hello@ezaquarii.com>
Chris Narkiewicz 5 年之前
父节点
当前提交
9ef27576e1
共有 2 个文件被更改,包括 28 次插入8 次删除
  1. 21 0
      src/main/java/com/nextcloud/client/di/AppModule.java
  2. 7 8
      src/main/java/com/owncloud/android/MainApp.java

+ 21 - 0
src/main/java/com/nextcloud/client/di/AppModule.java

@@ -25,6 +25,7 @@ import android.app.Application;
 import android.app.NotificationManager;
 import android.app.NotificationManager;
 import android.content.ContentResolver;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Context;
+import android.content.SharedPreferences;
 import android.content.res.Resources;
 import android.content.res.Resources;
 import android.os.Handler;
 import android.os.Handler;
 import android.media.AudioManager;
 import android.media.AudioManager;
@@ -32,6 +33,7 @@ import android.media.AudioManager;
 import com.nextcloud.client.account.CurrentAccountProvider;
 import com.nextcloud.client.account.CurrentAccountProvider;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.account.UserAccountManagerImpl;
 import com.nextcloud.client.account.UserAccountManagerImpl;
+import com.nextcloud.client.appinfo.AppInfo;
 import com.nextcloud.client.core.AsyncRunner;
 import com.nextcloud.client.core.AsyncRunner;
 import com.nextcloud.client.core.Clock;
 import com.nextcloud.client.core.Clock;
 import com.nextcloud.client.core.ClockImpl;
 import com.nextcloud.client.core.ClockImpl;
@@ -41,6 +43,9 @@ import com.nextcloud.client.logger.FileLogHandler;
 import com.nextcloud.client.logger.Logger;
 import com.nextcloud.client.logger.Logger;
 import com.nextcloud.client.logger.LoggerImpl;
 import com.nextcloud.client.logger.LoggerImpl;
 import com.nextcloud.client.logger.LogsRepository;
 import com.nextcloud.client.logger.LogsRepository;
+import com.nextcloud.client.migrations.Migrations;
+import com.nextcloud.client.migrations.MigrationsManager;
+import com.nextcloud.client.migrations.MigrationsManagerImpl;
 import com.nextcloud.client.network.ClientFactory;
 import com.nextcloud.client.network.ClientFactory;
 import com.owncloud.android.datamodel.ArbitraryDataProvider;
 import com.owncloud.android.datamodel.ArbitraryDataProvider;
 import com.owncloud.android.datamodel.UploadsStorageManager;
 import com.owncloud.android.datamodel.UploadsStorageManager;
@@ -172,4 +177,20 @@ class AppModule {
     EventBus eventBus() {
     EventBus eventBus() {
         return EventBus.getDefault();
         return EventBus.getDefault();
     }
     }
+
+    @Provides
+    @Singleton
+    Migrations migrations(UserAccountManager userAccountManager) {
+        return new Migrations(userAccountManager);
+    }
+
+    @Provides
+    @Singleton
+    MigrationsManager migrationsManager(Application application,
+                                        AppInfo appInfo,
+                                        AsyncRunner asyncRunner,
+                                        Migrations migrations) {
+        SharedPreferences migrationsDb = application.getSharedPreferences("migrations", Context.MODE_PRIVATE);
+        return new MigrationsManagerImpl(appInfo, migrationsDb, asyncRunner, migrations.getSteps());
+    }
 }
 }

+ 7 - 8
src/main/java/com/owncloud/android/MainApp.java

@@ -53,6 +53,7 @@ import com.nextcloud.client.errorhandling.ExceptionHandler;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.logger.LegacyLoggerAdapter;
 import com.nextcloud.client.logger.LegacyLoggerAdapter;
 import com.nextcloud.client.logger.Logger;
 import com.nextcloud.client.logger.Logger;
+import com.nextcloud.client.migrations.MigrationsManager;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.onboarding.OnboardingService;
 import com.nextcloud.client.onboarding.OnboardingService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.preferences.AppPreferences;
@@ -93,6 +94,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 
 
@@ -170,6 +172,9 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
     @Inject
     @Inject
     EventBus eventBus;
     EventBus eventBus;
 
 
+    @Inject
+    MigrationsManager migrationsManager;
+
     private PassCodeManager passCodeManager;
     private PassCodeManager passCodeManager;
 
 
     @SuppressWarnings("unused")
     @SuppressWarnings("unused")
@@ -261,14 +266,8 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
 
 
         registerActivityLifecycleCallbacks(new ActivityInjector());
         registerActivityLifecycleCallbacks(new ActivityInjector());
 
 
-        Thread t = new Thread(() -> {
-            // best place, before any access to AccountManager or database
-            if (!preferences.isUserIdMigrated()) {
-                final boolean migrated = accountManager.migrateUserId();
-                preferences.setMigratedUserId(migrated);
-            }
-        });
-        t.start();
+        int startedMigrationsCount = migrationsManager.startMigration();
+        logger.i(TAG, String.format(Locale.US, "Started %d migrations", startedMigrationsCount));
 
 
         JobManager.create(this).addJobCreator(
         JobManager.create(this).addJobCreator(
             new NCJobCreator(
             new NCJobCreator(