From 086b2b949f378e8a0fd280ef0965f760345835a2 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 25 Nov 2022 23:12:15 -0500 Subject: [PATCH] Fixed bugfix with GitHub track-only Apps with no APK --- lib/app_sources/apkmirror.dart | 3 ++- lib/app_sources/fdroid.dart | 3 ++- lib/app_sources/github.dart | 5 +++-- lib/app_sources/gitlab.dart | 3 ++- lib/app_sources/izzyondroid.dart | 3 ++- lib/app_sources/mullvad.dart | 3 ++- lib/app_sources/signal.dart | 3 ++- lib/app_sources/sourceforge.dart | 3 ++- lib/providers/source_provider.dart | 7 ++++--- 9 files changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/app_sources/apkmirror.dart b/lib/app_sources/apkmirror.dart index a730e18..66053bd 100644 --- a/lib/app_sources/apkmirror.dart +++ b/lib/app_sources/apkmirror.dart @@ -25,7 +25,8 @@ class APKMirror extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { Response res = await get(Uri.parse('$standardUrl/feed')); if (res.statusCode == 200) { String? titleString = parse(res.body) diff --git a/lib/app_sources/fdroid.dart b/lib/app_sources/fdroid.dart index 7a2e62a..cc526ea 100644 --- a/lib/app_sources/fdroid.dart +++ b/lib/app_sources/fdroid.dart @@ -56,7 +56,8 @@ class FDroid extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { String? appId = tryInferringAppId(standardUrl); return getAPKUrlsFromFDroidPackagesAPIResponse( await get(Uri.parse('https://f-droid.org/api/v1/packages/$appId')), diff --git a/lib/app_sources/github.dart b/lib/app_sources/github.dart index a0347c2..3224b72 100644 --- a/lib/app_sources/github.dart +++ b/lib/app_sources/github.dart @@ -107,7 +107,8 @@ class GitHub extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { var includePrereleases = additionalData.isNotEmpty && additionalData[0] == 'true'; var fallbackToOlderReleases = @@ -145,7 +146,7 @@ class GitHub extends AppSource { continue; } var apkUrls = getReleaseAPKUrls(releases[i]); - if (apkUrls.isEmpty) { + if (apkUrls.isEmpty && !trackOnly) { continue; } targetRelease = releases[i]; diff --git a/lib/app_sources/gitlab.dart b/lib/app_sources/gitlab.dart index 62bee02..aa83b8d 100644 --- a/lib/app_sources/gitlab.dart +++ b/lib/app_sources/gitlab.dart @@ -25,7 +25,8 @@ class GitLab extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { Response res = await get(Uri.parse('$standardUrl/-/tags?format=atom')); if (res.statusCode == 200) { var standardUri = Uri.parse(standardUrl); diff --git a/lib/app_sources/izzyondroid.dart b/lib/app_sources/izzyondroid.dart index e63ae75..f2321f8 100644 --- a/lib/app_sources/izzyondroid.dart +++ b/lib/app_sources/izzyondroid.dart @@ -28,7 +28,8 @@ class IzzyOnDroid extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { String? appId = tryInferringAppId(standardUrl); return FDroid().getAPKUrlsFromFDroidPackagesAPIResponse( await get( diff --git a/lib/app_sources/mullvad.dart b/lib/app_sources/mullvad.dart index 4e691ab..bece54b 100644 --- a/lib/app_sources/mullvad.dart +++ b/lib/app_sources/mullvad.dart @@ -24,7 +24,8 @@ class Mullvad extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { Response res = await get(Uri.parse('$standardUrl/en/download/android')); if (res.statusCode == 200) { var version = parse(res.body) diff --git a/lib/app_sources/signal.dart b/lib/app_sources/signal.dart index 94cfdad..088e9a5 100644 --- a/lib/app_sources/signal.dart +++ b/lib/app_sources/signal.dart @@ -18,7 +18,8 @@ class Signal extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { Response res = await get(Uri.parse('https://updates.$host/android/latest.json')); if (res.statusCode == 200) { diff --git a/lib/app_sources/sourceforge.dart b/lib/app_sources/sourceforge.dart index f3d5e1e..43438d8 100644 --- a/lib/app_sources/sourceforge.dart +++ b/lib/app_sources/sourceforge.dart @@ -23,7 +23,8 @@ class SourceForge extends AppSource { @override Future getLatestAPKDetails( - String standardUrl, List additionalData) async { + String standardUrl, List additionalData, + {bool trackOnly = false}) async { Response res = await get(Uri.parse('$standardUrl/rss?path=/')); if (res.statusCode == 200) { var parsedHtml = parse(res.body); diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index bc2f4ba..ca2c5cd 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -148,7 +148,8 @@ class AppSource { } Future getLatestAPKDetails( - String standardUrl, List additionalData) { + String standardUrl, List additionalData, + {bool trackOnly = false}) { throw NotImplementedError(); } @@ -267,8 +268,8 @@ class SourceProvider { String? installedVersion}) async { String standardUrl = source.standardizeURL(preStandardizeUrl(url)); AppNames names = source.getAppNames(standardUrl); - APKDetails apk = - await source.getLatestAPKDetails(standardUrl, additionalData); + APKDetails apk = await source + .getLatestAPKDetails(standardUrl, additionalData, trackOnly: trackOnly); if (apk.apkUrls.isEmpty && !trackOnly) { throw NoAPKError(); }