mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-24 01:49:41 +02:00
Add third-party F-Droid repo search to main search menu (#1681)
This commit is contained in:
@@ -9,7 +9,7 @@ class FDroidRepo extends AppSource {
|
||||
FDroidRepo() {
|
||||
name = tr('fdroidThirdPartyRepo');
|
||||
canSearch = true;
|
||||
excludeFromMassSearch = true;
|
||||
includeAdditionalOptsInMainSearch = true;
|
||||
neverAutoSelect = true;
|
||||
showReleaseDateAsVersionToggle = true;
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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 {}}) {
|
||||
|
Reference in New Issue
Block a user