mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-30 04:53:28 +01: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