mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-20 05:28:05 +02:00
Multi-IPTV : déclarer l'IPTV active de façon synchrone dans AuthedHttp
AuthedHttp lisait l'IPTV dans localStorage, écrit par un écouteur Riverpod enregistré tardivement : après un changement d'IPTV l'en-tête X-Playlist-Id pouvait rester périmé. AuthedHttp.usePlaylist pose l'IPTV en mémoire dès la sélection et à chaque construction du tableau de bord. Auto NBA reçoit la playlist, recharge sa règle quand elle change et nomme l'IPTV sur laquelle les matchs sont enregistrés. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a6322b57b8
commit
6368fd6ee2
6 files changed
+58
-7
No files matched your search
@@ -24,12 +24,30 @@ class AuthedHttp {
|
||||
return (t != null && t.isNotEmpty) ? t : null;
|
||||
}
|
||||
|
||||
/// IPTV sélectionnée (persistée par `playlistPersistenceProvider`).
|
||||
/// IPTV active, posée de façon synchrone par l'écran de sélection et le
|
||||
/// tableau de bord (voir [usePlaylist]).
|
||||
///
|
||||
/// Envoyée à chaque appel : sans elle le serveur prenait la playlist la
|
||||
/// plus récente, et guide, enregistrements et Auto NBA visaient la
|
||||
/// mauvaise IPTV quand plusieurs étaient configurées.
|
||||
/// POURQUOI : `localStorage['selected_playlist']` n'est écrit que par un
|
||||
/// écouteur Riverpod enregistré tardivement ; après un changement d'IPTV
|
||||
/// il restait périmé, le serveur retombait sur la playlist par défaut et
|
||||
/// les deux IPTV partageaient la même règle Auto NBA et les mêmes
|
||||
/// enregistrements.
|
||||
static String? _currentPlaylistId;
|
||||
|
||||
/// Déclare l'IPTV active et la persiste immédiatement.
|
||||
static void usePlaylist(String id, {Map<String, dynamic>? json}) {
|
||||
if (id.isEmpty) return;
|
||||
_currentPlaylistId = id;
|
||||
if (json != null) {
|
||||
try {
|
||||
html.window.localStorage['selected_playlist'] = jsonEncode(json);
|
||||
} catch (_) {}
|
||||
}
|
||||
}
|
||||
|
||||
/// IPTV envoyée au serveur : celle déclarée, sinon la dernière persistée.
|
||||
static String? get selectedPlaylistId {
|
||||
if (_currentPlaylistId != null) return _currentPlaylistId;
|
||||
try {
|
||||
final stored = html.window.localStorage['selected_playlist'];
|
||||
if (stored == null) return null;
|
||||
|
||||
Reference in new issue
Block a user