drop the legacy stream-quality fallback

No need to migrate the old max_bitrate/stream_format keys.
This commit is contained in:
austinried
2026-10-04 00:30:00 +00:00
parent a0647deaae
commit d21b646858
2 changed files with 1 additions and 44 deletions
@@ -4,7 +4,6 @@ import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.preferencesDataStore
import com.subtracks.data.net.NetworkMode
@@ -58,9 +57,7 @@ class UserPreferences(
fun streamQuality(mode: NetworkMode): Flow<StreamQuality> =
store.data.map { prefs ->
prefs[streamQualityKey(mode)]?.let(::decodeStreamQuality)
?: legacyStreamQuality(prefs)
?: defaultStreamQuality(mode)
prefs[streamQualityKey(mode)]?.let(::decodeStreamQuality) ?: defaultStreamQuality(mode)
}
suspend fun setStreamQuality(
@@ -86,16 +83,6 @@ class UserPreferences(
)
}
private fun legacyStreamQuality(prefs: Preferences): StreamQuality? {
val bitrate = prefs[LEGACY_BITRATE]
val format = prefs[LEGACY_FORMAT]
if (bitrate == null && format == null) return null
return StreamQuality(
maxBitrate = bitrate ?: 0,
format = format?.takeIf { it.isNotEmpty() },
)
}
private fun defaultStreamQuality(mode: NetworkMode): StreamQuality =
when (mode) {
NetworkMode.Wifi -> StreamQuality()
@@ -114,11 +101,6 @@ class UserPreferences(
starred = StarredFilter.entries.getOrElse(parts[2].toIntOrNull() ?: 0) { StarredFilter.Any },
)
}
private companion object {
val LEGACY_BITRATE = intPreferencesKey("max_bitrate")
val LEGACY_FORMAT = stringPreferencesKey("stream_format")
}
}
fun createUserPreferences(context: Context): UserPreferences = UserPreferences(context.preferences)
@@ -1,9 +1,6 @@
package com.subtracks.data.prefs
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.subtracks.data.net.NetworkMode
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -58,28 +55,6 @@ class UserPreferencesTest {
assertEquals(StreamQuality(320, null), prefs.streamQuality(NetworkMode.Wifi).first())
assertEquals(StreamQuality(96, "opus"), prefs.streamQuality(NetworkMode.Mobile).first())
file.delete()
}
@Test
fun streamQualityFallsBackToTheLegacySingleValue() =
runTest {
val file = File.createTempFile("user-prefs", ".preferences_pb").apply { delete() }
val store = PreferenceDataStoreFactory.create(scope = backgroundScope) { file }
store.edit { prefs ->
prefs[intPreferencesKey("max_bitrate")] = 192
prefs[stringPreferencesKey("stream_format")] = "mp3"
}
val prefs = UserPreferences(store)
assertEquals(StreamQuality(192, "mp3"), prefs.streamQuality(NetworkMode.Wifi).first())
assertEquals(StreamQuality(192, "mp3"), prefs.streamQuality(NetworkMode.Mobile).first())
prefs.setStreamQuality(NetworkMode.Mobile, StreamQuality(64, null))
assertEquals(StreamQuality(192, "mp3"), prefs.streamQuality(NetworkMode.Wifi).first())
assertEquals(StreamQuality(64, null), prefs.streamQuality(NetworkMode.Mobile).first())
file.delete()
}
}