improve default search bang fetching

This commit is contained in:
Fabian Freund
2026-04-19 17:07:30 +02:00
parent 94e223ba78
commit f980a94682
6 changed files with 100 additions and 31 deletions
@@ -64,36 +64,54 @@ GeckoSelectionActionService selectionActionService(Ref ref) {
}
}),
DefaultSearchAction((text) async {
if (ref.mounted) {
final defaultSearchBang = await ref.read(
defaultSearchBangDataProvider.future,
);
if (!ref.mounted) return;
if (ref.mounted && defaultSearchBang != null) {
final currentTab = ref.read(
tabStatesProvider,
)[ref.read(selectedTabProvider)];
final searchBang = await ref.read(defaultSearchBangProvider.future);
final tabMode =
currentTab?.tabMode ??
TabMode.fromTabType(
ref
.read(generalSettingsWithDefaultsProvider)
.effectiveDefaultCreateTabType,
);
if (!ref.mounted) return;
await ref
.read(tabRepositoryProvider.notifier)
.addTab(
url: defaultSearchBang.getTemplateUrl(text),
parentId: currentTab?.id,
tabMode: tabMode,
selectTab: true,
);
} else {
logger.e('No default search bang found');
}
if (searchBang != null) {
final currentTab = ref.read(
tabStatesProvider,
)[ref.read(selectedTabProvider)];
final tabMode =
currentTab?.tabMode ??
TabMode.fromTabType(
ref
.read(generalSettingsWithDefaultsProvider)
.effectiveDefaultCreateTabType,
);
await ref
.read(tabRepositoryProvider.notifier)
.addTab(
url: searchBang.getTemplateUrl(text),
parentId: currentTab?.id,
tabMode: tabMode,
selectTab: true,
);
return;
}
logger.w('No search bang found, falling back to search screen');
final router = await ref.read(routerProvider.future);
if (!ref.mounted) return;
final settings = ref.read(generalSettingsWithDefaultsProvider);
final selectedTabState = ref.read(
tabStatesProvider,
)[ref.read(selectedTabProvider)];
await router.push(
SearchRoute(
tabType:
selectedTabState?.tabMode.toTabType() ??
settings.effectiveDefaultCreateTabType,
searchText: text,
).location,
);
}),
FindInPageAction((text) async {
if (ref.mounted) {
@@ -55,7 +55,7 @@ final class SelectionActionServiceProvider
}
String _$selectionActionServiceHash() =>
r'5faf8c13c414406dfc2eb55fdd372677dbccdf8c';
r'78593799e8d903de415cf49ebb3acfb73e45d878';
@ProviderFor(eventService)
final eventServiceProvider = EventServiceProvider._();
@@ -421,7 +421,7 @@ class _BrowserViewState extends ConsumerState<BrowserView>
case SharedText():
final bang =
ref.read(selectedBangDataProvider()) ??
await ref.read(defaultSearchBangDataProvider.future);
await ref.read(defaultSearchBangProvider.future);
await ref
.read(tabRepositoryProvider.notifier)
@@ -580,9 +580,7 @@ class SearchScreen extends HookConsumerWidget {
final bang =
siteBang ??
globalBang ??
await ref.read(
defaultSearchBangDataProvider.future,
);
await ref.read(defaultSearchBangProvider.future);
if (bang != null) {
newUrl = bang.getTemplateUrl(searchQuery);