mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 03:52:15 +02:00
Preference upgrade for exisiting clients with custom sync value.
This commit is contained in:
parent
08887a7e24
commit
71d966c4f7
@ -26,6 +26,7 @@ import com.ichi2.anki.reviewer.Binding.Companion.keyCode
|
||||
import com.ichi2.anki.reviewer.CardSide
|
||||
import com.ichi2.anki.reviewer.FullScreenMode
|
||||
import com.ichi2.anki.reviewer.MappableBinding
|
||||
import com.ichi2.anki.web.CustomSyncServer
|
||||
import timber.log.Timber
|
||||
|
||||
private typealias VersionIdentifier = Int
|
||||
@ -75,6 +76,7 @@ object PreferenceUpgradeService {
|
||||
internal fun getAllInstances(legacyPreviousVersionCode: LegacyVersionIdentifier) = sequence<PreferenceUpgrade> {
|
||||
yield(LegacyPreferenceUpgrade(legacyPreviousVersionCode))
|
||||
yield(UpgradeVolumeButtonsToBindings())
|
||||
yield(RemoveLegacyMediaSyncUrl())
|
||||
}
|
||||
|
||||
/** Returns a list of preference upgrade classes which have not been applied */
|
||||
@ -215,5 +217,18 @@ object PreferenceUpgradeService {
|
||||
}
|
||||
|
||||
protected abstract fun upgrade(preferences: SharedPreferences)
|
||||
|
||||
/**
|
||||
* msync is a legacy URL which does not use the hostnum for load balancing
|
||||
* It was the default value in the "custom sync server" preference
|
||||
*/
|
||||
internal class RemoveLegacyMediaSyncUrl : PreferenceUpgrade(3) {
|
||||
override fun upgrade(preferences: SharedPreferences) {
|
||||
val mediaSyncUrl = CustomSyncServer.getMediaSyncUrl(preferences) ?: return
|
||||
if (mediaSyncUrl.startsWith("https://msync.ankiweb.net")) {
|
||||
preferences.edit { remove(CustomSyncServer.PREFERENCE_CUSTOM_MEDIA_SYNC_URL) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,11 +17,13 @@
|
||||
package com.ichi2.anki.servicemodel
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import androidx.core.content.edit
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.ichi2.anki.AnkiDroidApp
|
||||
import com.ichi2.anki.RobolectricTest
|
||||
import com.ichi2.anki.servicelayer.PreferenceUpgradeService
|
||||
import com.ichi2.anki.servicelayer.PreferenceUpgradeService.PreferenceUpgrade
|
||||
import com.ichi2.anki.web.CustomSyncServer
|
||||
import com.ichi2.testutils.EmptyApplication
|
||||
import org.hamcrest.CoreMatchers.equalTo
|
||||
import org.hamcrest.MatcherAssert.assertThat
|
||||
@ -100,4 +102,13 @@ class PreferenceUpgradeServiceTest : RobolectricTest() {
|
||||
equalTo(upgradeCount)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun check_custom_media_sync_url() {
|
||||
var syncURL = "https://msync.ankiweb.net"
|
||||
mPrefs.edit { putString(CustomSyncServer.PREFERENCE_CUSTOM_MEDIA_SYNC_URL, syncURL) }
|
||||
assertThat("Preference of custom media sync url is set to ($syncURL).", CustomSyncServer.getMediaSyncUrl(mPrefs).equals(syncURL))
|
||||
PreferenceUpgrade.RemoveLegacyMediaSyncUrl().performUpgrade(mPrefs)
|
||||
assertThat("Preference of custom media sync url is removed.", CustomSyncServer.getMediaSyncUrl(mPrefs).equals(null))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user