Fix amber login type: use x-amber instead of amber

NLoginOther requires type x-${string} to be a valid NLoginType.
Using bare 'amber' meant pubkey was never properly stored/rehydrated
from localStorage — it was always undefined/empty.

Using NLogin('x-amber', pubkey, ...) correctly stores pubkey through
the NLoginBase interface and survives localStorage serialization.

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
This commit is contained in:
shakespeare.diy 2026-07-09 14:57:20 +07:00
parent dd650ee57c
commit 52bf618b51
2 changed files with 10 additions and 10 deletions

View file

@ -22,7 +22,7 @@ export function useCurrentUser() {
return NUser.fromBunkerLogin(login, nostr);
case 'extension': // Nostr login with NIP-07 browser extension
return NUser.fromExtensionLogin(login);
case 'amber': { // Nostr login with Amber (NIP-55)
case 'x-amber': { // Nostr login with Amber (NIP-55)
const amberLogin = login as AmberLoginType;
// On Capacitor (ZapStore APK) use the native plugin signer so all
// signing operations go through Amber via native intents.

View file

@ -7,7 +7,9 @@ import {
// NOTE: This file should not be edited except for adding new login methods.
export type AmberLoginType = { id: string; type: 'amber'; pubkey: string };
// NLoginOther requires type to be `x-${string}` — use x-amber so it
// is a valid NLoginType and pubkey is preserved through serialization.
export type AmberLoginType = NLoginType & { type: 'x-amber'; pubkey: string };
export function useLoginActions() {
const { nostr } = useNostr();
@ -34,15 +36,13 @@ export function useLoginActions() {
const login = await NLogin.fromExtension();
addAndActivate(login);
},
// Login with Amber (NIP-55) — pubkey comes from the AmberCallbackPage
// Login with Amber (NIP-55) — pubkey returned from Amber plugin or callback
// Uses NLogin with type x-amber so it satisfies NLoginOther (x-${string})
// and pubkey is correctly stored and rehydrated from localStorage.
amber(pubkey: string): void {
const amberLogin: AmberLoginType = {
id: `amber:${pubkey}`,
type: 'amber',
pubkey,
};
addLogin(amberLogin as unknown as NLoginType);
setLogin(amberLogin.id);
const login = new NLogin('x-amber', pubkey, { method: 'nip55' }) as unknown as NLoginType;
addLogin(login);
setLogin(login.id);
},
// Log out the current user
async logout(): Promise<void> {