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