diff --git a/flutter_client/lib/update/client_update_provider.dart b/flutter_client/lib/update/client_update_provider.dart index f249922f..940f9333 100644 --- a/flutter_client/lib/update/client_update_provider.dart +++ b/flutter_client/lib/update/client_update_provider.dart @@ -74,7 +74,18 @@ final clientUpdateProvider = /// later release's banner re-appears even if the operator dismissed /// the previous one. Not persisted — restart re-shows the banner, /// which is acceptable nudging for v1. -final _dismissedVersionsProvider = StateProvider>((_) => {}); +class _DismissedVersionsNotifier extends Notifier> { + @override + Set build() => {}; + + void add(String version) { + state = {...state, version}; + } +} + +final _dismissedVersionsProvider = + NotifierProvider<_DismissedVersionsNotifier, Set>( + _DismissedVersionsNotifier.new); /// True when the update banner should render: an UpdateInfo is /// available AND the operator hasn't dismissed this specific version. @@ -89,9 +100,8 @@ final shouldShowUpdateBannerProvider = Provider((ref) { /// Dismiss controller: marks the given version as dismissed so the /// banner stops showing for this session. final dismissUpdateProvider = Provider((ref) { - return (version) { - ref.read(_dismissedVersionsProvider.notifier).update((s) => {...s, version}); - }; + return (version) => + ref.read(_dismissedVersionsProvider.notifier).add(version); }); /// Installer provider — depends on dio so the install download uses