diff --git a/assets/translations/bs.json b/assets/translations/bs.json index 77ed5a8..9dc697d 100644 --- a/assets/translations/bs.json +++ b/assets/translations/bs.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku is not running", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Želite li ukloniti aplikaciju?", "other": "Želite li ukloniti aplikacije?" diff --git a/assets/translations/cs.json b/assets/translations/cs.json index 17840ac..cd4378c 100644 --- a/assets/translations/cs.json +++ b/assets/translations/cs.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku neběží", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Odstranit Apku?", "other": "Odstranit Apky?" diff --git a/assets/translations/de.json b/assets/translations/de.json index bbf5352..58e184b 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku läuft nicht", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "App entfernen?", "other": "Apps entfernen?" diff --git a/assets/translations/en.json b/assets/translations/en.json index d3f92f1..74a25d7 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -293,6 +293,7 @@ "systemFontError": "Error loading the system font: {}", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Remove App?", "other": "Remove Apps?" diff --git a/assets/translations/es.json b/assets/translations/es.json index 9b57cee..b02120a 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku no está operativo", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "¿Eliminar Aplicación?", "other": "¿Eliminar Aplicaciones?" diff --git a/assets/translations/fa.json b/assets/translations/fa.json index ecef240..30c9881 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku در حال اجرا نیست", "useVersionCodeAsOSVersion": "استفاده کد نسخه برنامه به جای نسخه شناسایی شده توسط سیستم عامل استفاده کنید", "requestHeader": "درخواست سطر بالایی", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "برنامه حذف شود؟", "other": "برنامه ها حذف شوند؟" diff --git a/assets/translations/fr.json b/assets/translations/fr.json index d0acda6..3a3fa7e 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku is not running", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Supprimer l'application ?", "other": "Supprimer les applications ?" diff --git a/assets/translations/hu.json b/assets/translations/hu.json index faec027..ecf9bf2 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "A Shizuku nem fut", "useVersionCodeAsOSVersion": "Az app versionCode használata a rendszer által észlelt verzióként", "requestHeader": "Kérelem fejléc", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Eltávolítja az alkalmazást?", "other": "Eltávolítja az alkalmazást?" diff --git a/assets/translations/it.json b/assets/translations/it.json index e561991..48dfc9b 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku non è in esecuzione", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Rimuovere l'app?", "other": "Rimuovere le app?" diff --git a/assets/translations/ja.json b/assets/translations/ja.json index 5b9b192..0cfbf76 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -293,6 +293,7 @@ "systemFontError": "システムフォントの読み込みエラー: {}", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "アプリを削除しますか?", "other": "アプリを削除しますか?" diff --git a/assets/translations/nl.json b/assets/translations/nl.json index 720782a..af5610e 100644 --- a/assets/translations/nl.json +++ b/assets/translations/nl.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku is not running", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "App verwijderen?", "other": "Apps verwijderen?" diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 27094ce..574cc79 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku is not running", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Usunąć aplikację?", "few": "Usunąć aplikacje?", diff --git a/assets/translations/pt.json b/assets/translations/pt.json index 2bbc226..cdb38fe 100644 --- a/assets/translations/pt.json +++ b/assets/translations/pt.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku não está rodando", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Remover aplicativo?", "other": "Remover aplicativos?" diff --git a/assets/translations/ru.json b/assets/translations/ru.json index f166592..dbb281f 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -293,6 +293,7 @@ "systemFontError": "Ошибка загрузки системного шрифта: {}", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Удалить приложение?", "other": "Удалить приложения?" diff --git a/assets/translations/sv.json b/assets/translations/sv.json index 11e145b..9c068c7 100644 --- a/assets/translations/sv.json +++ b/assets/translations/sv.json @@ -277,6 +277,7 @@ "shizukuBinderNotFound": "Shizuku is not running", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Ta Bort App?", "other": "Ta Bort Appar?" diff --git a/assets/translations/tr.json b/assets/translations/tr.json index c03ebf0..1b6ba32 100644 --- a/assets/translations/tr.json +++ b/assets/translations/tr.json @@ -291,6 +291,7 @@ "shizukuBinderNotFound": "Shizuku is not running", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "Uygulamayı Kaldır?", "other": "Uygulamaları Kaldır?" diff --git a/assets/translations/vi.json b/assets/translations/vi.json index 054a56c..6bbbf1c 100644 --- a/assets/translations/vi.json +++ b/assets/translations/vi.json @@ -289,6 +289,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku chưa khởi động", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion":{ "one": "Gỡ ứng dụng?", "other": "Gỡ ứng dụng?" diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 6ed7f0b..07be631 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -293,6 +293,7 @@ "systemFontError": "加载系统字体出错:{}", "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", + "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", "removeAppQuestion": { "one": "是否删除应用?", "other": "是否删除应用?" diff --git a/lib/app_sources/github.dart b/lib/app_sources/github.dart index 7c0e19d..c08ae5a 100644 --- a/lib/app_sources/github.dart +++ b/lib/app_sources/github.dart @@ -76,6 +76,10 @@ class GitHub extends AppSource { [ GeneratedFormSwitch('dontSortReleasesList', label: tr('dontSortReleasesList')) + ], + [ + GeneratedFormSwitch('useLatestAssetDateAsReleaseDate', + label: tr('useLatestAssetDateAsReleaseDate'), defaultValue: false) ] ]; @@ -237,6 +241,8 @@ class GitHub extends AppSource { bool verifyLatestTag = additionalSettings['verifyLatestTag'] == true; bool dontSortReleasesList = additionalSettings['dontSortReleasesList'] == true; + bool useLatestAssetDateAsReleaseDate = + additionalSettings['useLatestAssetDateAsReleaseDate'] == true; dynamic latestRelease; if (verifyLatestTag) { var temp = requestUrl.split('?'); @@ -277,10 +283,31 @@ class GitHub extends AppSource { .toList() ?? []; - DateTime? getReleaseDateFromRelease(dynamic rel) => + DateTime? getPublishDateFromRelease(dynamic rel) => rel?['published_at'] != null ? DateTime.parse(rel['published_at']) : null; + DateTime? getNewestAssetDateFromRelease(dynamic rel) { + var t = (rel['assets'] as List?) + ?.map((e) { + return e?['updated_at'] != null + ? DateTime.parse(e['updated_at']) + : null; + }) + .where((e) => e != null) + .toList(); + t?.sort((a, b) => b!.compareTo(a!)); + if (t?.isNotEmpty == true) { + return t!.first; + } + return null; + } + + DateTime? getReleaseDateFromRelease(dynamic rel, bool useAssetDate) => + !useAssetDate + ? getPublishDateFromRelease(rel) + : getNewestAssetDateFromRelease(rel); + if (dontSortReleasesList) { releases = releases.reversed.toList(); } else { @@ -305,8 +332,12 @@ class GitHub extends AppSource { (nameA as String).substring(matchA!.start, matchA.end), (nameB as String).substring(matchB!.start, matchB.end)); } else { - return (getReleaseDateFromRelease(a) ?? DateTime(1)) - .compareTo(getReleaseDateFromRelease(b) ?? DateTime(0)); + return (getReleaseDateFromRelease( + a, useLatestAssetDateAsReleaseDate) ?? + DateTime(1)) + .compareTo(getReleaseDateFromRelease( + b, useLatestAssetDateAsReleaseDate) ?? + DateTime(0)); } } }); @@ -366,7 +397,8 @@ class GitHub extends AppSource { throw NoReleasesError(); } String? version = targetRelease['tag_name'] ?? targetRelease['name']; - DateTime? releaseDate = getReleaseDateFromRelease(targetRelease); + DateTime? releaseDate = getReleaseDateFromRelease( + targetRelease, useLatestAssetDateAsReleaseDate); if (version == null) { throw NoVersionError(); }