mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-31 13:33:28 +01:00 
			
		
		
		
	Add GitHub "don't sort" toggle (#925)
This commit is contained in:
		| @@ -255,6 +255,7 @@ | ||||
|    "autoExportOnChanges": "Auto-export on changes", | ||||
|    "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|    "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|    "dontSortReleasesList": "Retain release order from API", | ||||
|      "removeAppQuestion": { | ||||
|       "one": "Želite li ukloniti aplikaciju?", | ||||
|       "other": "Želite li ukloniti aplikacije?" | ||||
|   | ||||
| @@ -258,6 +258,7 @@ | ||||
|     "autoExportOnChanges": "Automatický export při změnách", | ||||
|     "filterVersionsByRegEx": "Filtrovat verze podle regulárního výrazu", | ||||
|     "trySelectingSuggestedVersionCode": "Zkusit vybrat navrhovaný kód verze APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Odstranit Apku?", | ||||
|         "other": "Odstranit Apky?" | ||||
|   | ||||
| @@ -255,6 +255,7 @@ | ||||
|     "autoExportOnChanges": "Automatischer Export bei Änderung", | ||||
|     "filterVersionsByRegEx": "Versionen nach regulären Ausdrücken filtern", | ||||
|     "trySelectingSuggestedVersionCode": "Versuchen, die vorgeschlagene APK-Code-Version auszuwählen", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "App entfernen?", | ||||
|         "other": "Apps entfernen?" | ||||
|   | ||||
| @@ -258,6 +258,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Remove App?", | ||||
|         "other": "Remove Apps?" | ||||
|   | ||||
| @@ -255,6 +255,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "¿Eliminar Aplicación?", | ||||
|         "other": "¿Eliminar Aplicaciones?" | ||||
|   | ||||
| @@ -255,6 +255,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "برنامه حذف شود؟", | ||||
|         "other": "برنامه ها حذف شوند؟" | ||||
|   | ||||
| @@ -255,6 +255,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Supprimer l'application ?", | ||||
|         "other": "Supprimer les applications ?" | ||||
|   | ||||
| @@ -254,6 +254,7 @@ | ||||
|     "autoExportOnChanges": "Auto-exportálás a változások után", | ||||
|     "filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel", | ||||
|     "trySelectingSuggestedVersionCode": "Próbálja ki a javasolt verziókódú APK-t", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Eltávolítja az alkalmazást?", | ||||
|         "other": "Eltávolítja az alkalmazást?" | ||||
|   | ||||
| @@ -255,6 +255,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Rimuovere l'app?", | ||||
|         "other": "Rimuovere le app?" | ||||
|   | ||||
| @@ -258,6 +258,7 @@ | ||||
|     "autoExportOnChanges": "変更があった際に自動でエクスポートする", | ||||
|     "filterVersionsByRegEx": "正規表現でバージョンをフィルタリングする", | ||||
|     "trySelectingSuggestedVersionCode": "提案されたバージョンコードのAPKを選択する", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "アプリを削除しますか?", | ||||
|         "other": "アプリを削除しますか?" | ||||
|   | ||||
| @@ -261,6 +261,7 @@ | ||||
|     "autoExportOnChanges": "Automatyczny eksport po wprowadzeniu zmian", | ||||
|     "filterVersionsByRegEx": "Filtruj wersje według wyrażenia regularnego", | ||||
|     "trySelectingSuggestedVersionCode": "Spróbuj wybierać sugerowany kod wersji APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Usunąć aplikację?", | ||||
|         "few": "Usunąć aplikacje?", | ||||
|   | ||||
| @@ -258,6 +258,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Remover App?", | ||||
|         "other": "Remover Apps?" | ||||
|   | ||||
| @@ -255,6 +255,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "Удалить приложение?", | ||||
|         "other": "Удалить приложения?" | ||||
|   | ||||
| @@ -256,6 +256,7 @@ | ||||
|     "autoExportOnChanges": "Auto-export on changes", | ||||
|     "filterVersionsByRegEx": "Filter Versions by Regular Expression", | ||||
|     "trySelectingSuggestedVersionCode": "Try selecting suggested versionCode APK", | ||||
|     "dontSortReleasesList": "Retain release order from API", | ||||
|     "removeAppQuestion": { | ||||
|         "one": "是否删除应用?", | ||||
|         "other": "是否删除应用?" | ||||
|   | ||||
| @@ -72,9 +72,10 @@ class GitHub extends AppSource { | ||||
|               } | ||||
|             ]) | ||||
|       ], | ||||
|       [GeneratedFormSwitch('verifyLatestTag', label: tr('verifyLatestTag'))], | ||||
|       [ | ||||
|         GeneratedFormSwitch('verifyLatestTag', | ||||
|             label: tr('verifyLatestTag'), defaultValue: false) | ||||
|         GeneratedFormSwitch('dontSortReleasesList', | ||||
|             label: tr('dontSortReleasesList')) | ||||
|       ] | ||||
|     ]; | ||||
|  | ||||
| @@ -230,6 +231,8 @@ class GitHub extends AppSource { | ||||
|             ? additionalSettings['filterReleaseNotesByRegEx'] | ||||
|             : null; | ||||
|     bool verifyLatestTag = additionalSettings['verifyLatestTag'] == true; | ||||
|     bool dontSortReleasesList = | ||||
|         additionalSettings['dontSortReleasesList'] == true; | ||||
|     String? latestTag; | ||||
|     if (verifyLatestTag) { | ||||
|       var temp = requestUrl.split('?'); | ||||
| @@ -265,32 +268,34 @@ class GitHub extends AppSource { | ||||
|           rel?['published_at'] != null | ||||
|               ? DateTime.parse(rel['published_at']) | ||||
|               : null; | ||||
|       releases.sort((a, b) { | ||||
|         // See #478 and #534 | ||||
|         if (a == b) { | ||||
|           return 0; | ||||
|         } else if (a == null) { | ||||
|           return -1; | ||||
|         } else if (b == null) { | ||||
|           return 1; | ||||
|         } else { | ||||
|           var nameA = a['tag_name'] ?? a['name']; | ||||
|           var nameB = b['tag_name'] ?? b['name']; | ||||
|           var stdFormats = findStandardFormatsForVersion(nameA, true) | ||||
|               .intersection(findStandardFormatsForVersion(nameB, true)); | ||||
|           if (stdFormats.isNotEmpty) { | ||||
|             var reg = RegExp(stdFormats.first); | ||||
|             var matchA = reg.firstMatch(nameA); | ||||
|             var matchB = reg.firstMatch(nameB); | ||||
|             return compareAlphaNumeric( | ||||
|                 (nameA as String).substring(matchA!.start, matchA.end), | ||||
|                 (nameB as String).substring(matchB!.start, matchB.end)); | ||||
|       if (dontSortReleasesList) { | ||||
|         releases.sort((a, b) { | ||||
|           // See #478 and #534 | ||||
|           if (a == b) { | ||||
|             return 0; | ||||
|           } else if (a == null) { | ||||
|             return -1; | ||||
|           } else if (b == null) { | ||||
|             return 1; | ||||
|           } else { | ||||
|             return (getReleaseDateFromRelease(a) ?? DateTime(1)) | ||||
|                 .compareTo(getReleaseDateFromRelease(b) ?? DateTime(0)); | ||||
|             var nameA = a['tag_name'] ?? a['name']; | ||||
|             var nameB = b['tag_name'] ?? b['name']; | ||||
|             var stdFormats = findStandardFormatsForVersion(nameA, true) | ||||
|                 .intersection(findStandardFormatsForVersion(nameB, true)); | ||||
|             if (stdFormats.isNotEmpty) { | ||||
|               var reg = RegExp(stdFormats.first); | ||||
|               var matchA = reg.firstMatch(nameA); | ||||
|               var matchB = reg.firstMatch(nameB); | ||||
|               return compareAlphaNumeric( | ||||
|                   (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)); | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|         }); | ||||
|       } | ||||
|       if (latestTag != null && | ||||
|           releases.isNotEmpty && | ||||
|           latestTag != | ||||
|   | ||||
| @@ -107,7 +107,7 @@ class HTML extends AppSource { | ||||
|       [ | ||||
|         GeneratedFormTextField('intermediateLinkRegex', | ||||
|             label: tr('intermediateLinkRegex'), | ||||
|             hint: '([0-9]+\.)*[0-9]+/\$', | ||||
|             hint: '([0-9]+.)*[0-9]+/\$', | ||||
|             required: false, | ||||
|             additionalValidators: [(value) => regExValidator(value)]) | ||||
|       ], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user