mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-19 00:11:45 +00:00
feat: add setting to disable vertical swipe gestures in player (#955)
This commit is contained in:
parent
11a1cf7ba9
commit
2db3cdabd2
8 changed files with 76 additions and 1 deletions
|
|
@ -54,6 +54,7 @@ actual object PlayerSettingsStorage {
|
||||||
private const val nextEpisodeThresholdMinutesBeforeEndKey = "next_episode_threshold_minutes_before_end_v2"
|
private const val nextEpisodeThresholdMinutesBeforeEndKey = "next_episode_threshold_minutes_before_end_v2"
|
||||||
private const val useLibassKey = "use_libass"
|
private const val useLibassKey = "use_libass"
|
||||||
private const val libassRenderTypeKey = "libass_render_type"
|
private const val libassRenderTypeKey = "libass_render_type"
|
||||||
|
private const val swipeGesturesEnabledKey = "swipe_gestures_enabled"
|
||||||
private val syncKeys = listOf(
|
private val syncKeys = listOf(
|
||||||
showLoadingOverlayKey,
|
showLoadingOverlayKey,
|
||||||
resizeModeKey,
|
resizeModeKey,
|
||||||
|
|
@ -88,6 +89,7 @@ actual object PlayerSettingsStorage {
|
||||||
nextEpisodeThresholdMinutesBeforeEndKey,
|
nextEpisodeThresholdMinutesBeforeEndKey,
|
||||||
useLibassKey,
|
useLibassKey,
|
||||||
libassRenderTypeKey,
|
libassRenderTypeKey,
|
||||||
|
swipeGesturesEnabledKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
private var preferences: SharedPreferences? = null
|
private var preferences: SharedPreferences? = null
|
||||||
|
|
@ -614,6 +616,23 @@ actual object PlayerSettingsStorage {
|
||||||
?.apply()
|
?.apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actual fun loadSwipeGesturesEnabled(): Boolean? =
|
||||||
|
preferences?.let { sharedPreferences ->
|
||||||
|
val key = ProfileScopedKey.of(swipeGesturesEnabledKey)
|
||||||
|
if (sharedPreferences.contains(key)) {
|
||||||
|
sharedPreferences.getBoolean(key, true)
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual fun saveSwipeGesturesEnabled(enabled: Boolean) {
|
||||||
|
preferences
|
||||||
|
?.edit()
|
||||||
|
?.putBoolean(ProfileScopedKey.of(swipeGesturesEnabledKey), enabled)
|
||||||
|
?.apply()
|
||||||
|
}
|
||||||
|
|
||||||
actual fun exportToSyncPayload(): JsonObject = buildJsonObject {
|
actual fun exportToSyncPayload(): JsonObject = buildJsonObject {
|
||||||
loadShowLoadingOverlay()?.let { put(showLoadingOverlayKey, encodeSyncBoolean(it)) }
|
loadShowLoadingOverlay()?.let { put(showLoadingOverlayKey, encodeSyncBoolean(it)) }
|
||||||
loadResizeMode()?.let { put(resizeModeKey, encodeSyncString(it)) }
|
loadResizeMode()?.let { put(resizeModeKey, encodeSyncString(it)) }
|
||||||
|
|
@ -648,6 +667,7 @@ actual object PlayerSettingsStorage {
|
||||||
loadNextEpisodeThresholdMinutesBeforeEnd()?.let { put(nextEpisodeThresholdMinutesBeforeEndKey, encodeSyncFloat(it)) }
|
loadNextEpisodeThresholdMinutesBeforeEnd()?.let { put(nextEpisodeThresholdMinutesBeforeEndKey, encodeSyncFloat(it)) }
|
||||||
loadUseLibass()?.let { put(useLibassKey, encodeSyncBoolean(it)) }
|
loadUseLibass()?.let { put(useLibassKey, encodeSyncBoolean(it)) }
|
||||||
loadLibassRenderType()?.let { put(libassRenderTypeKey, encodeSyncString(it)) }
|
loadLibassRenderType()?.let { put(libassRenderTypeKey, encodeSyncString(it)) }
|
||||||
|
loadSwipeGesturesEnabled()?.let { put(swipeGesturesEnabledKey, encodeSyncBoolean(it)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
||||||
|
|
@ -690,5 +710,6 @@ actual object PlayerSettingsStorage {
|
||||||
payload.decodeSyncFloat(nextEpisodeThresholdMinutesBeforeEndKey)?.let(::saveNextEpisodeThresholdMinutesBeforeEnd)
|
payload.decodeSyncFloat(nextEpisodeThresholdMinutesBeforeEndKey)?.let(::saveNextEpisodeThresholdMinutesBeforeEnd)
|
||||||
payload.decodeSyncBoolean(useLibassKey)?.let(::saveUseLibass)
|
payload.decodeSyncBoolean(useLibassKey)?.let(::saveUseLibass)
|
||||||
payload.decodeSyncString(libassRenderTypeKey)?.let(::saveLibassRenderType)
|
payload.decodeSyncString(libassRenderTypeKey)?.let(::saveLibassRenderType)
|
||||||
|
payload.decodeSyncBoolean(swipeGesturesEnabledKey)?.let(::saveSwipeGesturesEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -657,6 +657,8 @@
|
||||||
<string name="settings_playback_hold_speed">Hold Speed</string>
|
<string name="settings_playback_hold_speed">Hold Speed</string>
|
||||||
<string name="settings_playback_hold_to_speed">Hold To Speed</string>
|
<string name="settings_playback_hold_to_speed">Hold To Speed</string>
|
||||||
<string name="settings_playback_hold_to_speed_description">Long-press anywhere on the player surface to temporarily boost playback speed.</string>
|
<string name="settings_playback_hold_to_speed_description">Long-press anywhere on the player surface to temporarily boost playback speed.</string>
|
||||||
|
<string name="settings_playback_enable_swipe_gestures">Swipe Gestures</string>
|
||||||
|
<string name="settings_playback_enable_swipe_gestures_description">Allow vertical swiping on the player surface to control volume and brightness.</string>
|
||||||
<string name="settings_playback_invalid_regex_pattern">Invalid regex pattern</string>
|
<string name="settings_playback_invalid_regex_pattern">Invalid regex pattern</string>
|
||||||
<string name="settings_playback_last_link_cache_duration">Last Link Cache Duration</string>
|
<string name="settings_playback_last_link_cache_duration">Last Link Cache Duration</string>
|
||||||
<string name="settings_playback_map_dv7_to_hevc">DV7 - HEVC Fallback</string>
|
<string name="settings_playback_map_dv7_to_hevc">DV7 - HEVC Fallback</string>
|
||||||
|
|
|
||||||
|
|
@ -1454,6 +1454,7 @@ fun PlayerScreen(
|
||||||
abs(totalDx) > viewConfiguration.touchSlop &&
|
abs(totalDx) > viewConfiguration.touchSlop &&
|
||||||
abs(totalDx) > abs(totalDy)
|
abs(totalDx) > abs(totalDy)
|
||||||
val verticalDominant =
|
val verticalDominant =
|
||||||
|
playerSettingsUiState.swipeGesturesEnabled &&
|
||||||
abs(totalDy) > viewConfiguration.touchSlop && abs(totalDy) > abs(totalDx)
|
abs(totalDy) > viewConfiguration.touchSlop && abs(totalDy) > abs(totalDx)
|
||||||
|
|
||||||
gestureMode = when {
|
gestureMode = when {
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ data class PlayerSettingsUiState(
|
||||||
val nextEpisodeThresholdMinutesBeforeEnd: Float = 2f,
|
val nextEpisodeThresholdMinutesBeforeEnd: Float = 2f,
|
||||||
val useLibass: Boolean = false,
|
val useLibass: Boolean = false,
|
||||||
val libassRenderType: String = "CUES",
|
val libassRenderType: String = "CUES",
|
||||||
|
val swipeGesturesEnabled: Boolean = true,
|
||||||
)
|
)
|
||||||
|
|
||||||
object PlayerSettingsRepository {
|
object PlayerSettingsRepository {
|
||||||
|
|
@ -80,6 +81,7 @@ object PlayerSettingsRepository {
|
||||||
private var nextEpisodeThresholdMinutesBeforeEnd = 2f
|
private var nextEpisodeThresholdMinutesBeforeEnd = 2f
|
||||||
private var useLibass = false
|
private var useLibass = false
|
||||||
private var libassRenderType = "CUES"
|
private var libassRenderType = "CUES"
|
||||||
|
private var swipeGesturesEnabled = true
|
||||||
|
|
||||||
fun ensureLoaded() {
|
fun ensureLoaded() {
|
||||||
if (hasLoaded) return
|
if (hasLoaded) return
|
||||||
|
|
@ -124,6 +126,7 @@ object PlayerSettingsRepository {
|
||||||
nextEpisodeThresholdMinutesBeforeEnd = 2f
|
nextEpisodeThresholdMinutesBeforeEnd = 2f
|
||||||
useLibass = false
|
useLibass = false
|
||||||
libassRenderType = "CUES"
|
libassRenderType = "CUES"
|
||||||
|
swipeGesturesEnabled = true
|
||||||
publish()
|
publish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -195,6 +198,7 @@ object PlayerSettingsRepository {
|
||||||
nextEpisodeThresholdMinutesBeforeEnd = PlayerSettingsStorage.loadNextEpisodeThresholdMinutesBeforeEnd() ?: 2f
|
nextEpisodeThresholdMinutesBeforeEnd = PlayerSettingsStorage.loadNextEpisodeThresholdMinutesBeforeEnd() ?: 2f
|
||||||
useLibass = PlayerSettingsStorage.loadUseLibass() ?: false
|
useLibass = PlayerSettingsStorage.loadUseLibass() ?: false
|
||||||
libassRenderType = PlayerSettingsStorage.loadLibassRenderType() ?: "CUES"
|
libassRenderType = PlayerSettingsStorage.loadLibassRenderType() ?: "CUES"
|
||||||
|
swipeGesturesEnabled = PlayerSettingsStorage.loadSwipeGesturesEnabled() ?: true
|
||||||
publish()
|
publish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -464,6 +468,14 @@ object PlayerSettingsRepository {
|
||||||
PlayerSettingsStorage.saveLibassRenderType(renderType)
|
PlayerSettingsStorage.saveLibassRenderType(renderType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setSwipeGesturesEnabled(enabled: Boolean) {
|
||||||
|
ensureLoaded()
|
||||||
|
if (swipeGesturesEnabled == enabled) return
|
||||||
|
swipeGesturesEnabled = enabled
|
||||||
|
publish()
|
||||||
|
PlayerSettingsStorage.saveSwipeGesturesEnabled(enabled)
|
||||||
|
}
|
||||||
|
|
||||||
private fun publish() {
|
private fun publish() {
|
||||||
_uiState.value = PlayerSettingsUiState(
|
_uiState.value = PlayerSettingsUiState(
|
||||||
showLoadingOverlay = showLoadingOverlay,
|
showLoadingOverlay = showLoadingOverlay,
|
||||||
|
|
@ -498,6 +510,7 @@ object PlayerSettingsRepository {
|
||||||
nextEpisodeThresholdMinutesBeforeEnd = nextEpisodeThresholdMinutesBeforeEnd,
|
nextEpisodeThresholdMinutesBeforeEnd = nextEpisodeThresholdMinutesBeforeEnd,
|
||||||
useLibass = useLibass,
|
useLibass = useLibass,
|
||||||
libassRenderType = libassRenderType,
|
libassRenderType = libassRenderType,
|
||||||
|
swipeGesturesEnabled = swipeGesturesEnabled,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ internal expect object PlayerSettingsStorage {
|
||||||
fun saveUseLibass(enabled: Boolean)
|
fun saveUseLibass(enabled: Boolean)
|
||||||
fun loadLibassRenderType(): String?
|
fun loadLibassRenderType(): String?
|
||||||
fun saveLibassRenderType(renderType: String)
|
fun saveLibassRenderType(renderType: String)
|
||||||
|
fun loadSwipeGesturesEnabled(): Boolean?
|
||||||
|
fun saveSwipeGesturesEnabled(enabled: Boolean)
|
||||||
fun exportToSyncPayload(): JsonObject
|
fun exportToSyncPayload(): JsonObject
|
||||||
fun replaceFromSyncPayload(payload: JsonObject)
|
fun replaceFromSyncPayload(payload: JsonObject)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,7 @@ internal fun LazyListScope.playbackSettingsContent(
|
||||||
tunnelingEnabled: Boolean,
|
tunnelingEnabled: Boolean,
|
||||||
useLibass: Boolean,
|
useLibass: Boolean,
|
||||||
libassRenderType: String,
|
libassRenderType: String,
|
||||||
|
swipeGesturesEnabled: Boolean,
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
PlaybackSettingsSection(
|
PlaybackSettingsSection(
|
||||||
|
|
@ -102,6 +103,7 @@ internal fun LazyListScope.playbackSettingsContent(
|
||||||
tunnelingEnabled = tunnelingEnabled,
|
tunnelingEnabled = tunnelingEnabled,
|
||||||
useLibass = useLibass,
|
useLibass = useLibass,
|
||||||
libassRenderType = libassRenderType,
|
libassRenderType = libassRenderType,
|
||||||
|
swipeGesturesEnabled = swipeGesturesEnabled,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -164,6 +166,7 @@ private fun PlaybackSettingsSection(
|
||||||
tunnelingEnabled: Boolean,
|
tunnelingEnabled: Boolean,
|
||||||
useLibass: Boolean,
|
useLibass: Boolean,
|
||||||
libassRenderType: String,
|
libassRenderType: String,
|
||||||
|
swipeGesturesEnabled: Boolean,
|
||||||
) {
|
) {
|
||||||
var showPreferredAudioDialog by remember { mutableStateOf(false) }
|
var showPreferredAudioDialog by remember { mutableStateOf(false) }
|
||||||
var showSecondaryAudioDialog by remember { mutableStateOf(false) }
|
var showSecondaryAudioDialog by remember { mutableStateOf(false) }
|
||||||
|
|
@ -222,6 +225,14 @@ private fun PlaybackSettingsSection(
|
||||||
onClick = { showHoldToSpeedValueDialog = true },
|
onClick = { showHoldToSpeedValueDialog = true },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
SettingsGroupDivider(isTablet = isTablet)
|
||||||
|
SettingsSwitchRow(
|
||||||
|
title = stringResource(Res.string.settings_playback_enable_swipe_gestures),
|
||||||
|
description = stringResource(Res.string.settings_playback_enable_swipe_gestures_description),
|
||||||
|
checked = swipeGesturesEnabled,
|
||||||
|
isTablet = isTablet,
|
||||||
|
onCheckedChange = PlayerSettingsRepository::setSwipeGesturesEnabled,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,7 @@ fun SettingsScreen(
|
||||||
tunnelingEnabled = playerSettingsUiState.tunnelingEnabled,
|
tunnelingEnabled = playerSettingsUiState.tunnelingEnabled,
|
||||||
useLibass = playerSettingsUiState.useLibass,
|
useLibass = playerSettingsUiState.useLibass,
|
||||||
libassRenderType = playerSettingsUiState.libassRenderType,
|
libassRenderType = playerSettingsUiState.libassRenderType,
|
||||||
|
swipeGesturesEnabled = playerSettingsUiState.swipeGesturesEnabled,
|
||||||
selectedTheme = selectedTheme,
|
selectedTheme = selectedTheme,
|
||||||
onThemeSelected = ThemeSettingsRepository::setTheme,
|
onThemeSelected = ThemeSettingsRepository::setTheme,
|
||||||
amoledEnabled = amoledEnabled,
|
amoledEnabled = amoledEnabled,
|
||||||
|
|
@ -238,6 +239,7 @@ fun SettingsScreen(
|
||||||
tunnelingEnabled = playerSettingsUiState.tunnelingEnabled,
|
tunnelingEnabled = playerSettingsUiState.tunnelingEnabled,
|
||||||
useLibass = playerSettingsUiState.useLibass,
|
useLibass = playerSettingsUiState.useLibass,
|
||||||
libassRenderType = playerSettingsUiState.libassRenderType,
|
libassRenderType = playerSettingsUiState.libassRenderType,
|
||||||
|
swipeGesturesEnabled = playerSettingsUiState.swipeGesturesEnabled,
|
||||||
selectedTheme = selectedTheme,
|
selectedTheme = selectedTheme,
|
||||||
onThemeSelected = ThemeSettingsRepository::setTheme,
|
onThemeSelected = ThemeSettingsRepository::setTheme,
|
||||||
amoledEnabled = amoledEnabled,
|
amoledEnabled = amoledEnabled,
|
||||||
|
|
@ -293,6 +295,7 @@ private fun MobileSettingsScreen(
|
||||||
tunnelingEnabled: Boolean,
|
tunnelingEnabled: Boolean,
|
||||||
useLibass: Boolean,
|
useLibass: Boolean,
|
||||||
libassRenderType: String,
|
libassRenderType: String,
|
||||||
|
swipeGesturesEnabled: Boolean,
|
||||||
selectedTheme: AppTheme,
|
selectedTheme: AppTheme,
|
||||||
onThemeSelected: (AppTheme) -> Unit,
|
onThemeSelected: (AppTheme) -> Unit,
|
||||||
amoledEnabled: Boolean,
|
amoledEnabled: Boolean,
|
||||||
|
|
@ -374,6 +377,7 @@ private fun MobileSettingsScreen(
|
||||||
tunnelingEnabled = tunnelingEnabled,
|
tunnelingEnabled = tunnelingEnabled,
|
||||||
useLibass = useLibass,
|
useLibass = useLibass,
|
||||||
libassRenderType = libassRenderType,
|
libassRenderType = libassRenderType,
|
||||||
|
swipeGesturesEnabled = swipeGesturesEnabled,
|
||||||
)
|
)
|
||||||
SettingsPage.Appearance -> appearanceSettingsContent(
|
SettingsPage.Appearance -> appearanceSettingsContent(
|
||||||
isTablet = false,
|
isTablet = false,
|
||||||
|
|
@ -471,6 +475,7 @@ private fun TabletSettingsScreen(
|
||||||
tunnelingEnabled: Boolean,
|
tunnelingEnabled: Boolean,
|
||||||
useLibass: Boolean,
|
useLibass: Boolean,
|
||||||
libassRenderType: String,
|
libassRenderType: String,
|
||||||
|
swipeGesturesEnabled: Boolean,
|
||||||
selectedTheme: AppTheme,
|
selectedTheme: AppTheme,
|
||||||
onThemeSelected: (AppTheme) -> Unit,
|
onThemeSelected: (AppTheme) -> Unit,
|
||||||
amoledEnabled: Boolean,
|
amoledEnabled: Boolean,
|
||||||
|
|
@ -624,6 +629,7 @@ private fun TabletSettingsScreen(
|
||||||
tunnelingEnabled = tunnelingEnabled,
|
tunnelingEnabled = tunnelingEnabled,
|
||||||
useLibass = useLibass,
|
useLibass = useLibass,
|
||||||
libassRenderType = libassRenderType,
|
libassRenderType = libassRenderType,
|
||||||
|
swipeGesturesEnabled = swipeGesturesEnabled,
|
||||||
)
|
)
|
||||||
SettingsPage.Appearance -> appearanceSettingsContent(
|
SettingsPage.Appearance -> appearanceSettingsContent(
|
||||||
isTablet = true,
|
isTablet = true,
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ actual object PlayerSettingsStorage {
|
||||||
private const val nextEpisodeThresholdMinutesBeforeEndKey = "next_episode_threshold_minutes_before_end_v2"
|
private const val nextEpisodeThresholdMinutesBeforeEndKey = "next_episode_threshold_minutes_before_end_v2"
|
||||||
private const val useLibassKey = "use_libass"
|
private const val useLibassKey = "use_libass"
|
||||||
private const val libassRenderTypeKey = "libass_render_type"
|
private const val libassRenderTypeKey = "libass_render_type"
|
||||||
|
private const val swipeGesturesEnabledKey = "swipe_gestures_enabled"
|
||||||
private val syncKeys = listOf(
|
private val syncKeys = listOf(
|
||||||
showLoadingOverlayKey,
|
showLoadingOverlayKey,
|
||||||
resizeModeKey,
|
resizeModeKey,
|
||||||
|
|
@ -86,6 +87,7 @@ actual object PlayerSettingsStorage {
|
||||||
nextEpisodeThresholdMinutesBeforeEndKey,
|
nextEpisodeThresholdMinutesBeforeEndKey,
|
||||||
useLibassKey,
|
useLibassKey,
|
||||||
libassRenderTypeKey,
|
libassRenderTypeKey,
|
||||||
|
swipeGesturesEnabledKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
actual fun loadShowLoadingOverlay(): Boolean? {
|
actual fun loadShowLoadingOverlay(): Boolean? {
|
||||||
|
|
@ -98,6 +100,21 @@ actual object PlayerSettingsStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actual fun loadSwipeGesturesEnabled(): Boolean? {
|
||||||
|
val defaults = NSUserDefaults.standardUserDefaults
|
||||||
|
val key = ProfileScopedKey.of(swipeGesturesEnabledKey)
|
||||||
|
return if (defaults.objectForKey(key) != null) {
|
||||||
|
defaults.boolForKey(key)
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual fun saveSwipeGesturesEnabled(enabled: Boolean) {
|
||||||
|
val defaults = NSUserDefaults.standardUserDefaults
|
||||||
|
defaults.setBool(enabled, ProfileScopedKey.of(swipeGesturesEnabledKey))
|
||||||
|
}
|
||||||
|
|
||||||
actual fun saveShowLoadingOverlay(enabled: Boolean) {
|
actual fun saveShowLoadingOverlay(enabled: Boolean) {
|
||||||
NSUserDefaults.standardUserDefaults.setBool(enabled, forKey = ProfileScopedKey.of(showLoadingOverlayKey))
|
NSUserDefaults.standardUserDefaults.setBool(enabled, forKey = ProfileScopedKey.of(showLoadingOverlayKey))
|
||||||
}
|
}
|
||||||
|
|
@ -552,6 +569,7 @@ actual object PlayerSettingsStorage {
|
||||||
loadNextEpisodeThresholdMinutesBeforeEnd()?.let { put(nextEpisodeThresholdMinutesBeforeEndKey, encodeSyncFloat(it)) }
|
loadNextEpisodeThresholdMinutesBeforeEnd()?.let { put(nextEpisodeThresholdMinutesBeforeEndKey, encodeSyncFloat(it)) }
|
||||||
loadUseLibass()?.let { put(useLibassKey, encodeSyncBoolean(it)) }
|
loadUseLibass()?.let { put(useLibassKey, encodeSyncBoolean(it)) }
|
||||||
loadLibassRenderType()?.let { put(libassRenderTypeKey, encodeSyncString(it)) }
|
loadLibassRenderType()?.let { put(libassRenderTypeKey, encodeSyncString(it)) }
|
||||||
|
loadSwipeGesturesEnabled()?.let { put(swipeGesturesEnabledKey, encodeSyncBoolean(it)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
||||||
|
|
@ -593,5 +611,6 @@ actual object PlayerSettingsStorage {
|
||||||
payload.decodeSyncFloat(nextEpisodeThresholdMinutesBeforeEndKey)?.let(::saveNextEpisodeThresholdMinutesBeforeEnd)
|
payload.decodeSyncFloat(nextEpisodeThresholdMinutesBeforeEndKey)?.let(::saveNextEpisodeThresholdMinutesBeforeEnd)
|
||||||
payload.decodeSyncBoolean(useLibassKey)?.let(::saveUseLibass)
|
payload.decodeSyncBoolean(useLibassKey)?.let(::saveUseLibass)
|
||||||
payload.decodeSyncString(libassRenderTypeKey)?.let(::saveLibassRenderType)
|
payload.decodeSyncString(libassRenderTypeKey)?.let(::saveLibassRenderType)
|
||||||
|
payload.decodeSyncBoolean(swipeGesturesEnabledKey)?.let(::saveSwipeGesturesEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue