one step closer

This commit is contained in:
Fabian Freund
2024-10-22 07:27:37 +02:00
parent c4d93e8fe7
commit 8d351e55c0
92 changed files with 3829 additions and 2694 deletions
@@ -1,6 +1,7 @@
import 'dart:async';
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
import 'package:lensai/core/logger.dart';
import 'package:lensai/features/geckoview/domain/providers/tab_session.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -10,8 +11,6 @@ part 'providers.g.dart';
GeckoEventService eventService(EventServiceRef ref) {
final service = GeckoEventService.setUp();
unawaited(GeckoTabService().syncEvents());
ref.onDispose(() {
service.dispose();
});
@@ -19,6 +18,41 @@ GeckoEventService eventService(EventServiceRef ref) {
return service;
}
@Riverpod(keepAlive: true)
class EngineReadyState extends _$EngineReadyState {
@override
bool build() {
final eventService = ref.watch(eventServiceProvider);
final currentState =
eventService.engineReadyStateEvents.valueOrNull ?? false;
if (!currentState) {
unawaited(
eventService.engineReadyStateEvents
.firstWhere((value) => value == true)
.timeout(
const Duration(seconds: 5),
onTimeout: () {
logger.w('Waiting for engine ready state timed out');
return true;
},
).whenComplete(() => state = true),
);
}
final sub = eventService.engineReadyStateEvents.listen((value) {
state = value;
});
ref.onDispose(() async {
await sub.cancel();
});
return currentState;
}
}
@Riverpod()
TabSession selectedTabSessionNotifier(SelectedTabSessionNotifierRef ref) {
return ref.watch(tabSessionProvider(null).notifier);