From af02c644c010b6da56c36a6df3a41d73055efa82 Mon Sep 17 00:00:00 2001 From: tcheeric Date: Wed, 26 Nov 2025 18:26:33 +0000 Subject: [PATCH] fix: Exclude soft-deleted keys when retrieving key list - Fetch keys marked as deleted from the database and filter them out. - Ensure soft-deleted keys are skipped during processing. --- src/daemon/run.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/daemon/run.ts b/src/daemon/run.ts index 15d31f5..d53b6d2 100644 --- a/src/daemon/run.ts +++ b/src/daemon/run.ts @@ -35,10 +35,20 @@ export type KeyUser = { function getKeys(config: DaemonConfig) { return async (): Promise => { - let lockedKeyNames = Object.keys(config.allKeys); + // Get soft-deleted key names from database to exclude them + const deletedKeys = await prisma.key.findMany({ + where: { deletedAt: { not: null } }, + select: { keyName: true }, + }); + const deletedKeyNames = new Set(deletedKeys.map(k => k.keyName)); + + let lockedKeyNames = Object.keys(config.allKeys).filter(name => !deletedKeyNames.has(name)); const keys: Key[] = []; for (const [name, nsec] of Object.entries(config.keys)) { + // Skip soft-deleted keys + if (deletedKeyNames.has(name)) continue; + const decoded = nip19.decode(nsec) as unknown as { type: 'nsec', data: Uint8Array }; const hexpk = bytesToHex(decoded.data); const user = await new NDKPrivateKeySigner(hexpk).user();