Commit Graph
10 Commits
Author SHA1 Message Date
MichaelandClaude Opus 5 52504d4e1a Multi-IPTV : le quota du navigateur ne doit plus écraser le choix d'IPTV
Console du navigateur, à deux playlists :

  QuotaExceededError: Failed to execute 'setItem' on 'Storage':
  Setting the value of 'xtream_cache_<id>_live_channels' exceeded the quota.

Les catalogues mis en cache (chaînes, films, séries), plusieurs Mo par
IPTV, saturent le stockage. L'erreur était avalée, mais le stockage
restait plein : toute écriture suivante échouait, dont celle de
localStorage['selected_playlist']. L'entrée gardait l'IPTV précédente,
AuthedHttp envoyait un X-Playlist-Id périmé, le serveur résolvait la même
playlist pour les deux, et Auto NBA n'avait qu'une règle commune —
désactivée d'un côté, désactivée de l'autre.

- persistSelectedPlaylist purge les catalogues et réessaye avant de
  renoncer ; elle ne lève plus jamais, sans quoi le clic de sélection
  n'aurait plus posé l'état du tout.
- _saveToLocalCache purge les catalogues des autres IPTV puis réessaye :
  un catalogue se recharge depuis le serveur, le choix d'IPTV ne se
  devine pas.

Non vérifié localement : le SDK Flutter de cette machine (3.10.3) est
antérieur au ^3.13.0 exigé par le projet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-19 14:15:19 +02:00
MichaelandClaude Opus 5 5169d0843a Multi-IPTV : persister l'IPTV choisie dès le clic
Déconnecter Auto NBA sur une IPTV la déconnectait sur l'autre : les deux
tombaient en fait sur la même règle. L'en-tête X-Playlist-Id était absent,
donc le serveur repliait sur la playlist la plus récente, pour la lecture
comme pour l'écriture.

AuthedHttp lit localStorage['selected_playlist'], écrit jusqu'ici par le
seul ref.listen de playlistPersistenceProvider. Or ce listener n'existe
qu'une fois activeXtreamServiceProvider lu, c'est-à-dire une fois le
tableau de bord construit : le premier choix d'une session changeait
l'état avant que quiconque n'écoute, et n'était jamais écrit.

- persistSelectedPlaylist écrit l'entrée ; le listener l'appelle.
- selectPlaylist persiste puis pose l'état ; les deux écrans de
  sélection (web et mobile) passent par lui.

Non vérifié localement : le SDK Flutter de cette machine (3.10.3) est
antérieur au ^3.13.0 exigé par le projet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-19 14:11:19 +02:00
Michael f5b3457390 refactor: Consolidate Flutter web and Dart server compilation into a single Docker build stage for streamlined dependency management. 2026-03-10 16:25:46 +01:00
Michael 36a74d9e97 fix: increase default timeouts and ensure they are applied to XtreamService 2026-03-10 15:44:04 +01:00
Michael 33c6385d7e feat: introduce mobile player screen and lite player view with channel zapping functionality 2026-03-09 14:52:41 +01:00
Michael 7eb483fc07 feat: introduce IPTV settings management with a dedicated mobile tab, providers, and service. 2026-03-09 13:31:01 +01:00
Michael d1a481bf93 feat: Implement Xtream IPTV integration including providers, a dedicated player screen, EPG overlay, and live TV channel browsing. 2025-12-06 09:45:22 +01:00
Michael 6eed235299 feat: implement Live TV tab with grouped channels, pagination, and state management 2025-12-06 00:20:31 +01:00
Michael 5943cd9587 chore: Stop explicitly copying pubspec.lock as flutter pub get generates it. 2025-12-05 18:44:45 +01:00
Michael 0ca2835cba chore: Update dependencies, switch Flutter web renderer to HTML, replace media_kit with video_player/chewie, and remove Hive volume from Docker setup. 2025-12-05 09:52:40 +01:00