Add support for zipped APKs - GitHub/HTML only for now (#983)

This commit is contained in:
Imran Remtulla
2025-10-11 18:29:59 -04:00
parent 7cb9ca128b
commit 8bdc0f8d12
32 changed files with 144 additions and 32 deletions

View File

@@ -18,6 +18,7 @@ class GitHub extends AppSource {
appIdInferIsOptional = true;
showReleaseDateAsVersionToggle = true;
this.hostChanged = hostChanged;
allowIncludeZips = true;
sourceConfigSettingFormItems = [
GeneratedFormTextField(
@@ -370,6 +371,7 @@ class GitHub extends AppSource {
additionalSettings['useLatestAssetDateAsReleaseDate'] == true;
String sortMethod =
additionalSettings['sortMethodChoice'] ?? 'smartname-datefallback';
bool includeZips = additionalSettings['includeZips'] == true;
dynamic latestRelease;
if (verifyLatestTag) {
var temp = requestUrl.split('?');
@@ -402,7 +404,8 @@ class GitHub extends AppSource {
findReleaseAssetUrls(dynamic release) =>
(release['assets'] as List<dynamic>?)?.map((e) {
var url = !e['name'].toString().toLowerCase().endsWith('.apk')
var ext = e['name'].toString().toLowerCase().split('.').last;
var url = !(ext == 'apk' || (includeZips && ext == 'zip'))
? (e['browser_download_url'] ?? e['url'])
: (e['url'] ?? e['browser_download_url']);
url = undoGHProxyMod(url, sourceConfigSettingValues);
@@ -542,14 +545,13 @@ class GitHub extends AppSource {
List<MapEntry<String, String>> allAssetUrls = allAssetsWithUrls
.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();
var apkAssetsWithUrls = allAssetsWithUrls.where((element) {
var ext = (element['final_url'] as MapEntry<String, String>).key
.toLowerCase()
.split('.')
.last;
return ext == 'apk' || (includeZips && ext == 'zip');
}).toList();
var filteredApkUrls = filterApks(
apkAssetsWithUrls