FOXA-3245 : marquer un épisode vu rouvre sa série dans « Reprendre » #297
No reviewers
Labels
No labels
montee-majeure
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
foXaCe/NuvioMobile!297
Loading…
Reference in a new issue
No description provided.
Delete branch "passe-20261018-153000-reprendre"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
FOXA-3245. L'écartement est une préférence : une série écartée disparaît de la rangée« Reprendre » jusqu'à ce qu'on la rouvre. Mais
markWatched(items)déléguait sans rien rouvrir :removeDismissedNextUpKeysForContentn'était appelé que par l'enregistrement d'une progression(
WatchProgressRepository.kt:1131), jamais parWatchedRepository.Deux corrections
markWatched(items)retire l'écartement des CONTENUS dont un épisodevient d'être marqué vu — avant la délégation, comme le ticket le prescrit.
removeDismissedNextUpKeysForContentne retirait quele préfixe
id|…: une clé enregistrée sans coordonnées d'épisode (idseul) survivait auretrait, et la série restait disparue. Elle retire maintenant aussi la clé exacte.
⚠ Ce qui distingue un épisode n'est pas le
typeUne marque de série et une marque d'épisode portent le même
typeet le mêmeid; seulesles coordonnées
season/episodeles séparent. Filtrer sur le type aurait rouvert la série enmarquant la série entière, ou jamais. Les identifiants sont rendus distincts : la préférence est
par contenu, pas par épisode.
Les preuves
Deux fonctions pures, pour que la règle soit mesurable sans réseau ni stockage :
identifiantsDeContenuDesEpisodes(items)etclesDEcarteApresRetrait(cles, contentId).10 tests :
show,show|1|2,show|2|1disparaissent ensembleshowlaisseautreetautre|1|1showcasen'est passhowshowvautshowCe que cette PR ne fait pas
markWatchedFromPlaybackCompletionn'est pas touché. Le ticket vise le marquage depuis la fiche ;élargir la règle à la fin de lecture est un autre geste, et il se décide — pas par effet de bord.
L'écartement est une préférence : une série écartée disparaît de la rangée « Reprendre » jusqu'à ce qu'on la rouvre. Mais `markWatched(items)` déléguait sans rien rouvrir : `[M]` `removeDismissedNextUpKeysForContent` n'était appelé que par l'enregistrement d'une progression (`WatchProgressRepository.kt:1131`), jamais par `WatchedRepository`. Deux corrections, et la seconde est un défaut de plus que le ticket nomme : · `markWatched(items)` retire l'écartement des CONTENUS dont un épisode vient d'être marqué vu — avant la délégation, comme le ticket le prescrit ; · `removeDismissedNextUpKeysForContent` retire aussi la **clé exacte**, pas seulement le préfixe `id|…` : une clé enregistrée sans coordonnées d'épisode (`id` seul) survivait au retrait, et la série restait disparue. ⚠ CE QUI DISTINGUE UN ÉPISODE N'EST PAS LE `type`. Une marque de série et une marque d'épisode portent le même `type` et le même `id` ; seules les coordonnées `season`/`episode` les séparent. Filtrer sur le type aurait rouvert la série en marquant la série entière, ou jamais. Les identifiants sont rendus DISTINCTS : la préférence est par contenu, pas par épisode. Deux fonctions pures, pour que la règle soit mesurable sans réseau ni stockage : `identifiantsDeContenuDesEpisodes(items)` et `clesDEcarteApresRetrait(cles, contentId)`. 10 tests : · le filtre — la clé exacte tombe avec le préfixe, les autres contenus restent écartés, un préfixe qui RESSEMBLE (`showcase` vs `show`) ne suffit pas, un identifiant vide ne retire rien, un identifiant est normalisé ; · la sélection — seuls les épisodes désignent un contenu, dix épisodes ne font qu'un contenu, un identifiant vide ne désigne rien ; · le câblage — l'appel précède bien la délégation (sans ce verrou, retirer l'appel laisserait les autres verts : ils mesurent la sélection, pas le lien). ./gradlew :composeApp:testAndroidHostTest -Pnuvio.android.distribution=full \ --tests '*LesClesDEcarteRetireesTest*' \ --tests '*LesEpisodesMarquesVusRouvrentLeurSerieTest*' BUILD SUCCESSFUL, 10 tests, 0 échec (+ 10 de WatchedRepositoryTest, verts) Ce que ce commit ne fait pas : `markWatchedFromPlaybackCompletion` n'est pas touché. Le ticket vise le marquage depuis la fiche ; élargir la règle à la fin de lecture est un autre geste, et il se décide — pas par effet de bord.