fix issue with modal barrier color
This commit is contained in:
@@ -17,7 +17,12 @@
|
|||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
|
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:riverpod_annotation/riverpod_annotation.dart';
|
||||||
import 'package:weblibre/core/logger.dart';
|
import 'package:weblibre/core/logger.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.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/providers.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.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/geckoview/features/tabs/domain/repositories/tab.dart';
|
||||||
|
import 'package:weblibre/features/user/data/providers.dart';
|
||||||
|
|
||||||
part 'selected_container.g.dart';
|
part 'selected_container.g.dart';
|
||||||
|
|
||||||
@@ -73,6 +79,22 @@ class SelectedContainer extends _$SelectedContainer {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String? build() {
|
String? build() {
|
||||||
|
final persistCompleter = Completer();
|
||||||
|
|
||||||
|
final persistResult = persist(
|
||||||
|
ref.watch(riverpodDatabaseStorageProvider),
|
||||||
|
key: 'SelectedContainer',
|
||||||
|
encode: (state) => jsonEncode([state]),
|
||||||
|
decode: (encoded) =>
|
||||||
|
(jsonDecode(encoded) as List<dynamic>).first as String?,
|
||||||
|
);
|
||||||
|
|
||||||
|
unawaited(
|
||||||
|
(persistResult.future ?? Future.value()).whenComplete(
|
||||||
|
() => persistCompleter.complete(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
ref.listen(
|
ref.listen(
|
||||||
fireImmediately: true,
|
fireImmediately: true,
|
||||||
watchContainersWithCountProvider,
|
watchContainersWithCountProvider,
|
||||||
@@ -97,6 +119,10 @@ class SelectedContainer extends _$SelectedContainer {
|
|||||||
selectedTabProvider,
|
selectedTabProvider,
|
||||||
(previous, next) async {
|
(previous, next) async {
|
||||||
if (next != null) {
|
if (next != null) {
|
||||||
|
if (!persistCompleter.isCompleted) {
|
||||||
|
await persistCompleter.future;
|
||||||
|
}
|
||||||
|
|
||||||
final tabData = await ref
|
final tabData = await ref
|
||||||
.read(tabDataRepositoryProvider.notifier)
|
.read(tabDataRepositoryProvider.notifier)
|
||||||
.getTabDataById(next);
|
.getTabDataById(next);
|
||||||
@@ -121,7 +147,7 @@ class SelectedContainer extends _$SelectedContainer {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
return null;
|
return stateOrNull;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user