FOXA-3243 : un flux changé n'hérite plus du nom de fichier du flux de lancement #1009
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/NuvioTV!1009
Loading…
Reference in a new issue
No description provided.
Delete branch "passe-20261018-173000-fluxnom"
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?
Résumé
FOXA-3243 — un flux changé n'hérite plus du nom de fichier du flux de lancement.
973cce33aFOXA-3243 : un flux changé n'hérite plus du nom de fichier du flux de lancementcurrentFilenamen'est pas décoratif : il pilote la recherche de sous-titres, la clé du cache defréquence d'images, les indices Hi10p/VC-1 et le lien de flux sauvegardé.
Pourquoi
Le chemin épisode calculait le bon nom, puis appelait
applySelectedStreamState, qui leremplaçait par celui du lancement :
Deux écritures de la même règle, et la seconde écrasait la première : le calcul du chemin épisode
était perdu à chaque changement d'épisode ou de source. Garder le nom de la release précédente fait
chercher les sous-titres du mauvais fichier, et rien ne le dit.
La règle vit maintenant une fois, dans
nomDeFichierDepuisLUrl(url), et les deux cheminsl'appellent. Le repli sur
navigationArgs.filenamedisparaît : un flux sansbehaviorHints.filenameprend le nom tiré de son URL, ounull.⚠ Le nom de lancement reste posé à l'initialisation (
PlayerRuntimeController.kt:249) : c'est sonrôle. Ce qui change est qu'il ne ressuscite plus à chaque changement de flux.
Ce qui a été mesuré
6 tests :
…/Ma.Release.2026.1080p.mkv→ ce nomfilm.mkv?token=abc→film.mkv…/stream/→null…/live/chaine→null?: navigationArgs.filenamePorte jouée par la forge, pas sur le poste : « Porte / porte* » est le seul contexte qu'exige la
protection de
main, et la fusion attend son vert.Scope boundaries
Le nom de lancement à l'initialisation n'est pas touché (
PlayerRuntimeController.kt:249). Aucunautre usage de
currentFilenamen'est modifié : la recherche de sous-titres, le cache de fréquenced'images et les indices lisent la même propriété, ils héritent donc du correctif sans changement.
`currentFilename` n'est pas décoratif : il pilote la recherche de sous-titres, la clé du cache de fréquence d'images, les indices Hi10p/VC-1 et le lien de flux sauvegardé. Garder le nom de la release précédente fait chercher les sous-titres du **mauvais fichier**, et rien ne le dit. ## Le défaut, tel qu'il était écrit Le chemin épisode **calculait** le bon nom, puis appelait `applySelectedStreamState`, qui le **remplaçait** : ```kotlin // PlayerRuntimeControllerStreamsEpisodes — calculait currentFilename = stream.behaviorHints?.filename ?: url.substringBefore('?').substringAfterLast('/', "").takeIf { … } // PlayerRuntimeControllerStreams — écrasait currentFilename = stream.behaviorHints?.filename ?: navigationArgs.filename ``` Deux écritures de la même règle, et la seconde écrasait la première : le calcul du chemin épisode était perdu à chaque changement d'épisode ou de source. ## Le correctif La règle vit maintenant **une fois**, dans `nomDeFichierDepuisLUrl(url)`, et les deux chemins l'appellent. Le repli sur `navigationArgs.filename` disparaît : un flux sans `behaviorHints.filename` prend le nom tiré de **son** URL, ou `null`. ⚠ Le nom de lancement reste posé à l'initialisation (`PlayerRuntimeController.kt:249`) : c'est son rôle. Ce qui change est qu'il ne **ressuscite** plus à chaque changement de flux. ## Les preuves 6 tests : | ce qui est mesuré | comment | |---|---| | le nom vient de l'URL | `…/Ma.Release.2026.1080p.mkv` → ce nom | | la chaîne de requête est retirée | `film.mkv?token=abc` → `film.mkv` | | une URL sans fichier ne fabrique rien | `…/stream/` → `null` | | un segment sans extension ne fabrique rien | `…/live/chaine` → `null` | | le chemin commun ne retombe plus sur le lancement | la source ne contient plus `?: navigationArgs.filename` | | les deux chemins appellent la même règle | l'expression recopiée a disparu du chemin épisode | ./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full \ --tests '*LeFluxChangeNHeritePasDuNomDeLancementTest*' BUILD SUCCESSFUL, 6 tests, 0 échec