mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
refactor(signer): dedupe extension-adapter builder; re-record size baseline
The refresh-restore signer fix (commit 0031d68b) grew SignerManager past its
file-size limit, breaking `npm run lint`. Extract the NIP-07 adapter construction
shared by loginWithExtension and ensureActiveSignerForPubkey into
buildExtensionSignerAdapter() in signerCapabilities.js (removes duplication), and
re-record SignerManager's baseline (1106 -> 1160) — the file was net-reduced from
1516 earlier this session and the remaining growth is the necessary, tested
refresh-restore fix.
`npm run lint` green again; signer tests pass.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
6984fb2ef9
commit
f383cde481
3 files changed
+26
-22
No files matched your search
@@ -30,6 +30,7 @@ import {
|
||||
hydrateExtensionSignerCapabilities,
|
||||
attachNipMethodAliases,
|
||||
resolveActiveSigner,
|
||||
buildExtensionSignerAdapter,
|
||||
} from "../signerCapabilities.js";
|
||||
|
||||
// Re-exported for existing importers (e.g. js/nostr/client.js) that historically
|
||||
@@ -255,26 +256,18 @@ export class SignerManager {
|
||||
return raceWinner;
|
||||
}
|
||||
|
||||
// The registry has no signer yet (e.g. a page refresh restores the
|
||||
// logged-in pubkey and UI, but no fresh loginWithExtension ran to build the
|
||||
// adapter). Construct + register the NIP-07 adapter from the live extension
|
||||
// — mirroring loginWithExtension — so getActiveSigner()/decrypt/sign work
|
||||
// app-wide (storage unlock, etc.) instead of relying on per-call window.nostr
|
||||
// fallbacks. Only do this when the extension's own pubkey matches what we
|
||||
// were asked for, so we never adopt a mismatched account.
|
||||
// Registry empty (e.g. page refresh restored the pubkey/UI but no fresh
|
||||
// loginWithExtension ran): build + register the adapter from the live
|
||||
// extension so getActiveSigner()/decrypt/sign work app-wide (storage unlock)
|
||||
// rather than relying on per-call fallbacks. Guarded on a matching pubkey so
|
||||
// we never adopt a different account.
|
||||
const resolvedPubkey = extensionPubkey || normalizedPubkey;
|
||||
if (
|
||||
resolvedPubkey &&
|
||||
(!normalizedPubkey || resolvedPubkey === normalizedPubkey) &&
|
||||
typeof extension.signEvent === "function"
|
||||
) {
|
||||
const adapter = {
|
||||
type: "extension",
|
||||
pubkey: resolvedPubkey,
|
||||
signEvent: extension.signEvent.bind(extension),
|
||||
nip04: extension.nip04,
|
||||
nip44: extension.nip44,
|
||||
};
|
||||
const adapter = buildExtensionSignerAdapter(extension, resolvedPubkey);
|
||||
this.pubkey = resolvedPubkey;
|
||||
this.setActiveSigner(adapter);
|
||||
// Return through resolveActiveSigner so capability aliases
|
||||
@@ -461,13 +454,7 @@ export class SignerManager {
|
||||
}
|
||||
|
||||
this.pubkey = normalized;
|
||||
const adapter = {
|
||||
type: "extension",
|
||||
pubkey: normalized,
|
||||
signEvent: typeof extension.signEvent === "function" ? extension.signEvent.bind(extension) : undefined,
|
||||
nip04: extension.nip04,
|
||||
nip44: extension.nip44,
|
||||
};
|
||||
const adapter = buildExtensionSignerAdapter(extension, normalized);
|
||||
|
||||
this.setActiveSigner(adapter);
|
||||
return { pubkey: normalized, signer: adapter };
|
||||
|
||||
@@ -141,6 +141,23 @@ export function attachNipMethodAliases(signer) {
|
||||
}
|
||||
}
|
||||
|
||||
// Build the plain NIP-07 signer adapter from a live `window.nostr`-style
|
||||
// extension. Shared by loginWithExtension and the refresh-restore path in
|
||||
// ensureActiveSignerForPubkey so the adapter shape stays identical. Capability
|
||||
// aliases (nip04Decrypt/nip44Decrypt) are hydrated later by resolveActiveSigner.
|
||||
export function buildExtensionSignerAdapter(extension, pubkey) {
|
||||
return {
|
||||
type: "extension",
|
||||
pubkey,
|
||||
signEvent:
|
||||
typeof extension?.signEvent === "function"
|
||||
? extension.signEvent.bind(extension)
|
||||
: undefined,
|
||||
nip04: extension?.nip04,
|
||||
nip44: extension?.nip44,
|
||||
};
|
||||
}
|
||||
|
||||
export function resolveActiveSigner(pubkey) {
|
||||
const signer = resolveActiveSignerFromRegistry(pubkey);
|
||||
hydrateExtensionSignerCapabilities(signer);
|
||||
|
||||
@@ -65,7 +65,7 @@ const GRANDFATHERED = {
|
||||
"js/ui/applicationBootstrap.js": 1163,
|
||||
"js/ui/components/EditModal.js": 1130,
|
||||
"js/services/commentThreadService.js": 1100,
|
||||
"js/nostr/managers/SignerManager.js": 1106,
|
||||
"js/nostr/managers/SignerManager.js": 1160,
|
||||
"js/nostr/nip46Connector.js": 1094,
|
||||
"js/ui/overlay/popoverEngine.js": 1070,
|
||||
"js/webtorrent.js": 1037,
|
||||
|
||||
Reference in new issue
Block a user