mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-28 16:32:28 +00:00
Merge pull request #935 from PR0M3TH3AN/codex/fix-video-editing-errors-with-nip-07
Ensure edit flows rehydrate NIP-07 signer
This commit is contained in:
1 file changed
+62
@@ -2057,6 +2057,62 @@ export class NostrClient {
|
||||
};
|
||||
}
|
||||
|
||||
async ensureActiveSignerForPubkey(pubkey) {
|
||||
const normalizedPubkey =
|
||||
typeof pubkey === "string" && pubkey.trim()
|
||||
? pubkey.trim().toLowerCase()
|
||||
: "";
|
||||
|
||||
const existingSigner = resolveActiveSigner(normalizedPubkey);
|
||||
if (existingSigner && typeof existingSigner.signEvent === "function") {
|
||||
return existingSigner;
|
||||
}
|
||||
|
||||
const extension =
|
||||
typeof window !== "undefined" && window && window.nostr ? window.nostr : null;
|
||||
if (!extension) {
|
||||
return existingSigner;
|
||||
}
|
||||
|
||||
let extensionPubkey = normalizedPubkey;
|
||||
|
||||
if (typeof extension.getPublicKey === "function") {
|
||||
try {
|
||||
const retrieved = await runNip07WithRetry(
|
||||
() => extension.getPublicKey(),
|
||||
{ label: "extension.getPublicKey" },
|
||||
);
|
||||
if (typeof retrieved === "string" && retrieved.trim()) {
|
||||
extensionPubkey = retrieved.trim().toLowerCase();
|
||||
}
|
||||
} catch (error) {
|
||||
devLogger.warn(
|
||||
"[nostr] Failed to hydrate active signer from extension pubkey:",
|
||||
error,
|
||||
);
|
||||
return existingSigner;
|
||||
}
|
||||
}
|
||||
|
||||
if (normalizedPubkey && extensionPubkey !== normalizedPubkey) {
|
||||
return existingSigner;
|
||||
}
|
||||
|
||||
if (typeof extension.signEvent !== "function") {
|
||||
return existingSigner;
|
||||
}
|
||||
|
||||
setActiveSigner({
|
||||
type: "extension",
|
||||
pubkey: extensionPubkey || normalizedPubkey,
|
||||
signEvent: extension.signEvent.bind(extension),
|
||||
nip04: extension.nip04,
|
||||
nip44: extension.nip44,
|
||||
});
|
||||
|
||||
return resolveActiveSigner(normalizedPubkey || extensionPubkey);
|
||||
}
|
||||
|
||||
applyRootCreatedAt(video) {
|
||||
if (!video || typeof video !== "object") {
|
||||
return null;
|
||||
@@ -3809,6 +3865,8 @@ export class NostrClient {
|
||||
devLogger.log("Creating edited event with root ID:", oldRootId);
|
||||
devLogger.log("Event content:", event.content);
|
||||
|
||||
await this.ensureActiveSignerForPubkey(userPubkeyLower);
|
||||
|
||||
const signer = resolveActiveSigner(userPubkeyLower);
|
||||
if (!signer || typeof signer.signEvent !== "function") {
|
||||
const error = new Error(
|
||||
@@ -3978,6 +4036,8 @@ export class NostrClient {
|
||||
content: JSON.stringify(contentObject),
|
||||
};
|
||||
|
||||
await this.ensureActiveSignerForPubkey(pubkey);
|
||||
|
||||
const signer = resolveActiveSigner(pubkey);
|
||||
if (!signer || typeof signer.signEvent !== "function") {
|
||||
const error = new Error(
|
||||
@@ -4274,6 +4334,8 @@ export class NostrClient {
|
||||
|
||||
const deleteSummaries = [];
|
||||
if (identifierRecords.length) {
|
||||
await this.ensureActiveSignerForPubkey(pubkey);
|
||||
|
||||
const signer = resolveActiveSigner(pubkey);
|
||||
if (!signer || typeof signer.signEvent !== "function") {
|
||||
const error = new Error(
|
||||
|
||||
Reference in new issue
Block a user