improve default search bang fetching
This commit is contained in:
@@ -41,6 +41,21 @@ Stream<BangData?> defaultSearchBangData(Ref ref) {
|
|||||||
return repository.watchBang(key);
|
return repository.watchBang(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Riverpod(keepAlive: true)
|
||||||
|
Future<BangData?> defaultSearchBang(Ref ref) {
|
||||||
|
final key = ref.watch(
|
||||||
|
generalSettingsWithDefaultsProvider.select(
|
||||||
|
(value) => value.defaultSearchProvider,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (key == null) {
|
||||||
|
return Future.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ref.read(bangDataRepositoryProvider.notifier).getBang(key);
|
||||||
|
}
|
||||||
|
|
||||||
@Riverpod()
|
@Riverpod()
|
||||||
Stream<BangData?> bangData(Ref ref, BangKey key) {
|
Stream<BangData?> bangData(Ref ref, BangKey key) {
|
||||||
final repository = ref.watch(bangDataRepositoryProvider.notifier);
|
final repository = ref.watch(bangDataRepositoryProvider.notifier);
|
||||||
|
|||||||
@@ -44,6 +44,44 @@ final class DefaultSearchBangDataProvider
|
|||||||
String _$defaultSearchBangDataHash() =>
|
String _$defaultSearchBangDataHash() =>
|
||||||
r'5f43b8989219cf3cb2f5ca65df351b6cb100427f';
|
r'5f43b8989219cf3cb2f5ca65df351b6cb100427f';
|
||||||
|
|
||||||
|
@ProviderFor(defaultSearchBang)
|
||||||
|
final defaultSearchBangProvider = DefaultSearchBangProvider._();
|
||||||
|
|
||||||
|
final class DefaultSearchBangProvider
|
||||||
|
extends
|
||||||
|
$FunctionalProvider<
|
||||||
|
AsyncValue<BangData?>,
|
||||||
|
BangData?,
|
||||||
|
FutureOr<BangData?>
|
||||||
|
>
|
||||||
|
with $FutureModifier<BangData?>, $FutureProvider<BangData?> {
|
||||||
|
DefaultSearchBangProvider._()
|
||||||
|
: super(
|
||||||
|
from: null,
|
||||||
|
argument: null,
|
||||||
|
retry: null,
|
||||||
|
name: r'defaultSearchBangProvider',
|
||||||
|
isAutoDispose: false,
|
||||||
|
dependencies: null,
|
||||||
|
$allTransitiveDependencies: null,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String debugGetCreateSourceHash() => _$defaultSearchBangHash();
|
||||||
|
|
||||||
|
@$internal
|
||||||
|
@override
|
||||||
|
$FutureProviderElement<BangData?> $createElement($ProviderPointer pointer) =>
|
||||||
|
$FutureProviderElement(pointer);
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOr<BangData?> create(Ref ref) {
|
||||||
|
return defaultSearchBang(ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String _$defaultSearchBangHash() => r'39c5b18231a56763e2c620cae5f2889f7c95f6ee';
|
||||||
|
|
||||||
@ProviderFor(bangData)
|
@ProviderFor(bangData)
|
||||||
final bangDataProvider = BangDataFamily._();
|
final bangDataProvider = BangDataFamily._();
|
||||||
|
|
||||||
|
|||||||
@@ -64,36 +64,54 @@ GeckoSelectionActionService selectionActionService(Ref ref) {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
DefaultSearchAction((text) async {
|
DefaultSearchAction((text) async {
|
||||||
if (ref.mounted) {
|
if (!ref.mounted) return;
|
||||||
final defaultSearchBang = await ref.read(
|
|
||||||
defaultSearchBangDataProvider.future,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (ref.mounted && defaultSearchBang != null) {
|
final searchBang = await ref.read(defaultSearchBangProvider.future);
|
||||||
final currentTab = ref.read(
|
|
||||||
tabStatesProvider,
|
|
||||||
)[ref.read(selectedTabProvider)];
|
|
||||||
|
|
||||||
final tabMode =
|
if (!ref.mounted) return;
|
||||||
currentTab?.tabMode ??
|
|
||||||
TabMode.fromTabType(
|
|
||||||
ref
|
|
||||||
.read(generalSettingsWithDefaultsProvider)
|
|
||||||
.effectiveDefaultCreateTabType,
|
|
||||||
);
|
|
||||||
|
|
||||||
await ref
|
if (searchBang != null) {
|
||||||
.read(tabRepositoryProvider.notifier)
|
final currentTab = ref.read(
|
||||||
.addTab(
|
tabStatesProvider,
|
||||||
url: defaultSearchBang.getTemplateUrl(text),
|
)[ref.read(selectedTabProvider)];
|
||||||
parentId: currentTab?.id,
|
|
||||||
tabMode: tabMode,
|
final tabMode =
|
||||||
selectTab: true,
|
currentTab?.tabMode ??
|
||||||
);
|
TabMode.fromTabType(
|
||||||
} else {
|
ref
|
||||||
logger.e('No default search bang found');
|
.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 {
|
FindInPageAction((text) async {
|
||||||
if (ref.mounted) {
|
if (ref.mounted) {
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ final class SelectionActionServiceProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$selectionActionServiceHash() =>
|
String _$selectionActionServiceHash() =>
|
||||||
r'5faf8c13c414406dfc2eb55fdd372677dbccdf8c';
|
r'78593799e8d903de415cf49ebb3acfb73e45d878';
|
||||||
|
|
||||||
@ProviderFor(eventService)
|
@ProviderFor(eventService)
|
||||||
final eventServiceProvider = EventServiceProvider._();
|
final eventServiceProvider = EventServiceProvider._();
|
||||||
|
|||||||
+1
-1
@@ -421,7 +421,7 @@ class _BrowserViewState extends ConsumerState<BrowserView>
|
|||||||
case SharedText():
|
case SharedText():
|
||||||
final bang =
|
final bang =
|
||||||
ref.read(selectedBangDataProvider()) ??
|
ref.read(selectedBangDataProvider()) ??
|
||||||
await ref.read(defaultSearchBangDataProvider.future);
|
await ref.read(defaultSearchBangProvider.future);
|
||||||
|
|
||||||
await ref
|
await ref
|
||||||
.read(tabRepositoryProvider.notifier)
|
.read(tabRepositoryProvider.notifier)
|
||||||
|
|||||||
+1
-3
@@ -580,9 +580,7 @@ class SearchScreen extends HookConsumerWidget {
|
|||||||
final bang =
|
final bang =
|
||||||
siteBang ??
|
siteBang ??
|
||||||
globalBang ??
|
globalBang ??
|
||||||
await ref.read(
|
await ref.read(defaultSearchBangProvider.future);
|
||||||
defaultSearchBangDataProvider.future,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (bang != null) {
|
if (bang != null) {
|
||||||
newUrl = bang.getTemplateUrl(searchQuery);
|
newUrl = bang.getTemplateUrl(searchQuery);
|
||||||
|
|||||||
Reference in New Issue
Block a user