Merge pull request #1085 from PR0M3TH3AN/fix-console-log-spam-issues-1377412273382264295

fix(logs): suppress dm sync spam and allow local image paths
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2026-01-05 16:44:03 -05:00
commit 9e685b6b6a
4 files changed
+65 -9

No files matched your search

+51 -4
View File
@@ -1420,6 +1420,8 @@ export class NostrClient {
let generated = null;
if (typeof tools.generateSecretKey === "function") {
generated = tools.generateSecretKey();
} else if (typeof tools.generatePrivateKey === "function") {
generated = tools.generatePrivateKey();
}
if (generated instanceof Uint8Array) {
@@ -1447,7 +1449,27 @@ export class NostrClient {
if (!tools || typeof tools.getPublicKey !== "function") {
throw new Error("Public key derivation is unavailable for remote signing.");
}
publicKey = tools.getPublicKey(privateKey);
try {
publicKey = tools.getPublicKey(privateKey);
} catch (error) {
// Retry with bytes if string input failed (likely nostr-tools v2)
const hexToBytes =
typeof tools.utils?.hexToBytes === "function"
? tools.utils.hexToBytes
: (hex) => {
if (typeof hex !== "string") return null;
const bytes = new Uint8Array(hex.length / 2);
for (let i = 0; i < hex.length; i += 2)
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
return bytes;
};
const bytes = hexToBytes(privateKey);
if (bytes) {
publicKey = tools.getPublicKey(bytes);
} else {
throw error;
}
}
}
if (!publicKey || !HEX64_REGEX.test(publicKey)) {
@@ -2777,7 +2799,12 @@ export class NostrClient {
let privateKey = "";
try {
if (typeof tools.generatePrivateKey === "function") {
if (typeof tools.generateSecretKey === "function") {
const secret = tools.generateSecretKey();
if (secret instanceof Uint8Array) {
privateKey = bytesToHex(secret);
}
} else if (typeof tools.generatePrivateKey === "function") {
privateKey = tools.generatePrivateKey();
} else if (window?.crypto?.getRandomValues) {
const randomBytes = new Uint8Array(32);
@@ -2804,8 +2831,28 @@ export class NostrClient {
try {
pubkey = getPublicKey(normalizedPrivateKey);
} catch (error) {
devLogger.warn("[nostr] Failed to derive session pubkey:", error);
return null;
// Retry with bytes if string input failed (likely nostr-tools v2)
try {
const hexToBytes =
typeof tools.utils?.hexToBytes === "function"
? tools.utils.hexToBytes
: (hex) => {
if (typeof hex !== "string") return null;
const bytes = new Uint8Array(hex.length / 2);
for (let i = 0; i < hex.length; i += 2)
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
return bytes;
};
const bytes = hexToBytes(normalizedPrivateKey);
if (bytes) {
pubkey = getPublicKey(bytes);
} else {
throw error;
}
} catch (retryError) {
devLogger.warn("[nostr] Failed to derive session pubkey:", error);
return null;
}
}
const normalizedPubkey =
+1 -1
View File
@@ -392,7 +392,7 @@ export default class ApplicationBootstrap {
app.loginModalController = null;
app.currentUserNpub = null;
app.initializeLoginModalController({ logIfMissing: true });
app.initializeLoginModalController({ logIfMissing: false });
app.profileButton = doc?.getElementById("profileButton") || null;
app.profileAvatar = doc?.getElementById("profileAvatar") || null;
+9 -4
View File
@@ -1124,6 +1124,7 @@ export class ProfileModalController {
this.directMessagesUnsubscribes = [];
this.pendingMessagesRender = null;
this.messagesStatusClearTimeout = null;
this.lastDirectMessageErrorTime = 0;
this.profileHistoryRenderer = null;
this.profileHistoryRendererConfig = null;
@@ -2417,10 +2418,14 @@ export class ProfileModalController {
handleDirectMessagesError(detail = {}) {
const error = detail?.error || detail?.failure || detail;
userLogger.warn(
"[profileModal] Direct message sync issue detected:",
error,
);
const now = Date.now();
if (now - this.lastDirectMessageErrorTime > 5000) {
userLogger.warn(
"[profileModal] Direct message sync issue detected:",
error,
);
this.lastDirectMessageErrorTime = now;
}
if (this.activeMessagesRequest) {
return;
+4
View File
@@ -62,6 +62,10 @@ export function sanitizeProfileMediaUrl(value) {
return trimmed;
}
if (/^images\//i.test(trimmed)) {
return trimmed;
}
if (!/^https?:\/\//i.test(trimmed)) {
if (LOCALHOST_PATTERN.test(trimmed)) {
trimmed = `http://${trimmed}`;