mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-06 12:52:26 +00:00
Refactor fetchListIncrementally to use RelayBatchFetcher
Extracted the complex incremental fetching logic from NostrClient into a dedicated RelayBatchFetcher class to improve maintainability and readability. Also includes necessary fixes for SignerManager and Client regressions exposed by the refactor: - Restored missing `registerPrivateKeySigner` and `installNip46Client` methods. - Fixed `SignerManager.ensureSessionActor` to correctly generate session keys when missing. - Fixed `SignerManager.ensureExtensionPermissions` logic. - Exposed `signEventWithPrivateKey` on SignerManager for consistency. - Fixed `isSessionActor` logic to correctly identify logged-in users vs session actors. Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
1 parent
c9baa9f350
commit
50930120fa
3 files changed
+58
-5
No files matched your search
@@ -2932,6 +2932,10 @@ export class NostrClient {
|
||||
return this.signerManager.connectRemoteSigner(params);
|
||||
}
|
||||
|
||||
installNip46Client(client) {
|
||||
this.signerManager.installNip46Client(client);
|
||||
}
|
||||
|
||||
async useStoredRemoteSigner(options) {
|
||||
return this.signerManager.useStoredRemoteSigner(options);
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ import {
|
||||
summarizeUrlForLog,
|
||||
} from "../nip46LoggingUtils.js";
|
||||
|
||||
import { bytesToHex } from "../../../vendor/crypto-helpers.bundle.min.js";
|
||||
import { devLogger, userLogger } from "../../utils/logger.js";
|
||||
import { createPrivateKeyCipherClosures } from "../signerHelpers.js";
|
||||
import { queueSignEvent } from "../signRequestQueue.js";
|
||||
@@ -315,21 +316,45 @@ export class SignerManager {
|
||||
|
||||
async ensureSessionActor() {
|
||||
if (this.sessionActor) {
|
||||
return this.sessionActor;
|
||||
return this.sessionActor.pubkey;
|
||||
}
|
||||
|
||||
if (this.lockedSessionActor) {
|
||||
return this.lockedSessionActor;
|
||||
return this.lockedSessionActor.pubkey;
|
||||
}
|
||||
|
||||
const storedEntry = readStoredSessionActorEntry();
|
||||
if (storedEntry) {
|
||||
this.lockedSessionActor = storedEntry;
|
||||
this.sessionActor = storedEntry;
|
||||
return storedEntry;
|
||||
return storedEntry.pubkey;
|
||||
}
|
||||
|
||||
return null;
|
||||
const tools = await ensureNostrTools();
|
||||
let privateKey = "";
|
||||
if (tools && typeof tools.generateSecretKey === "function") {
|
||||
const secret = tools.generateSecretKey();
|
||||
privateKey = bytesToHex(secret);
|
||||
} else if (tools && typeof tools.generatePrivateKey === "function") {
|
||||
privateKey = tools.generatePrivateKey();
|
||||
} else {
|
||||
throw new Error("Failed to generate session actor: nostr-tools missing key generation.");
|
||||
}
|
||||
|
||||
let pubkey = "";
|
||||
if (tools && typeof tools.getPublicKey === "function") {
|
||||
pubkey = tools.getPublicKey(privateKey);
|
||||
}
|
||||
|
||||
const newActor = {
|
||||
pubkey,
|
||||
privateKey,
|
||||
source: "generated",
|
||||
createdAt: Date.now(),
|
||||
};
|
||||
|
||||
this.sessionActor = newActor;
|
||||
return pubkey;
|
||||
}
|
||||
|
||||
clearStoredSessionActor() {
|
||||
@@ -557,6 +582,16 @@ export class SignerManager {
|
||||
return { pubkey: normalized, signer: adapter };
|
||||
}
|
||||
|
||||
installNip46Client(client) {
|
||||
if (!client) {
|
||||
return;
|
||||
}
|
||||
this.nip46Client = client;
|
||||
this.pubkey = client.userPubkey || client.remotePubkey; // Fallback
|
||||
this.setActiveSigner(client.getActiveSigner());
|
||||
this.emitRemoteSignerChange();
|
||||
}
|
||||
|
||||
async connectRemoteSigner({
|
||||
connectionString,
|
||||
remember = true,
|
||||
@@ -903,6 +938,10 @@ export class SignerManager {
|
||||
};
|
||||
}
|
||||
|
||||
signEventWithPrivateKey(event, privateKey) {
|
||||
return signEventWithPrivateKey(event, privateKey);
|
||||
}
|
||||
|
||||
logout() {
|
||||
const previousPubkey = this.pubkey;
|
||||
this.pubkey = null;
|
||||
|
||||
@@ -484,7 +484,17 @@ export function clearStoredSessionActor() {
|
||||
|
||||
export function isSessionActor(nostrClient) {
|
||||
const sa = nostrClient?.sessionActor;
|
||||
return !!sa && sa.source !== "nsec";
|
||||
if (!sa) {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
nostrClient?.pubkey &&
|
||||
sa.pubkey &&
|
||||
nostrClient.pubkey !== sa.pubkey
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return sa.source !== "nsec";
|
||||
}
|
||||
|
||||
function _closeSessionActorDb() {
|
||||
|
||||
Reference in new issue
Block a user