Add third-party F-Droid repo search to main search menu (#1681)

This commit is contained in:
Imran Remtulla
2024-06-28 19:10:45 -04:00
parent 9b0d672553
commit f53a4f3827
3 changed files with 29 additions and 6 deletions

View File

@@ -9,7 +9,7 @@ class FDroidRepo extends AppSource {
FDroidRepo() {
name = tr('fdroidThirdPartyRepo');
canSearch = true;
excludeFromMassSearch = true;
includeAdditionalOptsInMainSearch = true;
neverAutoSelect = true;
showReleaseDateAsVersionToggle = true;

View File

@@ -259,9 +259,7 @@ class AddAppPageState extends State<AddAppPage> {
searching = true;
});
var sourceStrings = <String, List<String>>{};
sourceProvider.sources
.where((e) => e.canSearch && !e.excludeFromMassSearch)
.forEach((s) {
sourceProvider.sources.where((e) => e.canSearch).forEach((s) {
sourceStrings[s.name] = [s.name];
});
try {
@@ -286,7 +284,32 @@ class AddAppPageState extends State<AddAppPage> {
.where((e) => searchSources.contains(e.name))
.map((e) async {
try {
return await e.search(searchQuery);
Map<String, dynamic>? querySettings = {};
if (e.includeAdditionalOptsInMainSearch) {
querySettings = await showDialog<Map<String, dynamic>?>(
context: context,
builder: (BuildContext ctx) {
return GeneratedFormModal(
title: tr('searchX', args: [e.name]),
items: [
...e.searchQuerySettingFormItems.map((e) => [e]),
[
GeneratedFormTextField('url',
label: e.hosts.isNotEmpty
? tr('overrideSource')
: plural('url', 1).substring(2),
defaultValue:
e.hosts.isNotEmpty ? e.hosts[0] : '',
required: true)
],
],
);
});
if (querySettings == null) {
return <String, List<String>>{};
}
}
return await e.search(searchQuery, querySettings: querySettings);
} catch (err) {
if (err is! CredsNeededError) {
rethrow;

View File

@@ -617,7 +617,7 @@ abstract class AppSource {
}
bool canSearch = false;
bool excludeFromMassSearch = false;
bool includeAdditionalOptsInMainSearch = false;
List<GeneratedFormItem> searchQuerySettingFormItems = [];
Future<Map<String, List<String>>> search(String query,
{Map<String, dynamic> querySettings = const {}}) {