mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-08-18 05:15:41 +00:00
feat: clear cw cache
This commit is contained in:
parent
d7e1da6b47
commit
ab5415f477
7 changed files with 65 additions and 0 deletions
|
|
@ -21,4 +21,11 @@ actual object ContinueWatchingEnrichmentStorage {
|
|||
?.putString(key, payload)
|
||||
?.apply()
|
||||
}
|
||||
|
||||
actual fun removePayload(key: String) {
|
||||
preferences
|
||||
?.edit()
|
||||
?.remove(key)
|
||||
?.apply()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -445,8 +445,12 @@
|
|||
<string name="settings_search_placeholder">Search settings...</string>
|
||||
<string name="settings_search_results_section">RESULTS</string>
|
||||
<string name="settings_advanced_section_startup">STARTUP</string>
|
||||
<string name="settings_advanced_section_cache">CACHE</string>
|
||||
<string name="settings_advanced_remember_last_profile">Remember Last Profile</string>
|
||||
<string name="settings_advanced_remember_last_profile_description">Remember last selected profile at startup</string>
|
||||
<string name="settings_advanced_clear_cw_cache">Clear Continue Watching Cache</string>
|
||||
<string name="settings_advanced_clear_cw_cache_subtitle">Remove cached thumbnails, titles, and enrichment data for Continue Watching</string>
|
||||
<string name="settings_advanced_clear_cw_cache_done">Cache cleared</string>
|
||||
<string name="settings_licenses_attributions_section_app">APP LICENSE</string>
|
||||
<string name="settings_licenses_attributions_section_data">DATA & SERVICES</string>
|
||||
<string name="settings_licenses_attributions_section_playback">PLAYBACK LICENSE</string>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,19 @@
|
|||
package com.nuvio.app.features.settings
|
||||
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import com.nuvio.app.features.profiles.ProfileRepository
|
||||
import com.nuvio.app.features.watchprogress.ContinueWatchingEnrichmentCache
|
||||
import nuvio.composeapp.generated.resources.Res
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_clear_cw_cache
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_clear_cw_cache_done
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_clear_cw_cache_subtitle
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_remember_last_profile
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_remember_last_profile_description
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_section_cache
|
||||
import nuvio.composeapp.generated.resources.settings_advanced_section_startup
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
|
|
@ -28,4 +37,29 @@ internal fun LazyListScope.advancedSettingsContent(
|
|||
}
|
||||
}
|
||||
}
|
||||
item {
|
||||
SettingsSection(
|
||||
title = stringResource(Res.string.settings_advanced_section_cache),
|
||||
isTablet = isTablet,
|
||||
) {
|
||||
SettingsGroup(isTablet = isTablet) {
|
||||
var cleared by rememberSaveable { mutableStateOf(false) }
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.settings_advanced_clear_cw_cache),
|
||||
description = if (cleared) {
|
||||
stringResource(Res.string.settings_advanced_clear_cw_cache_done)
|
||||
} else {
|
||||
stringResource(Res.string.settings_advanced_clear_cw_cache_subtitle)
|
||||
},
|
||||
isTablet = isTablet,
|
||||
onClick = {
|
||||
if (!cleared) {
|
||||
ContinueWatchingEnrichmentCache.clearAll()
|
||||
cleared = true
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -388,6 +388,16 @@ internal fun settingsSearchEntries(
|
|||
category = advancedCategory,
|
||||
icon = Icons.Rounded.Tune,
|
||||
)
|
||||
addRow(
|
||||
page = SettingsPage.Advanced,
|
||||
key = "clear-cw-cache",
|
||||
title = stringResource(Res.string.settings_advanced_clear_cw_cache),
|
||||
description = stringResource(Res.string.settings_advanced_clear_cw_cache_subtitle),
|
||||
pageLabel = advancedPage,
|
||||
section = stringResource(Res.string.settings_advanced_section_cache),
|
||||
category = advancedCategory,
|
||||
icon = Icons.Rounded.Tune,
|
||||
)
|
||||
addPage(
|
||||
page = SettingsPage.ContinueWatching,
|
||||
key = "continue-watching",
|
||||
|
|
|
|||
|
|
@ -95,6 +95,11 @@ internal object ContinueWatchingEnrichmentCache {
|
|||
lastPayloadHash = payloadHash
|
||||
}
|
||||
|
||||
fun clearAll() {
|
||||
ContinueWatchingEnrichmentStorage.removePayload(ProfileScopedKey.of(storageKey))
|
||||
lastPayloadHash = null
|
||||
}
|
||||
|
||||
private fun loadPayload(): CachedEnrichmentPayload? {
|
||||
val raw = ContinueWatchingEnrichmentStorage.loadPayload(ProfileScopedKey.of(storageKey))
|
||||
?: return null
|
||||
|
|
|
|||
|
|
@ -3,4 +3,5 @@ package com.nuvio.app.features.watchprogress
|
|||
internal expect object ContinueWatchingEnrichmentStorage {
|
||||
fun loadPayload(key: String): String?
|
||||
fun savePayload(key: String, payload: String)
|
||||
fun removePayload(key: String)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,4 +9,8 @@ actual object ContinueWatchingEnrichmentStorage {
|
|||
actual fun savePayload(key: String, payload: String) {
|
||||
NSUserDefaults.standardUserDefaults.setObject(payload, forKey = key)
|
||||
}
|
||||
|
||||
actual fun removePayload(key: String) {
|
||||
NSUserDefaults.standardUserDefaults.removeObjectForKey(key)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue