0
0
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:
Piyush Goel 2021-10-20 20:43:30 +05:30 committed by Mike Hardy
parent 08887a7e24
commit 71d966c4f7
2 changed files with 26 additions and 0 deletions

View File

@ -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) }
}
}
}
}
}

View File

@ -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))
}
}