diff --git a/assets/translations/de.json b/assets/translations/de.json index 040f4cd..7499014 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "Ja, als aktualisiert markieren", "fdroid": "F-Droid Official", "appIdOrName": "App ID oder Name", + "appId": "App ID", "appWithIdOrNameNotFound": "Es wurde keine App mit dieser ID oder diesem Namen gefunden", "reposHaveMultipleApps": "Repos können mehrere Apps enthalten", "fdroidThirdPartyRepo": "F-Droid Third-Party Repo", diff --git a/assets/translations/en.json b/assets/translations/en.json index eb59399..1f543ac 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "Yes, Mark as Updated", "fdroid": "F-Droid Official", "appIdOrName": "App ID or Name", + "appId": "App ID", "appWithIdOrNameNotFound": "No App was found with that ID or Name", "reposHaveMultipleApps": "Repos may contain multiple Apps", "fdroidThirdPartyRepo": "F-Droid Third-Party Repo", diff --git a/assets/translations/es.json b/assets/translations/es.json index c013d01..d3b6500 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "Sí, Marcar como Actualizada", "fdroid": "Repositorio oficial de F-Droid", "appIdOrName": "ID o Nombre de la Aplicación", + "appId": "ID de la Aplicación", "appWithIdOrNameNotFound": "No se han encontrado aplicaciones con esa ID o nombre", "reposHaveMultipleApps": "Los repositorios pueden contener varias aplicaciones", "fdroidThirdPartyRepo": "Rpositorios de terceros de F-Droid", diff --git a/assets/translations/fa.json b/assets/translations/fa.json index 5685c1e..d7eb778 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "بله، علامت گذاری به عنوان به روز شده", "fdroid": "F-Droid Official", "appIdOrName": "شناسه یا نام برنامه", + "appId": "App ID", "appWithIdOrNameNotFound": "هیچ برنامه ای با آن شناسه یا نام یافت نشد", "reposHaveMultipleApps": "مخازن ممکن است شامل چندین برنامه باشد", "fdroidThirdPartyRepo": "مخازن شخص ثالث F-Droid", diff --git a/assets/translations/fr.json b/assets/translations/fr.json index 90c060f..dfc8876 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "Oui, marquer comme mis à jour", "fdroid": "F-Droid Official", "appIdOrName": "ID ou nom de l'application", + "appId": "ID de l'application", "appWithIdOrNameNotFound": "Aucune application n'a été trouvée avec cet identifiant ou ce nom", "reposHaveMultipleApps": "Les dépôts peuvent contenir plusieurs applications", "fdroidThirdPartyRepo": "Dépôt tiers F-Droid", diff --git a/assets/translations/hu.json b/assets/translations/hu.json index c73ef70..a003fbc 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "Igen, megjelölés frissítettként", "fdroid": "F-Droid Official", "appIdOrName": "App ID vagy név", + "appId": "App ID", "appWithIdOrNameNotFound": "Nem található app ezzel az azonosítóval vagy névvel", "reposHaveMultipleApps": "A repók több alkalmazást is tartalmazhatnak", "fdroidThirdPartyRepo": "F-Droid Harmadik-fél Repo", diff --git a/assets/translations/it.json b/assets/translations/it.json index 0cff11d..53b20c6 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "Sì, contrassegna come aggiornato", "fdroid": "F-Droid Official", "appIdOrName": "ID o nome dell'App", + "appId": "ID dell'App", "appWithIdOrNameNotFound": "Non è stata trovata alcuna App con quell'ID o nome", "reposHaveMultipleApps": "I repository possono contenere più App", "fdroidThirdPartyRepo": "Repository F-Droid di terze parti", diff --git a/assets/translations/ja.json b/assets/translations/ja.json index 47200fa..135a8ab 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "はい、アップデート済みとしてマークします", "fdroid": "F-Droid Official", "appIdOrName": "アプリのIDまたは名前", + "appId": "App ID", "appWithIdOrNameNotFound": "そのIDや名前を持つアプリは見つかりませんでした", "reposHaveMultipleApps": "リポジトリには複数のアプリが含まれることがあります", "fdroidThirdPartyRepo": "F-Droid サードパーティリポジトリ", diff --git a/assets/translations/zh.json b/assets/translations/zh.json index f00d46b..83c08b2 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -180,6 +180,7 @@ "yesMarkUpdated": "是,标记为已更新", "fdroid": "F-Droid 官方存储库", "appIdOrName": "应用 ID 或名称", + "appId": "App ID", "appWithIdOrNameNotFound": "未找到符合此 ID 或名称的应用", "reposHaveMultipleApps": "存储库中可能包含多个应用", "fdroidThirdPartyRepo": "F-Droid 第三方存储库", diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index c06e3fe..18fc509 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -129,6 +129,11 @@ class AppsPageState extends State { } } } + if (filter.idFilter.isNotEmpty) { + if (!app.app.id.contains(filter.idFilter)) { + return false; + } + } if (filter.categoryFilter.isNotEmpty && filter.categoryFilter .intersection(app.app.categories.toSet()) @@ -941,6 +946,12 @@ class AppsPageState extends State { required: false, defaultValue: vals['author']) ], + [ + GeneratedFormTextField('appId', + label: tr('appId'), + required: false, + defaultValue: vals['appId']) + ], [ GeneratedFormSwitch('upToDateApps', label: tr('upToDateApps'), @@ -1072,6 +1083,7 @@ class AppsPageState extends State { class AppsFilter { late String nameFilter; late String authorFilter; + late String idFilter; late bool includeUptodate; late bool includeNonInstalled; late Set categoryFilter; @@ -1080,6 +1092,7 @@ class AppsFilter { AppsFilter( {this.nameFilter = '', this.authorFilter = '', + this.idFilter = '', this.includeUptodate = true, this.includeNonInstalled = true, this.categoryFilter = const {}, @@ -1089,6 +1102,7 @@ class AppsFilter { return { 'appName': nameFilter, 'author': authorFilter, + 'appId': idFilter, 'upToDateApps': includeUptodate, 'nonInstalledApps': includeNonInstalled, 'sourceFilter': sourceFilter @@ -1098,6 +1112,7 @@ class AppsFilter { setFormValuesFromMap(Map values) { nameFilter = values['appName']!; authorFilter = values['author']!; + idFilter = values['appId']!; includeUptodate = values['upToDateApps']; includeNonInstalled = values['nonInstalledApps']; sourceFilter = values['sourceFilter']; @@ -1106,6 +1121,7 @@ class AppsFilter { bool isIdenticalTo(AppsFilter other, SettingsProvider settingsProvider) => authorFilter.trim() == other.authorFilter.trim() && nameFilter.trim() == other.nameFilter.trim() && + idFilter.trim() == other.idFilter.trim() && includeUptodate == other.includeUptodate && includeNonInstalled == other.includeNonInstalled && settingsProvider.setEqual(categoryFilter, other.categoryFilter) &&