mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-11 15:29:15 +01:00
drop the legacy stream-quality fallback
No need to migrate the old max_bitrate/stream_format keys.
This commit is contained in:
@@ -4,7 +4,6 @@ import android.content.Context
|
|||||||
import androidx.datastore.core.DataStore
|
import androidx.datastore.core.DataStore
|
||||||
import androidx.datastore.preferences.core.Preferences
|
import androidx.datastore.preferences.core.Preferences
|
||||||
import androidx.datastore.preferences.core.edit
|
import androidx.datastore.preferences.core.edit
|
||||||
import androidx.datastore.preferences.core.intPreferencesKey
|
|
||||||
import androidx.datastore.preferences.core.stringPreferencesKey
|
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||||
import androidx.datastore.preferences.preferencesDataStore
|
import androidx.datastore.preferences.preferencesDataStore
|
||||||
import com.subtracks.data.net.NetworkMode
|
import com.subtracks.data.net.NetworkMode
|
||||||
@@ -58,9 +57,7 @@ class UserPreferences(
|
|||||||
|
|
||||||
fun streamQuality(mode: NetworkMode): Flow<StreamQuality> =
|
fun streamQuality(mode: NetworkMode): Flow<StreamQuality> =
|
||||||
store.data.map { prefs ->
|
store.data.map { prefs ->
|
||||||
prefs[streamQualityKey(mode)]?.let(::decodeStreamQuality)
|
prefs[streamQualityKey(mode)]?.let(::decodeStreamQuality) ?: defaultStreamQuality(mode)
|
||||||
?: legacyStreamQuality(prefs)
|
|
||||||
?: defaultStreamQuality(mode)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun setStreamQuality(
|
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 =
|
private fun defaultStreamQuality(mode: NetworkMode): StreamQuality =
|
||||||
when (mode) {
|
when (mode) {
|
||||||
NetworkMode.Wifi -> StreamQuality()
|
NetworkMode.Wifi -> StreamQuality()
|
||||||
@@ -114,11 +101,6 @@ class UserPreferences(
|
|||||||
starred = StarredFilter.entries.getOrElse(parts[2].toIntOrNull() ?: 0) { StarredFilter.Any },
|
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)
|
fun createUserPreferences(context: Context): UserPreferences = UserPreferences(context.preferences)
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package com.subtracks.data.prefs
|
package com.subtracks.data.prefs
|
||||||
|
|
||||||
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
|
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 androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.subtracks.data.net.NetworkMode
|
import com.subtracks.data.net.NetworkMode
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
@@ -58,28 +55,6 @@ class UserPreferencesTest {
|
|||||||
assertEquals(StreamQuality(320, null), prefs.streamQuality(NetworkMode.Wifi).first())
|
assertEquals(StreamQuality(320, null), prefs.streamQuality(NetworkMode.Wifi).first())
|
||||||
assertEquals(StreamQuality(96, "opus"), prefs.streamQuality(NetworkMode.Mobile).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()
|
file.delete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user