From 7d13132fcd1f1b667fdc6b178fb6c3eb40b886d8 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Mon, 8 Dec 2025 22:23:36 +0100 Subject: [PATCH] feat(iptv): introduce settings provider and tab for managing IPTV preferences --- .../iptv/providers/settings_provider.dart | 10 ++++++++++ lib/features/iptv/widgets/settings_tab.dart | 7 ++++++- verify_settings_fix.txt | Bin 0 -> 83108 bytes 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 verify_settings_fix.txt diff --git a/lib/features/iptv/providers/settings_provider.dart b/lib/features/iptv/providers/settings_provider.dart index 92dc4a7..976f09d 100644 --- a/lib/features/iptv/providers/settings_provider.dart +++ b/lib/features/iptv/providers/settings_provider.dart @@ -236,6 +236,16 @@ class IptvSettingsNotifier extends StateNotifier { IptvSettingsNotifier(this._ref) : super(const IptvSettings()) { _loadSettings(); + _setupAuthListener(); + } + + void _setupAuthListener() { + _ref.listen(authProvider, (previous, next) { + if (previous?.isAuthenticated == false && next.isAuthenticated) { + // User just logged in, sync settings from API + _fetchFromApi(); + } + }); } /// Load settings from SharedPreferences and then API diff --git a/lib/features/iptv/widgets/settings_tab.dart b/lib/features/iptv/widgets/settings_tab.dart index 3a276cd..d24beb2 100644 --- a/lib/features/iptv/widgets/settings_tab.dart +++ b/lib/features/iptv/widgets/settings_tab.dart @@ -470,10 +470,15 @@ class _SettingsTabState extends ConsumerState with SingleTickerProv style: FilledButton.styleFrom(backgroundColor: Colors.orange), onPressed: () { Navigator.pop(context); - // Clear PaintingCache + + // Clear Flutter Image Cache PaintingBinding.instance.imageCache.clear(); PaintingBinding.instance.imageCache.clearLiveImages(); + // Clear Browser Local Storage (SharedPreferences backend for Web) + html.window.localStorage.clear(); + html.window.sessionStorage.clear(); + // Reload application html.window.location.reload(); }, diff --git a/verify_settings_fix.txt b/verify_settings_fix.txt new file mode 100644 index 0000000000000000000000000000000000000000..f27a97adb7fb22f1a205f2c772075eec4459ceea GIT binary patch literal 83108 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Π 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