mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-14 02:48:10 +02:00
Improved APK filter for F-Droid (#1386)
This commit is contained in:
@@ -76,16 +76,7 @@ class FDroid extends AppSource {
|
|||||||
'https://$host/repo/$appId',
|
'https://$host/repo/$appId',
|
||||||
standardUrl,
|
standardUrl,
|
||||||
name,
|
name,
|
||||||
autoSelectHighestVersionCode:
|
additionalSettings: additionalSettings);
|
||||||
additionalSettings['autoSelectHighestVersionCode'] == true,
|
|
||||||
trySelectingSuggestedVersionCode:
|
|
||||||
additionalSettings['trySelectingSuggestedVersionCode'] == true,
|
|
||||||
filterVersionsByRegEx:
|
|
||||||
(additionalSettings['filterVersionsByRegEx'] as String?)
|
|
||||||
?.isNotEmpty ==
|
|
||||||
true
|
|
||||||
? additionalSettings['filterVersionsByRegEx']
|
|
||||||
: null);
|
|
||||||
if (!hostChanged) {
|
if (!hostChanged) {
|
||||||
try {
|
try {
|
||||||
var res = await sourceRequest(
|
var res = await sourceRequest(
|
||||||
@@ -166,12 +157,30 @@ class FDroid extends AppSource {
|
|||||||
|
|
||||||
APKDetails getAPKUrlsFromFDroidPackagesAPIResponse(
|
APKDetails getAPKUrlsFromFDroidPackagesAPIResponse(
|
||||||
Response res, String apkUrlPrefix, String standardUrl, String sourceName,
|
Response res, String apkUrlPrefix, String standardUrl, String sourceName,
|
||||||
{bool autoSelectHighestVersionCode = false,
|
{Map<String, dynamic> additionalSettings = const {}}) {
|
||||||
bool trySelectingSuggestedVersionCode = false,
|
var autoSelectHighestVersionCode =
|
||||||
String? filterVersionsByRegEx}) {
|
additionalSettings['autoSelectHighestVersionCode'] == true;
|
||||||
|
var trySelectingSuggestedVersionCode =
|
||||||
|
additionalSettings['trySelectingSuggestedVersionCode'] == true;
|
||||||
|
var filterVersionsByRegEx =
|
||||||
|
(additionalSettings['filterVersionsByRegEx'] as String?)?.isNotEmpty ==
|
||||||
|
true
|
||||||
|
? additionalSettings['filterVersionsByRegEx']
|
||||||
|
: null;
|
||||||
|
var apkFilterRegEx =
|
||||||
|
(additionalSettings['apkFilterRegEx'] as String?)?.isNotEmpty == true
|
||||||
|
? additionalSettings['apkFilterRegEx']
|
||||||
|
: null;
|
||||||
if (res.statusCode == 200) {
|
if (res.statusCode == 200) {
|
||||||
var response = jsonDecode(res.body);
|
var response = jsonDecode(res.body);
|
||||||
List<dynamic> releases = response['packages'] ?? [];
|
List<dynamic> releases = response['packages'] ?? [];
|
||||||
|
if (apkFilterRegEx != null) {
|
||||||
|
releases = releases.where((rel) {
|
||||||
|
String apk = '${apkUrlPrefix}_${rel['versionCode']}.apk';
|
||||||
|
return filterApks([MapEntry(apk, apk)], apkFilterRegEx, false)
|
||||||
|
.isNotEmpty;
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
if (releases.isEmpty) {
|
if (releases.isEmpty) {
|
||||||
throw NoReleasesError();
|
throw NoReleasesError();
|
||||||
}
|
}
|
||||||
|
@@ -50,10 +50,6 @@ class IzzyOnDroid extends AppSource {
|
|||||||
'https://android.izzysoft.de/frepo/$appId',
|
'https://android.izzysoft.de/frepo/$appId',
|
||||||
standardUrl,
|
standardUrl,
|
||||||
name,
|
name,
|
||||||
autoSelectHighestVersionCode:
|
additionalSettings: additionalSettings);
|
||||||
additionalSettings['autoSelectHighestVersionCode'] == true,
|
|
||||||
trySelectingSuggestedVersionCode:
|
|
||||||
additionalSettings['trySelectingSuggestedVersionCode'] == true,
|
|
||||||
filterVersionsByRegEx: additionalSettings['filterVersionsByRegEx']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user