diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 592263844..594f71e55 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -116,6 +116,9 @@ class MainActivity : BaseActivity(), ActionBarProvider { onNewIntent(intent) } else if (!router!!.hasRootController()) { if (hasDb) { + if (!appPreferences.isDbRoomMigrated) { + appPreferences.isDbRoomMigrated = true + } GlobalScope.launch { usersRepository.getUsers().collect { if (it.isNotEmpty()) { diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java index c71c1008f..01ca3f7f7 100644 --- a/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java +++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java @@ -36,16 +36,23 @@ import io.requery.reactivex.ReactiveSupport; import io.requery.sql.Configuration; import io.requery.sql.EntityDataStore; import net.orange_box.storebox.StoreBox; +import net.sqlcipher.database.SQLiteDatabase; import javax.inject.Singleton; @Module public class DatabaseModule { - public static final int DB_VERSION = 8; + public static final int DB_VERSION = 7; @Provides @Singleton - public SqlCipherDatabaseSource provideSqlCipherDatabaseSource(@NonNull final Context context) { + public SqlCipherDatabaseSource provideSqlCipherDatabaseSource( + @NonNull final Context context, + final AppPreferences appPreferences) { + int version = DB_VERSION; + if (appPreferences.getIsDbRoomMigrated()) { + version++; + } return new SqlCipherDatabaseSource( context, Models.DEFAULT, @@ -57,7 +64,14 @@ public class DatabaseModule { .trim() + ".sqlite", context.getString(R.string.nc_talk_database_encryption_key), - DB_VERSION); + version) { + @Override + public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { + if (newVersion < 7) { + super.onDowngrade(db, oldVersion, newVersion); + } + } + }; } @Provides @@ -71,7 +85,7 @@ public class DatabaseModule { @Provides @Singleton public AppPreferences providePreferences(@NonNull final Context poContext) { - AppPreferences preferences = StoreBox.create(poContext, AppPreferences.class); + AppPreferences preferences = StoreBox.create(poContext, AppPreferences.class); preferences.removeLinkPreviews(); return preferences; } diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java index b542fddd6..2e5f3b69d 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java +++ b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java @@ -288,6 +288,13 @@ public interface AppPreferences { @KeyByString("db_cypher_v4_upgrade") void setIsDbCypherToUpgrade(boolean value); + + @KeyByString("db_room_migrated") + @DefaultValue(R.bool.value_false) + boolean getIsDbRoomMigrated(); + + @KeyByString("db_room_migrated") + void setIsDbRoomMigrated(boolean value); @KeyByResource(R.string.nc_settings_phone_book_integration_key) @RegisterChangeListenerMethod