From c9fa8123d762bff472da51c481c3af7ba9874698 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sat, 14 Mar 2026 09:45:13 +0100 Subject: [PATCH] fix issue with modal barrier color --- .../domain/providers/selected_container.dart | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart b/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart index ac9b0f72..52079111 100644 --- a/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart +++ b/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart @@ -17,7 +17,12 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ +import 'dart:async'; +import 'dart:convert'; + import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; +import 'package:riverpod/experimental/persist.dart'; +import 'package:riverpod_annotation/experimental/persist.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:weblibre/core/logger.dart'; import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart'; @@ -27,6 +32,7 @@ import 'package:weblibre/features/geckoview/features/tabs/data/providers.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart'; +import 'package:weblibre/features/user/data/providers.dart'; part 'selected_container.g.dart'; @@ -73,6 +79,22 @@ class SelectedContainer extends _$SelectedContainer { @override String? build() { + final persistCompleter = Completer(); + + final persistResult = persist( + ref.watch(riverpodDatabaseStorageProvider), + key: 'SelectedContainer', + encode: (state) => jsonEncode([state]), + decode: (encoded) => + (jsonDecode(encoded) as List).first as String?, + ); + + unawaited( + (persistResult.future ?? Future.value()).whenComplete( + () => persistCompleter.complete(), + ), + ); + ref.listen( fireImmediately: true, watchContainersWithCountProvider, @@ -97,6 +119,10 @@ class SelectedContainer extends _$SelectedContainer { selectedTabProvider, (previous, next) async { if (next != null) { + if (!persistCompleter.isCompleted) { + await persistCompleter.future; + } + final tabData = await ref .read(tabDataRepositoryProvider.notifier) .getTabDataById(next); @@ -121,7 +147,7 @@ class SelectedContainer extends _$SelectedContainer { }, ); - return null; + return stateOrNull; } }