diff options
| -rw-r--r-- | android/app/src/fcm/AndroidManifest.xml | 6 | ||||
| -rw-r--r-- | android/app/src/main/res/values/strings.xml | 2 | ||||
| -rw-r--r-- | android/app/src/webview/AndroidManifest.xml | 6 | ||||
| -rw-r--r-- | src/features/nostrlogin.js | 5 |
4 files changed, 18 insertions, 1 deletions
diff --git a/android/app/src/fcm/AndroidManifest.xml b/android/app/src/fcm/AndroidManifest.xml index 71e75b9..640056c 100644 --- a/android/app/src/fcm/AndroidManifest.xml +++ b/android/app/src/fcm/AndroidManifest.xml @@ -16,6 +16,12 @@ android:theme="@style/AppTheme" android:supportsRtl="true" android:usesCleartextTraffic="false"> + <!-- the app's half of the association with v3.coinos.io (the site's half + is its assetlinks.json): passkeys for the site work in this app only + when both name each other --> + <meta-data + android:name="asset_statements" + android:resource="@string/asset_statements" /> <activity android:name="io.coinos.app.MainActivity" android:exported="true" diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 8132a82..77fa055 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -12,7 +12,7 @@ <!-- must match the site's /.well-known/assetlinks.json for URL-bar-less TWA --> <string name="asset_statements"> [{ - \"relation\": [\"delegate_permission/common.handle_all_urls\"], + \"relation\": [\"delegate_permission/common.handle_all_urls\", \"delegate_permission/common.get_login_creds\"], \"target\": { \"namespace\": \"web\", \"site\": \"https://v3.coinos.io\" } }] </string> diff --git a/android/app/src/webview/AndroidManifest.xml b/android/app/src/webview/AndroidManifest.xml index 0942377..85a6f95 100644 --- a/android/app/src/webview/AndroidManifest.xml +++ b/android/app/src/webview/AndroidManifest.xml @@ -14,6 +14,12 @@ android:theme="@style/AppTheme" android:supportsRtl="true" android:usesCleartextTraffic="false"> + <!-- the app's half of the association with v3.coinos.io (the site's half + is its assetlinks.json): passkeys for the site work in this app only + when both name each other --> + <meta-data + android:name="asset_statements" + android:resource="@string/asset_statements" /> <activity android:name="io.coinos.app.MainActivity" android:exported="true" diff --git a/src/features/nostrlogin.js b/src/features/nostrlogin.js index 1c227c3..a4cfa24 100644 --- a/src/features/nostrlogin.js +++ b/src/features/nostrlogin.js @@ -364,6 +364,11 @@ export function nostrLoginFeature(ctx) { await run(() => keySigner(sk)); } catch (e) { if (/derive a wallet key/.test(e.message) || e.message === pass.LOCK_PASSKEY) { ui.nostrLoginError = e.message; render(); return; } + // Only "no passkey here" (NotAllowedError, as browsers report it) rolls + // into creating one; anything else is a failure to show, not a reason + // to make a second passkey (the Beta's "RP ID cannot be validated" went + // on to fail a create too, 2026-11-06). + if (e && e.name && e.name !== 'NotAllowedError') { ui.nostrLoginError = e.message || String(e); render(); return; } try { const sk = await pass.passkeyCreate(); await run(() => keySigner(sk)); |
