debug: add detailed [bunker] logs for bookmark decryption

- Log account properties and nip04/nip44 availability
- Log signer fallback logic
- Log each decryption attempt (nip44 and nip04)
- Log success/failure for hidden tags and content decryption
- Helps diagnose why bunker decryption isn't working
This commit is contained in:
Gigi
2025-10-16 22:36:00 +02:00
parent 91a827324d
commit ae997758ab
2 changed files with 52 additions and 14 deletions

View File

@@ -75,38 +75,57 @@ export async function collectBookmarksFromEvents(
try {
if (Helpers.hasHiddenTags(evt) && !Helpers.isHiddenTagsUnlocked(evt) && signerCandidate) {
console.log('[bunker] 🔓 Attempting to unlock hidden tags:', {
eventId: evt.id?.slice(0, 8),
kind: evt.kind,
hasHiddenTags: true
})
try {
await Helpers.unlockHiddenTags(evt, signerCandidate as HiddenContentSigner)
} catch {
console.log('[bunker] ✅ Unlocked hidden tags with nip04')
} catch (err) {
console.log('[bunker] ⚠️ nip04 unlock failed, trying nip44:', err)
try {
await Helpers.unlockHiddenTags(evt, signerCandidate as HiddenContentSigner, 'nip44' as UnlockMode)
} catch {
// ignore
console.log('[bunker] ✅ Unlocked hidden tags with nip44')
} catch (err2) {
console.log('[bunker] ❌ nip44 unlock failed:', err2)
}
}
} else if (evt.content && evt.content.length > 0 && signerCandidate) {
console.log('[bunker] 🔓 Attempting to decrypt content:', {
eventId: evt.id?.slice(0, 8),
kind: evt.kind,
contentLength: evt.content.length,
contentPreview: evt.content.slice(0, 20) + '...'
})
let decryptedContent: string | undefined
try {
if (hasNip44Decrypt(signerCandidate)) {
console.log('[bunker] Trying nip44 decrypt...')
decryptedContent = await (signerCandidate as { nip44: { decrypt: DecryptFn } }).nip44.decrypt(
evt.pubkey,
evt.content
)
console.log('[bunker] ✅ nip44 decrypt succeeded')
}
} catch {
// ignore
} catch (err) {
console.log('[bunker] ⚠️ nip44 decrypt failed:', err)
}
if (!decryptedContent) {
try {
if (hasNip04Decrypt(signerCandidate)) {
console.log('[bunker] Trying nip04 decrypt...')
decryptedContent = await (signerCandidate as { nip04: { decrypt: DecryptFn } }).nip04.decrypt(
evt.pubkey,
evt.content
)
console.log('[bunker] ✅ nip04 decrypt succeeded')
}
} catch {
// ignore
} catch (err) {
console.log('[bunker] ❌ nip04 decrypt failed:', err)
}
}

View File

@@ -85,10 +85,10 @@ export const fetchBookmarks = async (
}
// Aggregate across events
const maybeAccount = activeAccount as AccountWithExtension
console.log('🔐 Account object:', {
console.log('[bunker] 🔐 Account object:', {
hasSignEvent: typeof maybeAccount?.signEvent === 'function',
hasSigner: !!maybeAccount?.signer,
accountType: typeof maybeAccount,
accountType: maybeAccount?.type || typeof maybeAccount,
accountKeys: maybeAccount ? Object.keys(maybeAccount) : []
})
@@ -97,16 +97,35 @@ export const fetchBookmarks = async (
let signerCandidate: unknown = maybeAccount
const hasNip04Prop = (signerCandidate as { nip04?: unknown })?.nip04 !== undefined
const hasNip44Prop = (signerCandidate as { nip44?: unknown })?.nip44 !== undefined
console.log('[bunker] 🔍 Account nip04/nip44 check:', {
hasNip04Prop,
hasNip44Prop,
nip04Type: typeof (signerCandidate as { nip04?: unknown })?.nip04,
nip44Type: typeof (signerCandidate as { nip44?: unknown })?.nip44
})
if (signerCandidate && !hasNip04Prop && !hasNip44Prop && maybeAccount?.signer) {
// Fallback to the raw signer if account doesn't have nip04/nip44
console.log('[bunker] ⚠️ Account missing nip04/nip44, falling back to signer')
signerCandidate = maybeAccount.signer
const signerHasNip04 = (signerCandidate as { nip04?: unknown })?.nip04 !== undefined
const signerHasNip44 = (signerCandidate as { nip44?: unknown })?.nip44 !== undefined
console.log('[bunker] 🔍 Signer nip04/nip44 check:', {
signerHasNip04,
signerHasNip44,
nip04Type: typeof (signerCandidate as { nip04?: unknown })?.nip04,
nip44Type: typeof (signerCandidate as { nip44?: unknown })?.nip44
})
}
console.log('🔑 Signer candidate:', !!signerCandidate, typeof signerCandidate)
if (signerCandidate) {
console.log('🔑 Signer has nip04:', hasNip04Decrypt(signerCandidate))
console.log('🔑 Signer has nip44:', hasNip44Decrypt(signerCandidate))
}
console.log('[bunker] 🔑 Final signer candidate:', {
exists: !!signerCandidate,
type: typeof signerCandidate,
hasNip04: hasNip04Decrypt(signerCandidate),
hasNip44: hasNip44Decrypt(signerCandidate)
})
const { publicItemsAll, privateItemsAll, newestCreatedAt, latestContent, allTags } = await collectBookmarksFromEvents(
bookmarkListEvents,
activeAccount,