From 9beb839bf4f029433ed4d28e6cec6d5024f23fc2 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sun, 17 Dec 2023 14:13:26 -0500 Subject: [PATCH] Fix 'verify latest' option for GitHub (#1163) --- lib/app_sources/github.dart | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/app_sources/github.dart b/lib/app_sources/github.dart index 2456335..6ed69c8 100644 --- a/lib/app_sources/github.dart +++ b/lib/app_sources/github.dart @@ -234,7 +234,7 @@ class GitHub extends AppSource { bool verifyLatestTag = additionalSettings['verifyLatestTag'] == true; bool dontSortReleasesList = additionalSettings['dontSortReleasesList'] == true; - String? latestTag; + dynamic latestRelease; if (verifyLatestTag) { var temp = requestUrl.split('?'); Response res = await sourceRequest( @@ -245,12 +245,20 @@ class GitHub extends AppSource { } throw getObtainiumHttpError(res); } - var jsres = jsonDecode(res.body); - latestTag = jsres['tag_name'] ?? jsres['name']; + latestRelease = jsonDecode(res.body); } Response res = await sourceRequest(requestUrl); if (res.statusCode == 200) { var releases = jsonDecode(res.body) as List; + if (latestRelease != null) { + var latestTag = latestRelease['tag_name'] ?? latestRelease['name']; + if (releases + .where((element) => + (element['tag_name'] ?? element['name']) == latestTag) + .isEmpty) { + releases = [latestRelease, ...releases]; + } + } List> getReleaseAPKUrls(dynamic release) => (release['assets'] as List?) @@ -299,13 +307,13 @@ class GitHub extends AppSource { } }); } - if (latestTag != null && + if (latestRelease != null && releases.isNotEmpty && - latestTag != + latestRelease != (releases[releases.length - 1]['tag_name'] ?? releases[0]['name'])) { - var ind = releases.indexWhere( - (element) => latestTag == (element['tag_name'] ?? element['name'])); + var ind = releases.indexWhere((element) => + latestRelease == (element['tag_name'] ?? element['name'])); if (ind >= 0) { releases.add(releases.removeAt(ind)); }