improved quick tab switcher & general tab design/logic;

This commit is contained in:
Fabian Freund
2026-06-12 03:47:20 +02:00
parent 83c78b53d3
commit 3c5f472bdf
35 changed files with 2715 additions and 768 deletions
@@ -31,6 +31,7 @@ class GeckoEventService extends GeckoStateEvents {
final _engineStateSubject = BehaviorSubject.seeded(false);
final _tabListSubject = BehaviorSubject<List<String>>();
final _selectedTabSubject = BehaviorSubject<String?>();
final _restoreCompleteSubject = BehaviorSubject.seeded(false);
final _tabContentSubject = ReplaySubject<TabContentState>();
final _historySubject = ReplaySubject<HistoryEvent>();
@@ -59,6 +60,8 @@ class GeckoEventService extends GeckoStateEvents {
ValueStream<bool> get engineReadyStateEvents => _engineStateSubject.stream;
ValueStream<List<String>> get tabListEvents => _tabListSubject.stream;
ValueStream<String?> get selectedTabEvents => _selectedTabSubject.stream;
ValueStream<bool> get restoreCompleteEvents =>
_restoreCompleteSubject.stream;
Stream<TabContentState> get tabContentEvents => _tabContentSubject.stream;
Stream<HistoryEvent> get historyEvents => _historySubject.stream;
@@ -109,6 +112,11 @@ class GeckoEventService extends GeckoStateEvents {
_selectedTabSubject.addWhenMoreRecent(sequence, id, id);
}
@override
void onRestoreCompleteChange(int sequence, bool restoreComplete) {
_restoreCompleteSubject.addWhenMoreRecent(sequence, null, restoreComplete);
}
@override
void onTabContentStateChange(int sequence, TabContentState state) {
_tabContentSubject.addWhenMoreRecent(sequence, state.id, state);
@@ -19,6 +19,7 @@ class GeckoTabService {
Future<void> syncEvents({
bool onSelectedTabChange = false,
bool onTabListChange = false,
bool onRestoreComplete = false,
bool onTabContentStateChange = false,
bool onIconChange = false,
bool onSecurityInfoStateChange = false,
@@ -34,6 +35,7 @@ class GeckoTabService {
return _api.syncEvents(
onSelectedTabChange: onSelectedTabChange,
onTabListChange: onTabListChange,
onRestoreComplete: onRestoreComplete,
onTabContentStateChange: onTabContentStateChange,
onIconChange: onIconChange,
onSecurityInfoStateChange: onSecurityInfoStateChange,