diff --git a/data/build.gradle b/data/build.gradle index 5284ae6b..c10e0878 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -82,7 +82,7 @@ android { } greendao { - schemaVersion 11 + schemaVersion 12 } configurations.all { diff --git a/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt b/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt index 66589972..e6869e03 100644 --- a/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt +++ b/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt @@ -580,4 +580,66 @@ class UpgradeDatabaseTest { } } + @Test + fun upgrade11To12IfOldDefaultSet() { + Upgrade0To1().applyTo(db, 0) + Upgrade1To2().applyTo(db, 1) + Upgrade2To3(context).applyTo(db, 2) + Upgrade3To4().applyTo(db, 3) + Upgrade4To5().applyTo(db, 4) + Upgrade5To6().applyTo(db, 5) + Upgrade6To7().applyTo(db, 6) + Upgrade7To8().applyTo(db, 7) + Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) + Upgrade9To10(sharedPreferencesHandler).applyTo(db, 9) + Upgrade10To11().applyTo(db, 10) + + sharedPreferencesHandler.setUpdateIntervalInDays(Optional.of(7)) + + Upgrade11To12(sharedPreferencesHandler).applyTo(db, 11) + + Assert.assertThat(sharedPreferencesHandler.updateIntervalInDays(), CoreMatchers.`is`(Optional.of(1))) + } + + @Test + fun upgrade11To12MonthlySet() { + Upgrade0To1().applyTo(db, 0) + Upgrade1To2().applyTo(db, 1) + Upgrade2To3(context).applyTo(db, 2) + Upgrade3To4().applyTo(db, 3) + Upgrade4To5().applyTo(db, 4) + Upgrade5To6().applyTo(db, 5) + Upgrade6To7().applyTo(db, 6) + Upgrade7To8().applyTo(db, 7) + Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) + Upgrade9To10(sharedPreferencesHandler).applyTo(db, 9) + Upgrade10To11().applyTo(db, 10) + + sharedPreferencesHandler.setUpdateIntervalInDays(Optional.of(30)) + + Upgrade11To12(sharedPreferencesHandler).applyTo(db, 11) + + Assert.assertThat(sharedPreferencesHandler.updateIntervalInDays(), CoreMatchers.`is`(Optional.of(1))) + } + + @Test + fun upgrade11To12MonthlyNever() { + Upgrade0To1().applyTo(db, 0) + Upgrade1To2().applyTo(db, 1) + Upgrade2To3(context).applyTo(db, 2) + Upgrade3To4().applyTo(db, 3) + Upgrade4To5().applyTo(db, 4) + Upgrade5To6().applyTo(db, 5) + Upgrade6To7().applyTo(db, 6) + Upgrade7To8().applyTo(db, 7) + Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) + Upgrade9To10(sharedPreferencesHandler).applyTo(db, 9) + Upgrade10To11().applyTo(db, 10) + + sharedPreferencesHandler.setUpdateIntervalInDays(Optional.absent()) + + Upgrade11To12(sharedPreferencesHandler).applyTo(db, 11) + + Assert.assertThat(sharedPreferencesHandler.updateIntervalInDays(), CoreMatchers.`is`(Optional.absent())) + } } diff --git a/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java b/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java index 77239abe..63566c5b 100644 --- a/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java +++ b/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java @@ -29,7 +29,8 @@ class DatabaseUpgrades { Upgrade7To8 upgrade7To8, // Upgrade8To9 upgrade8To9, // Upgrade9To10 upgrade9To10, // - Upgrade10To11 upgrade10To11 + Upgrade10To11 upgrade10To11, // + Upgrade11To12 upgrade11To12 ) { availableUpgrades = defineUpgrades( // @@ -43,7 +44,8 @@ class DatabaseUpgrades { upgrade7To8, // upgrade8To9, // upgrade9To10, // - upgrade10To11); + upgrade10To11, // + upgrade11To12); } private Map> defineUpgrades(DatabaseUpgrade... upgrades) { diff --git a/data/src/main/java/org/cryptomator/data/db/Upgrade11To12.kt b/data/src/main/java/org/cryptomator/data/db/Upgrade11To12.kt new file mode 100644 index 00000000..2ec84644 --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/db/Upgrade11To12.kt @@ -0,0 +1,17 @@ +package org.cryptomator.data.db + +import com.google.common.base.Optional +import org.cryptomator.util.SharedPreferencesHandler +import org.greenrobot.greendao.database.Database +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +internal class Upgrade11To12 @Inject constructor(private val sharedPreferencesHandler: SharedPreferencesHandler) : DatabaseUpgrade(11, 12) { + + override fun internalApplyTo(db: Database, origin: Int) { + when (sharedPreferencesHandler.updateIntervalInDays()) { + Optional.of(7), Optional.of(30) -> sharedPreferencesHandler.setUpdateIntervalInDays(Optional.of(1)) + } + } +} diff --git a/presentation/src/main/res/values/arrays.xml b/presentation/src/main/res/values/arrays.xml index 9998d544..6840e5ca 100644 --- a/presentation/src/main/res/values/arrays.xml +++ b/presentation/src/main/res/values/arrays.xml @@ -44,14 +44,10 @@ @string/update_interval_1d - @string/update_interval_1w - @string/update_interval_1m @string/update_interval_never 1 - 7 - 30 Never diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 47def0bb..915d78d0 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -600,8 +600,6 @@ Once a day - Once a week - Once a month @string/lock_timeout_never diff --git a/presentation/src/main/res/xml/preferences.xml b/presentation/src/main/res/xml/preferences.xml index be07dbd7..0ff1497c 100644 --- a/presentation/src/main/res/xml/preferences.xml +++ b/presentation/src/main/res/xml/preferences.xml @@ -244,7 +244,7 @@ android:title="@string/app_name" /> { - val updateInterval = defaultSharedPreferences.getValue(UPDATE_INTERVAL, "7") + fun updateIntervalInDays(): Optional { + val updateInterval = defaultSharedPreferences.getValue(UPDATE_INTERVAL, "1") if (updateInterval == "Never") { return Optional.absent() @@ -200,6 +200,12 @@ constructor(context: Context) : SharedPreferences.OnSharedPreferenceChangeListen return Optional.of(Integer.parseInt(updateInterval)) } + fun setUpdateIntervalInDays(days: Optional) = if (days.isPresent) { + defaultSharedPreferences.setValue(UPDATE_INTERVAL, days.get().toString()) + } else { + defaultSharedPreferences.setValue(UPDATE_INTERVAL, "Never") + } + fun lastUpdateCheck(): Date? { val date = defaultSharedPreferences.getString(LAST_UPDATE_CHECK, "") if (date.isNullOrEmpty()) { @@ -254,7 +260,7 @@ constructor(context: Context) : SharedPreferences.OnSharedPreferenceChangeListen fun vaultsRemovedDuringMigration(): Pair>? { val vaultsRemovedDuringMigrationType = defaultSharedPreferences.getString(VAULTS_REMOVED_DURING_MIGRATION_TYPE, null) val vaultsRemovedDuringMigration = defaultSharedPreferences.getString(VAULTS_REMOVED_DURING_MIGRATION, null) - return if(vaultsRemovedDuringMigrationType != null && vaultsRemovedDuringMigration != null) { + return if (vaultsRemovedDuringMigrationType != null && vaultsRemovedDuringMigration != null) { Pair(vaultsRemovedDuringMigrationType, ArrayList(vaultsRemovedDuringMigration.split(','))) } else { null