GitHub - do not use filtered asset release dates (#2012)

This commit is contained in:
Imran Remtulla
2024-12-12 03:27:17 -05:00
parent 523e1151b2
commit fde63a0f05

View File

@ -275,14 +275,15 @@ class GitHub extends AppSource {
} }
} }
List<MapEntry<String, String>> getReleaseAssetUrls(dynamic release) => findReleaseAssetUrls(dynamic release) =>
(release['assets'] as List<dynamic>?)?.map((e) { (release['assets'] as List<dynamic>?)?.map((e) {
var url = !e['name'].toString().toLowerCase().endsWith('.apk') var url = !e['name'].toString().toLowerCase().endsWith('.apk')
? (e['browser_download_url'] ?? e['url']) ? (e['browser_download_url'] ?? e['url'])
: (e['url'] ?? e['browser_download_url']); : (e['url'] ?? e['browser_download_url']);
return (e['name'] != null) && (url != null) e['final_url'] = (e['name'] != null) && (url != null)
? MapEntry(e['name'] as String, url as String) ? MapEntry(e['name'] as String, url as String)
: const MapEntry('', ''); : const MapEntry('', '');
return e;
}).toList() ?? }).toList() ??
[]; [];
@ -293,7 +294,9 @@ class GitHub extends AppSource {
? DateTime.parse(rel['commit']['created']) ? DateTime.parse(rel['commit']['created'])
: null; : null;
DateTime? getNewestAssetDateFromRelease(dynamic rel) { DateTime? getNewestAssetDateFromRelease(dynamic rel) {
var t = (rel['assets'] as List<dynamic>?) var allAssets = rel['assets'] as List<dynamic>?;
var filteredAssets = rel['filteredAssets'] as List<dynamic>?;
var t = (filteredAssets ?? allAssets)
?.map((e) { ?.map((e) {
return e?['updated_at'] != null return e?['updated_at'] != null
? DateTime.parse(e['updated_at']) ? DateTime.parse(e['updated_at'])
@ -387,18 +390,38 @@ class GitHub extends AppSource {
.hasMatch(((releases[i]['body'] as String?) ?? '').trim())) { .hasMatch(((releases[i]['body'] as String?) ?? '').trim())) {
continue; continue;
} }
var allAssetUrls = getReleaseAssetUrls(releases[i]); var allAssetsWithUrls = findReleaseAssetUrls(releases[i]);
List<MapEntry<String, String>> apkUrls = allAssetUrls List<MapEntry<String, String>> allAssetUrls = allAssetsWithUrls
.where((element) => element.key.toLowerCase().endsWith('.apk')) .map((e) => e['final_url'] as MapEntry<String, String>)
.toList();
var apkAssetsWithUrls = allAssetsWithUrls
.where((element) =>
(element['final_url'] as MapEntry<String, String>)
.key
.toLowerCase()
.endsWith('.apk'))
.toList(); .toList();
apkUrls = filterApks(apkUrls, additionalSettings['apkFilterRegEx'], var filteredApkUrls = filterApks(
apkAssetsWithUrls
.map((e) => e['final_url'] as MapEntry<String, String>)
.toList(),
additionalSettings['apkFilterRegEx'],
additionalSettings['invertAPKFilter']); additionalSettings['invertAPKFilter']);
if (apkUrls.isEmpty && additionalSettings['trackOnly'] != true) { var filteredApks = apkAssetsWithUrls
.where((e) => filteredApkUrls
.where((e2) =>
e2.key == (e['final_url'] as MapEntry<String, String>).key)
.isNotEmpty)
.toList();
if (apkAssetsWithUrls.isEmpty &&
additionalSettings['trackOnly'] != true) {
continue; continue;
} }
targetRelease = releases[i]; targetRelease = releases[i];
targetRelease['apkUrls'] = apkUrls; targetRelease['apkUrls'] = filteredApkUrls;
targetRelease['filteredAssets'] = filteredApks;
targetRelease['version'] = targetRelease['version'] =
additionalSettings['releaseTitleAsVersion'] == true additionalSettings['releaseTitleAsVersion'] == true
? nameToFilter ? nameToFilter
@ -420,6 +443,7 @@ class GitHub extends AppSource {
throw NoReleasesError(); throw NoReleasesError();
} }
String? version = targetRelease['version']; String? version = targetRelease['version'];
DateTime? releaseDate = getReleaseDateFromRelease( DateTime? releaseDate = getReleaseDateFromRelease(
targetRelease, useLatestAssetDateAsReleaseDate); targetRelease, useLatestAssetDateAsReleaseDate);
if (version == null) { if (version == null) {