use fire immediatialy

This commit is contained in:
Fabian Freund
2025-06-15 21:27:41 +02:00
parent 81ecb69cce
commit 9b7286ffd4
6 changed files with 67 additions and 31 deletions
@@ -244,7 +244,10 @@ class TabRepository extends _$TabRepository {
);
});
ref.listen(selectedTabProvider, (previous, tabId) async {
ref.listen(fireImmediately: true, selectedTabProvider, (
previous,
tabId,
) async {
if (tabId != null) {
_previousTabId = previous;
await db.tabDao.touchTab(tabId, timestamp: DateTime.now());
@@ -16,6 +16,7 @@ class EngineSettingsReplicationService
var initialSettingsSent = false;
ref.listen(
fireImmediately: true,
generalSettingsRepositoryProvider.select(
(settings) => settings.themeMode,
),
@@ -30,7 +31,10 @@ class EngineSettingsReplicationService
},
);
ref.listen(engineSettingsRepositoryProvider, (previous, next) async {
ref.listen(fireImmediately: true, engineSettingsRepositoryProvider, (
previous,
next,
) async {
if (initialSettingsSent && previous != null) {
if (previous.javascriptEnabled != next.javascriptEnabled) {
await _service.javascriptEnabled(next.javascriptEnabled);
@@ -12,16 +12,18 @@ class ProxySettingsReplication extends _$ProxySettingsReplication {
@override
void build() {
ref.listen(torProxyServiceProvider.select((data) => data.valueOrNull), (
previous,
next,
) async {
if (next != null) {
await _service.setProxyPort(next);
}
});
ref.listen(
fireImmediately: true,
torProxyServiceProvider.select((data) => data.valueOrNull),
(previous, next) async {
if (next != null) {
await _service.setProxyPort(next);
}
},
);
ref.listen(
fireImmediately: true,
containersWithCountProvider.select(
(value) => EquatableValue(
value.valueOrNull
@@ -152,30 +152,50 @@ class _BrowserViewState extends ConsumerState<BrowserView>
WidgetsBinding.instance.addObserver(this);
//Initialize and register dependencies
ref.listenManual(tabRepositoryProvider, (previous, next) {});
ref.listenManual(selectionActionServiceProvider, (previous, next) {});
ref.listenManual(
fireImmediately: true,
tabRepositoryProvider,
(previous, next) {},
);
ref.listenManual(
fireImmediately: true,
selectionActionServiceProvider,
(previous, next) {},
);
ref.listenManual(
fireImmediately: true,
webExtensionsStateProvider(WebExtensionActionType.browser),
(previous, next) {},
);
ref.listenManual(
fireImmediately: true,
webExtensionsStateProvider(WebExtensionActionType.page),
(previous, next) {},
);
ref.listenManual(cacheRepositoryProvider, (previous, next) {});
ref.listenManual(
fireImmediately: true,
cacheRepositoryProvider,
(previous, next) {},
);
ref.listenManual(
fireImmediately: true,
engineSettingsReplicationServiceProvider,
(previous, next) {},
);
ref.listenManual(proxySettingsReplicationProvider, (previous, next) {});
ref.listenManual(
fireImmediately: true,
proxySettingsReplicationProvider,
(previous, next) {},
);
ref.listenManual(
fireImmediately: true,
articleContentProcessorServiceProvider,
(previous, next) {},
);
@@ -108,7 +108,10 @@ class TorProxyService extends _$TorProxyService {
await _tor.initializeService();
ref.listen(browserViewLifecycleProvider, (previous, next) {
ref.listen(fireImmediately: true, browserViewLifecycleProvider, (
previous,
next,
) {
switch (next) {
case AppLifecycleState.resumed:
if (_timerPaused) {
@@ -13,21 +13,25 @@ class CompletePageInfo extends _$CompletePageInfo {
return AsyncData(cached!);
}
ref.listen(pageInfoProvider(url, isImageRequest: false), (previous, next) {
if (cached != null && next.hasValue) {
state = AsyncData(
WebPageInfo(
url: url,
//Cached is preferred as this comes from gecko and is more likely to be correct compared to manual request
favicon: cached.favicon ?? next.value!.favicon,
feeds: cached.feeds ?? next.value!.feeds,
title: cached.title ?? next.value!.title,
),
);
} else {
state = next;
}
});
ref.listen(
fireImmediately: true,
pageInfoProvider(url, isImageRequest: false),
(previous, next) {
if (cached != null && next.hasValue) {
state = AsyncData(
WebPageInfo(
url: url,
//Cached is preferred as this comes from gecko and is more likely to be correct compared to manual request
favicon: cached.favicon ?? next.value!.favicon,
feeds: cached.feeds ?? next.value!.feeds,
title: cached.title ?? next.value!.title,
),
);
} else {
state = next;
}
},
);
return (cached != null) ? AsyncData(cached) : const AsyncLoading();
}