Time out signing, rework signer log

This commit is contained in:
Jon Staab
2026-01-06 15:29:52 -08:00
parent a7aa15d527
commit 72194fb959
6 changed files with 165 additions and 35 deletions
+2 -2
View File
@@ -33,11 +33,11 @@
"throttle-debounce": "^5.0.2"
},
"peerDependencies": {
"@pomade/core": "^0.0.4"
"@pomade/core": "^0.0.5"
},
"devDependencies": {
"rimraf": "~6.0.0",
"typescript": "~5.8.0",
"@pomade/core": "^0.0.4"
"@pomade/core": "^0.0.5"
}
}
+6 -22
View File
@@ -220,17 +220,12 @@ export const loginWithPubkey = (pubkey: string) => addSession(makePubkeySession(
export const nip46Perms = "sign_event:22242,nip04_encrypt,nip04_decrypt,nip44_encrypt,nip44_decrypt"
export enum SignerLogEntryStatus {
Pending = "pending",
Success = "success",
Failure = "failure",
}
export type SignerLogEntry = {
id: string
method: string
status: SignerLogEntryStatus
duration: number
started_at: number
finished_at?: number
ok?: boolean
}
export const signerLog = withGetter(writable<SignerLogEntry[]>([]))
@@ -238,31 +233,20 @@ export const signerLog = withGetter(writable<SignerLogEntry[]>([]))
export const wrapSigner = (signer: ISigner) =>
new WrappedSigner(signer, async <T>(method: string, thunk: () => Promise<T>) => {
const id = randomId()
const now = Date.now()
signerLog.update(log =>
append({id, method, status: SignerLogEntryStatus.Pending, duration: 0}, log),
)
signerLog.update(log => append({id, method, started_at: Date.now()}, log))
try {
const result = await thunk()
signerLog.update(log =>
log.map(x =>
x.id === id
? {...x, status: SignerLogEntryStatus.Success, duration: Date.now() - now}
: x,
),
log.map(x => (x.id === id ? {...x, finished_at: Date.now(), ok: true} : x)),
)
return result
} catch (error: any) {
signerLog.update(log =>
log.map(x =>
x.id === id
? {...x, status: SignerLogEntryStatus.Failure, duration: Date.now() - now}
: x,
),
log.map(x => (x.id === id ? {...x, finished_at: Date.now(), ok: false} : x)),
)
throw error
+2 -2
View File
@@ -30,13 +30,13 @@
},
"peerDependencies": {
"nostr-signer-capacitor-plugin": "~0.0.4",
"@pomade/core": "^0.0.4"
"@pomade/core": "^0.0.5"
},
"devDependencies": {
"@capacitor/core": "^7.2.0",
"nostr-signer-capacitor-plugin": "~0.0.4",
"rimraf": "~6.0.0",
"typescript": "~5.8.0",
"@pomade/core": "^0.0.4"
"@pomade/core": "^0.0.5"
}
}
+1
View File
@@ -91,5 +91,6 @@ export const signWithOptions = (
) =>
new Promise<SignedEvent>((resolve, reject) => {
Promise.resolve(promise).then(resolve).catch(reject)
setTimeout(() => reject("Signing timed out"), 30_000)
options.signal?.addEventListener("abort", () => reject("Signing was aborted"))
})