mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-31 13:33:28 +01:00 
			
		
		
		
	Newest asset upload date as release date for GitHub (#1284)
This commit is contained in:
		| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Shizuku is not running", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Želite li ukloniti aplikaciju?", |         "one": "Želite li ukloniti aplikaciju?", | ||||||
|         "other": "Želite li ukloniti aplikacije?" |         "other": "Želite li ukloniti aplikacije?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku neběží", |     "shizukuBinderNotFound": "Shizuku neběží", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Odstranit Apku?", |         "one": "Odstranit Apku?", | ||||||
|         "other": "Odstranit Apky?" |         "other": "Odstranit Apky?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku läuft nicht", |     "shizukuBinderNotFound": "Shizuku läuft nicht", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "App entfernen?", |         "one": "App entfernen?", | ||||||
|         "other": "Apps entfernen?" |         "other": "Apps entfernen?" | ||||||
|   | |||||||
| @@ -293,6 +293,7 @@ | |||||||
|     "systemFontError": "Error loading the system font: {}", |     "systemFontError": "Error loading the system font: {}", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Remove App?", |         "one": "Remove App?", | ||||||
|         "other": "Remove Apps?" |         "other": "Remove Apps?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku no está operativo", |     "shizukuBinderNotFound": "Shizuku no está operativo", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "¿Eliminar Aplicación?", |         "one": "¿Eliminar Aplicación?", | ||||||
|         "other": "¿Eliminar Aplicaciones?" |         "other": "¿Eliminar Aplicaciones?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku در حال اجرا نیست", |     "shizukuBinderNotFound": "Shizuku در حال اجرا نیست", | ||||||
|     "useVersionCodeAsOSVersion": "استفاده کد نسخه برنامه به جای نسخه شناسایی شده توسط سیستم عامل استفاده کنید", |     "useVersionCodeAsOSVersion": "استفاده کد نسخه برنامه به جای نسخه شناسایی شده توسط سیستم عامل استفاده کنید", | ||||||
|     "requestHeader": "درخواست سطر بالایی", |     "requestHeader": "درخواست سطر بالایی", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "برنامه حذف شود؟", |         "one": "برنامه حذف شود؟", | ||||||
|         "other": "برنامه ها حذف شوند؟" |         "other": "برنامه ها حذف شوند؟" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Shizuku is not running", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Supprimer l'application ?", |         "one": "Supprimer l'application ?", | ||||||
|         "other": "Supprimer les applications ?" |         "other": "Supprimer les applications ?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "A Shizuku nem fut", |     "shizukuBinderNotFound": "A Shizuku nem fut", | ||||||
|     "useVersionCodeAsOSVersion": "Az app versionCode használata a rendszer által észlelt verzióként", |     "useVersionCodeAsOSVersion": "Az app versionCode használata a rendszer által észlelt verzióként", | ||||||
|     "requestHeader": "Kérelem fejléc", |     "requestHeader": "Kérelem fejléc", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Eltávolítja az alkalmazást?", |         "one": "Eltávolítja az alkalmazást?", | ||||||
|         "other": "Eltávolítja az alkalmazást?" |         "other": "Eltávolítja az alkalmazást?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku non è in esecuzione", |     "shizukuBinderNotFound": "Shizuku non è in esecuzione", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Rimuovere l'app?", |         "one": "Rimuovere l'app?", | ||||||
|         "other": "Rimuovere le app?" |         "other": "Rimuovere le app?" | ||||||
|   | |||||||
| @@ -293,6 +293,7 @@ | |||||||
|     "systemFontError": "システムフォントの読み込みエラー: {}", |     "systemFontError": "システムフォントの読み込みエラー: {}", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "アプリを削除しますか?", |         "one": "アプリを削除しますか?", | ||||||
|         "other": "アプリを削除しますか?" |         "other": "アプリを削除しますか?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Shizuku is not running", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "App verwijderen?", |         "one": "App verwijderen?", | ||||||
|         "other": "Apps verwijderen?" |         "other": "Apps verwijderen?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Shizuku is not running", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Usunąć aplikację?", |         "one": "Usunąć aplikację?", | ||||||
|         "few": "Usunąć aplikacje?", |         "few": "Usunąć aplikacje?", | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku não está rodando", |     "shizukuBinderNotFound": "Shizuku não está rodando", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Remover aplicativo?", |         "one": "Remover aplicativo?", | ||||||
|         "other": "Remover aplicativos?" |         "other": "Remover aplicativos?" | ||||||
|   | |||||||
| @@ -293,6 +293,7 @@ | |||||||
|     "systemFontError": "Ошибка загрузки системного шрифта: {}", |     "systemFontError": "Ошибка загрузки системного шрифта: {}", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Удалить приложение?", |         "one": "Удалить приложение?", | ||||||
|         "other": "Удалить приложения?" |         "other": "Удалить приложения?" | ||||||
|   | |||||||
| @@ -277,6 +277,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Shizuku is not running", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Ta Bort App?", |         "one": "Ta Bort App?", | ||||||
|         "other": "Ta Bort Appar?" |         "other": "Ta Bort Appar?" | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ | |||||||
|     "shizukuBinderNotFound": "Shizuku is not running", |     "shizukuBinderNotFound": "Shizuku is not running", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Uygulamayı Kaldır?", |         "one": "Uygulamayı Kaldır?", | ||||||
|         "other": "Uygulamaları Kaldır?" |         "other": "Uygulamaları Kaldır?" | ||||||
|   | |||||||
| @@ -289,6 +289,7 @@ | |||||||
|     "shizuku": "Shizuku", |     "shizuku": "Shizuku", | ||||||
|     "root": "Root", |     "root": "Root", | ||||||
|     "shizukuBinderNotFound": "Shizuku chưa khởi động", |     "shizukuBinderNotFound": "Shizuku chưa khởi động", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion":{ |     "removeAppQuestion":{ | ||||||
|         "one": "Gỡ ứng dụng?", |         "one": "Gỡ ứng dụng?", | ||||||
|         "other": "Gỡ ứng dụng?" |         "other": "Gỡ ứng dụng?" | ||||||
|   | |||||||
| @@ -293,6 +293,7 @@ | |||||||
|     "systemFontError": "加载系统字体出错:{}", |     "systemFontError": "加载系统字体出错:{}", | ||||||
|     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", |     "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", | ||||||
|     "requestHeader": "Request header", |     "requestHeader": "Request header", | ||||||
|  |     "useLatestAssetDateAsReleaseDate": "Use latest asset upload as release date", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "是否删除应用?", |         "one": "是否删除应用?", | ||||||
|         "other": "是否删除应用?" |         "other": "是否删除应用?" | ||||||
|   | |||||||
| @@ -76,6 +76,10 @@ class GitHub extends AppSource { | |||||||
|       [ |       [ | ||||||
|         GeneratedFormSwitch('dontSortReleasesList', |         GeneratedFormSwitch('dontSortReleasesList', | ||||||
|             label: tr('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 verifyLatestTag = additionalSettings['verifyLatestTag'] == true; | ||||||
|     bool dontSortReleasesList = |     bool dontSortReleasesList = | ||||||
|         additionalSettings['dontSortReleasesList'] == true; |         additionalSettings['dontSortReleasesList'] == true; | ||||||
|  |     bool useLatestAssetDateAsReleaseDate = | ||||||
|  |         additionalSettings['useLatestAssetDateAsReleaseDate'] == true; | ||||||
|     dynamic latestRelease; |     dynamic latestRelease; | ||||||
|     if (verifyLatestTag) { |     if (verifyLatestTag) { | ||||||
|       var temp = requestUrl.split('?'); |       var temp = requestUrl.split('?'); | ||||||
| @@ -277,10 +283,31 @@ class GitHub extends AppSource { | |||||||
|               .toList() ?? |               .toList() ?? | ||||||
|           []; |           []; | ||||||
|  |  | ||||||
|       DateTime? getReleaseDateFromRelease(dynamic rel) => |       DateTime? getPublishDateFromRelease(dynamic rel) => | ||||||
|           rel?['published_at'] != null |           rel?['published_at'] != null | ||||||
|               ? DateTime.parse(rel['published_at']) |               ? DateTime.parse(rel['published_at']) | ||||||
|               : null; |               : null; | ||||||
|  |       DateTime? getNewestAssetDateFromRelease(dynamic rel) { | ||||||
|  |         var t = (rel['assets'] as List<dynamic>?) | ||||||
|  |             ?.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) { |       if (dontSortReleasesList) { | ||||||
|         releases = releases.reversed.toList(); |         releases = releases.reversed.toList(); | ||||||
|       } else { |       } else { | ||||||
| @@ -305,8 +332,12 @@ class GitHub extends AppSource { | |||||||
|                   (nameA as String).substring(matchA!.start, matchA.end), |                   (nameA as String).substring(matchA!.start, matchA.end), | ||||||
|                   (nameB as String).substring(matchB!.start, matchB.end)); |                   (nameB as String).substring(matchB!.start, matchB.end)); | ||||||
|             } else { |             } else { | ||||||
|               return (getReleaseDateFromRelease(a) ?? DateTime(1)) |               return (getReleaseDateFromRelease( | ||||||
|                   .compareTo(getReleaseDateFromRelease(b) ?? DateTime(0)); |                           a, useLatestAssetDateAsReleaseDate) ?? | ||||||
|  |                       DateTime(1)) | ||||||
|  |                   .compareTo(getReleaseDateFromRelease( | ||||||
|  |                           b, useLatestAssetDateAsReleaseDate) ?? | ||||||
|  |                       DateTime(0)); | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|         }); |         }); | ||||||
| @@ -366,7 +397,8 @@ class GitHub extends AppSource { | |||||||
|         throw NoReleasesError(); |         throw NoReleasesError(); | ||||||
|       } |       } | ||||||
|       String? version = targetRelease['tag_name'] ?? targetRelease['name']; |       String? version = targetRelease['tag_name'] ?? targetRelease['name']; | ||||||
|       DateTime? releaseDate = getReleaseDateFromRelease(targetRelease); |       DateTime? releaseDate = getReleaseDateFromRelease( | ||||||
|  |           targetRelease, useLatestAssetDateAsReleaseDate); | ||||||
|       if (version == null) { |       if (version == null) { | ||||||
|         throw NoVersionError(); |         throw NoVersionError(); | ||||||
|       } |       } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user