mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-14 02:48:10 +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() {
|
FDroidRepo() {
|
||||||
name = tr('fdroidThirdPartyRepo');
|
name = tr('fdroidThirdPartyRepo');
|
||||||
canSearch = true;
|
canSearch = true;
|
||||||
excludeFromMassSearch = true;
|
includeAdditionalOptsInMainSearch = true;
|
||||||
neverAutoSelect = true;
|
neverAutoSelect = true;
|
||||||
showReleaseDateAsVersionToggle = true;
|
showReleaseDateAsVersionToggle = true;
|
||||||
|
|
||||||
|
@@ -259,9 +259,7 @@ class AddAppPageState extends State<AddAppPage> {
|
|||||||
searching = true;
|
searching = true;
|
||||||
});
|
});
|
||||||
var sourceStrings = <String, List<String>>{};
|
var sourceStrings = <String, List<String>>{};
|
||||||
sourceProvider.sources
|
sourceProvider.sources.where((e) => e.canSearch).forEach((s) {
|
||||||
.where((e) => e.canSearch && !e.excludeFromMassSearch)
|
|
||||||
.forEach((s) {
|
|
||||||
sourceStrings[s.name] = [s.name];
|
sourceStrings[s.name] = [s.name];
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
@@ -286,7 +284,32 @@ class AddAppPageState extends State<AddAppPage> {
|
|||||||
.where((e) => searchSources.contains(e.name))
|
.where((e) => searchSources.contains(e.name))
|
||||||
.map((e) async {
|
.map((e) async {
|
||||||
try {
|
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) {
|
} catch (err) {
|
||||||
if (err is! CredsNeededError) {
|
if (err is! CredsNeededError) {
|
||||||
rethrow;
|
rethrow;
|
||||||
|
@@ -617,7 +617,7 @@ abstract class AppSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool canSearch = false;
|
bool canSearch = false;
|
||||||
bool excludeFromMassSearch = false;
|
bool includeAdditionalOptsInMainSearch = false;
|
||||||
List<GeneratedFormItem> searchQuerySettingFormItems = [];
|
List<GeneratedFormItem> searchQuerySettingFormItems = [];
|
||||||
Future<Map<String, List<String>>> search(String query,
|
Future<Map<String, List<String>>> search(String query,
|
||||||
{Map<String, dynamic> querySettings = const {}}) {
|
{Map<String, dynamic> querySettings = const {}}) {
|
||||||
|
Reference in New Issue
Block a user