mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-17 15:32:01 +00:00
Update MetaDetailsScreen.kt
This commit is contained in:
parent
1e9298e1a6
commit
727b48bbc8
1 changed files with 11 additions and 34 deletions
|
|
@ -283,37 +283,15 @@ fun MetaDetailsScreen(
|
||||||
LibraryRepository.isSaved(meta.id, meta.type)
|
LibraryRepository.isSaved(meta.id, meta.type)
|
||||||
}
|
}
|
||||||
val isTraktConnected = traktAuthUiState.mode == TraktConnectionMode.CONNECTED
|
val isTraktConnected = traktAuthUiState.mode == TraktConnectionMode.CONNECTED
|
||||||
val toggleSaved = remember(meta, isTraktConnected) {
|
// TAP → always direct save/remove (toggles Trakt watchlist or local library)
|
||||||
|
val directToggleSaved = remember(meta) {
|
||||||
{
|
{
|
||||||
val libraryItem = meta.toLibraryItem(savedAtEpochMs = 0L)
|
LibraryRepository.toggleSaved(meta.toLibraryItem(savedAtEpochMs = 0L))
|
||||||
if (!isTraktConnected) {
|
|
||||||
// Not on Trakt — toggle local library directly
|
|
||||||
LibraryRepository.toggleSaved(libraryItem)
|
|
||||||
} else {
|
|
||||||
// On Trakt — tap directly toggles the watchlist (first list tab)
|
|
||||||
detailsScope.launch {
|
|
||||||
runCatching {
|
|
||||||
val snapshot = LibraryRepository.getMembershipSnapshot(libraryItem)
|
|
||||||
val tabs = LibraryRepository.traktListTabs()
|
|
||||||
// Use the first tab (watchlist) as the quick-save target
|
|
||||||
val watchlistKey = tabs.firstOrNull()?.key
|
|
||||||
if (watchlistKey != null) {
|
|
||||||
val currentlyIn = snapshot[watchlistKey] == true
|
|
||||||
val desired = tabs.associate { tab ->
|
|
||||||
tab.key to if (tab.key == watchlistKey) !currentlyIn else (snapshot[tab.key] == true)
|
|
||||||
}
|
|
||||||
LibraryRepository.applyMembershipChanges(libraryItem, desired)
|
|
||||||
}
|
|
||||||
}.onFailure { error ->
|
|
||||||
pickerError = error.message ?: getString(Res.string.trakt_lists_load_failed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Unit
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val openListPicker = remember(meta, isTraktConnected) {
|
// LONG PRESS → open Trakt list picker (only when Trakt is connected)
|
||||||
if (!isTraktConnected) null else ({
|
val openListPicker: (() -> Unit)? = if (isTraktConnected) remember(meta) {
|
||||||
|
{
|
||||||
val libraryItem = meta.toLibraryItem(savedAtEpochMs = 0L)
|
val libraryItem = meta.toLibraryItem(savedAtEpochMs = 0L)
|
||||||
pickerTabs = LibraryRepository.traktListTabs()
|
pickerTabs = LibraryRepository.traktListTabs()
|
||||||
pickerMembership = pickerTabs.associate { it.key to false }
|
pickerMembership = pickerTabs.associate { it.key to false }
|
||||||
|
|
@ -329,13 +307,12 @@ fun MetaDetailsScreen(
|
||||||
tab.key to (snapshot[tab.key] == true)
|
tab.key to (snapshot[tab.key] == true)
|
||||||
}
|
}
|
||||||
}.onFailure { error ->
|
}.onFailure { error ->
|
||||||
pickerError = error.message ?: "Failed to load Trakt lists"
|
pickerError = error.message ?: getString(Res.string.trakt_lists_load_failed)
|
||||||
}
|
}
|
||||||
pickerPending = false
|
pickerPending = false
|
||||||
}
|
}
|
||||||
Unit
|
}
|
||||||
})
|
} else null
|
||||||
}
|
|
||||||
val movieProgress = watchProgressUiState.byVideoId[meta.id]
|
val movieProgress = watchProgressUiState.byVideoId[meta.id]
|
||||||
?.takeUnless { it.isCompleted }
|
?.takeUnless { it.isCompleted }
|
||||||
val cwPrefs by ContinueWatchingPreferencesRepository.uiState.collectAsStateWithLifecycle()
|
val cwPrefs by ContinueWatchingPreferencesRepository.uiState.collectAsStateWithLifecycle()
|
||||||
|
|
@ -663,7 +640,7 @@ fun MetaDetailsScreen(
|
||||||
isSaved = isSaved,
|
isSaved = isSaved,
|
||||||
onPrimaryPlayClick = onPrimaryPlayClick,
|
onPrimaryPlayClick = onPrimaryPlayClick,
|
||||||
onPrimaryPlayLongClick = onPrimaryPlayLongClick,
|
onPrimaryPlayLongClick = onPrimaryPlayLongClick,
|
||||||
onSaveClick = toggleSaved,
|
onSaveClick = directToggleSaved,
|
||||||
onSaveLongClick = openListPicker,
|
onSaveLongClick = openListPicker,
|
||||||
showManualPlayOption = showManualPlayOption,
|
showManualPlayOption = showManualPlayOption,
|
||||||
preferredEpisodeSeasonNumber = seriesAction?.seasonNumber,
|
preferredEpisodeSeasonNumber = seriesAction?.seasonNumber,
|
||||||
|
|
@ -768,7 +745,7 @@ fun MetaDetailsScreen(
|
||||||
isSaved = isSaved,
|
isSaved = isSaved,
|
||||||
progress = headerProgress,
|
progress = headerProgress,
|
||||||
onBack = onBack,
|
onBack = onBack,
|
||||||
onToggleSaved = toggleSaved,
|
onToggleSaved = directToggleSaved,
|
||||||
modifier = Modifier.zIndex(2f),
|
modifier = Modifier.zIndex(2f),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue