diff --git a/lib/fido/views/passkeys_screen.dart b/lib/fido/views/passkeys_screen.dart index a2512d47..1467ba86 100644 --- a/lib/fido/views/passkeys_screen.dart +++ b/lib/fido/views/passkeys_screen.dart @@ -295,6 +295,7 @@ class _FidoUnlockedPageState extends ConsumerState<_FidoUnlockedPage> { } final credential = _selected; + final searchText = searchController.text; return FidoActions( devicePath: widget.node.path, actions: (context) => { @@ -339,6 +340,8 @@ class _FidoUnlockedPageState extends ConsumerState<_FidoUnlockedPage> { }, builder: (context) => AppPage( title: l10n.s_passkeys, + alternativeTitle: + searchText != '' ? l10n.l_results_for(searchText) : null, capabilities: const [Capability.fido2], footnote: '${l10n.p_passkeys_used(credentials.length, maxCreds)} ${l10n.p_non_passkeys_note}', @@ -496,15 +499,19 @@ class _FidoUnlockedPageState extends ConsumerState<_FidoUnlockedPage> { }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: filteredCredentials - .map( - (cred) => _CredentialListItem( - cred, - expanded: expanded, - selected: _selected == cred, - ), - ) - .toList(), + children: [ + if (filteredCredentials.isEmpty) + Center( + child: Text(l10n.s_no_passkeys), + ), + ...filteredCredentials.map( + (cred) => _CredentialListItem( + cred, + expanded: expanded, + selected: _selected == cred, + ), + ), + ], ), ); }, diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 919a0116..87c05849 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -352,6 +352,12 @@ }, "s_accounts": "Konten", "s_no_accounts": "Keine Konten", + "l_results_for": null, + "@l_results_for": { + "placeholders": { + "query": {} + } + }, "l_authenticator_get_started": null, "l_no_accounts_desc": null, "s_add_account": "Konto hinzufügen", @@ -419,6 +425,7 @@ } }, "s_passkeys": null, + "s_no_passkeys": null, "l_ready_to_use": "Bereit zur Verwendung", "l_register_sk_on_websites": "Als Sicherheitsschlüssel auf Webseiten registrieren", "l_no_discoverable_accounts": "Keine erkennbaren Konten", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index d9593451..d4626477 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -352,6 +352,12 @@ }, "s_accounts": "Accounts", "s_no_accounts": "No accounts", + "l_results_for": "Results for \"{query}\"", + "@l_results_for": { + "placeholders": { + "query": {} + } + }, "l_authenticator_get_started": "Get started with OTP accounts", "l_no_accounts_desc": "Add accounts to your YubiKey from any service provider supporting OATH TOTP/HOTP", "s_add_account": "Add account", @@ -419,6 +425,7 @@ } }, "s_passkeys": "Passkeys", + "s_no_passkeys": "No passkeys", "l_ready_to_use": "Ready to use", "l_register_sk_on_websites": "Register as a Security Key on websites", "l_no_discoverable_accounts": "No passkeys stored", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index fbcd7b1d..d6d1574f 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -352,6 +352,12 @@ }, "s_accounts": "Comptes", "s_no_accounts": "Aucun compte", + "l_results_for": null, + "@l_results_for": { + "placeholders": { + "query": {} + } + }, "l_authenticator_get_started": null, "l_no_accounts_desc": null, "s_add_account": "Ajouter un compte", @@ -419,6 +425,7 @@ } }, "s_passkeys": "Passkeys", + "s_no_passkeys": null, "l_ready_to_use": "Prêt à l'emploi", "l_register_sk_on_websites": "Enregistrer comme clé de sécurité sur les sites internet", "l_no_discoverable_accounts": "Aucune Passkey détectée", diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 126a01fe..bba1c714 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -352,6 +352,12 @@ }, "s_accounts": "アカウント", "s_no_accounts": "アカウントがありません", + "l_results_for": null, + "@l_results_for": { + "placeholders": { + "query": {} + } + }, "l_authenticator_get_started": null, "l_no_accounts_desc": null, "s_add_account": "アカウントの追加", @@ -419,6 +425,7 @@ } }, "s_passkeys": "パスキー", + "s_no_passkeys": null, "l_ready_to_use": "すぐに使用可能", "l_register_sk_on_websites": "Webサイトにセキュリティキーとして登録する", "l_no_discoverable_accounts": "パスキーは保存されていません", diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index 2fa66520..622bc4b5 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -352,6 +352,12 @@ }, "s_accounts": "Konta", "s_no_accounts": "Brak kont", + "l_results_for": null, + "@l_results_for": { + "placeholders": { + "query": {} + } + }, "l_authenticator_get_started": "Rozpocznij korzystanie z kont OTP", "l_no_accounts_desc": "Dodaj konta do swojego klucza YubiKey od dowolnego dostawcy usług obsługującego OATH TOTP/HOTP", "s_add_account": "Dodaj konto", @@ -419,6 +425,7 @@ } }, "s_passkeys": "Klucze dostępu", + "s_no_passkeys": null, "l_ready_to_use": "Gotowe do użycia", "l_register_sk_on_websites": "Zarejestruj jako klucz bezpieczeństwa na stronach internetowych", "l_no_discoverable_accounts": "Nie wykryto kont", diff --git a/lib/oath/views/oath_screen.dart b/lib/oath/views/oath_screen.dart index 2074ed21..ce05bfbd 100755 --- a/lib/oath/views/oath_screen.dart +++ b/lib/oath/views/oath_screen.dart @@ -264,7 +264,8 @@ class _UnlockedViewState extends ConsumerState<_UnlockedView> { }, builder: (context) => AppPage( title: l10n.s_accounts, - alternativeTitle: searchText != '' ? 'Results for "$searchText"' : null, + alternativeTitle: + searchText != '' ? l10n.l_results_for(searchText) : null, capabilities: const [Capability.oath], keyActionsBuilder: hasActions ? (context) => oathBuildActions(