refactor: centralize nostr client bootstrap

This commit is contained in:
thePR0M3TH3AN committed 2025-10-22 21:09:18 -04:00
1 parent 56496fa635
commit 5536180682
9 files changed
+69 -42

No files matched your search

+11
View File
@@ -93,6 +93,17 @@ client can republish exactly what was signed, including the original
payload actually changes; this avoids accidental drift in dedupe tags or
timestamps.
### Default client bootstrap
[`js/nostr/defaultClient.js`](../js/nostr/defaultClient.js) builds the shared
`nostrClient` instance, registers it with the runtime via
`registerNostrClient`, and exposes helpers like
`requestDefaultExtensionPermissions`. Import the singleton or permission helper
from this module (or from the `js/nostr.js` barrel) whenever you need to run a
NIP-07 handshake. New NIP features should reuse this bootstrapper instead of
creating bespoke clients so permission caching and relay wiring stay
consistent.【F:js/nostr/defaultClient.js†L1-L25】
## Event catalogue
| Note | Kind (default) | Tags | Content format |
+2 -4
View File
@@ -9,10 +9,8 @@ import {
ADMIN_COMMUNITY_BLACKLIST_PREFIX,
isDevMode,
} from "./config.js";
import {
getRegisteredNostrClient,
requestDefaultExtensionPermissions,
} from "./nostrClientRegistry.js";
import { getRegisteredNostrClient } from "./nostrClientRegistry.js";
import { requestDefaultExtensionPermissions } from "./nostr/defaultClient.js";
import { devLogger, userLogger } from "./utils/logger.js";
import {
buildAdminListEvent,
+8 -29
View File
@@ -1,39 +1,15 @@
// js/nostr.js
import {
NostrClient,
getActiveSigner,
setActiveSigner,
clearActiveSigner,
resolveActiveSigner,
shouldRequestExtensionPermissions,
} from "./nostr/client.js";
import {
DEFAULT_NIP07_ENCRYPTION_METHODS,
DEFAULT_NIP07_PERMISSION_METHODS,
} from "./nostr/nip07Permissions.js";
nostrClient,
requestDefaultExtensionPermissions,
} from "./nostr/defaultClient.js";
import {
updateWatchHistoryList as updateWatchHistoryListWithManager,
removeWatchHistoryItem as removeWatchHistoryItemWithManager,
} from "./nostr/watchHistory.js";
import {
registerNostrClient,
requestDefaultExtensionPermissions as requestRegisteredPermissions,
} from "./nostrClientRegistry.js";
export const nostrClient = new NostrClient();
registerNostrClient(nostrClient, {
requestPermissions: (
methods = DEFAULT_NIP07_PERMISSION_METHODS,
) => nostrClient.ensureExtensionPermissions(methods),
});
export function requestDefaultExtensionPermissions(
methods = DEFAULT_NIP07_PERMISSION_METHODS,
) {
return requestRegisteredPermissions(methods);
}
export { nostrClient, requestDefaultExtensionPermissions };
export const recordVideoView = (...args) =>
nostrClient.recordVideoView(...args);
@@ -74,7 +50,10 @@ export {
resolveActiveSigner,
shouldRequestExtensionPermissions,
} from "./nostr/client.js";
export { DEFAULT_NIP07_ENCRYPTION_METHODS, DEFAULT_NIP07_PERMISSION_METHODS } from "./nostr/nip07Permissions.js";
export {
DEFAULT_NIP07_ENCRYPTION_METHODS,
DEFAULT_NIP07_PERMISSION_METHODS,
} from "./nostr/nip07Permissions.js";
export {
buildNip71MetadataTags,
buildNip71VideoEvent,
+31
View File
@@ -0,0 +1,31 @@
// js/nostr/defaultClient.js
import { NostrClient } from "./client.js";
import {
DEFAULT_NIP07_ENCRYPTION_METHODS,
DEFAULT_NIP07_PERMISSION_METHODS,
} from "./nip07Permissions.js";
import {
registerNostrClient,
requestDefaultExtensionPermissions as requestRegisteredPermissions,
} from "../nostrClientRegistry.js";
export const nostrClient = new NostrClient();
registerNostrClient(nostrClient, {
requestPermissions: (
methods = DEFAULT_NIP07_PERMISSION_METHODS,
) => nostrClient.ensureExtensionPermissions(methods),
});
export function requestDefaultExtensionPermissions(
methods = DEFAULT_NIP07_PERMISSION_METHODS,
) {
return requestRegisteredPermissions(methods);
}
export {
NostrClient,
DEFAULT_NIP07_ENCRYPTION_METHODS,
DEFAULT_NIP07_PERMISSION_METHODS,
};
+4 -2
View File
@@ -1,8 +1,10 @@
import { isDevMode } from "./config.js";
import { DEFAULT_RELAY_URLS } from "./nostr/toolkit.js";
import { nostrClient } from "./nostr.js";
import {
nostrClient,
requestDefaultExtensionPermissions,
} from "./nostr.js";
import { getActiveSigner } from "./nostr/index.js";
import { requestDefaultExtensionPermissions } from "./nostrClientRegistry.js";
import { buildRelayListEvent } from "./nostrEventSchemas.js";
import { devLogger, userLogger } from "./utils/logger.js";
import {
+1 -1
View File
@@ -7,7 +7,7 @@ import {
getCurrentUserNpub,
} from "../state/appState.js";
import { userLogger } from "../utils/logger.js";
import { requestDefaultExtensionPermissions } from "../nostrClientRegistry.js";
import { requestDefaultExtensionPermissions } from "../nostr/defaultClient.js";
import {
getSavedProfiles,
getActiveProfilePubkey,
+4 -2
View File
@@ -1,12 +1,14 @@
// js/subscriptions.js
import { nostrClient } from "./nostr.js";
import {
nostrClient,
requestDefaultExtensionPermissions,
} from "./nostr.js";
import {
getActiveSigner,
convertEventToVideo as sharedConvertEventToVideo,
listVideoViewEvents,
subscribeVideoViewEvents,
} from "./nostr/index.js";
import { requestDefaultExtensionPermissions } from "./nostrClientRegistry.js";
import { DEFAULT_RELAY_URLS } from "./nostr/toolkit.js";
import {
buildSubscriptionListEvent,
+4 -2
View File
@@ -1,7 +1,9 @@
// js/userBlocks.js
import { nostrClient } from "./nostr.js";
import {
nostrClient,
requestDefaultExtensionPermissions,
} from "./nostr.js";
import { getActiveSigner } from "./nostr/index.js";
import { requestDefaultExtensionPermissions } from "./nostrClientRegistry.js";
import { buildBlockListEvent, BLOCK_LIST_IDENTIFIER } from "./nostrEventSchemas.js";
import { userLogger } from "./utils/logger.js";
import {
+4 -2
View File
@@ -1,7 +1,9 @@
// js/watchHistoryService.js
import { nostrClient } from "./nostr.js";
import { requestDefaultExtensionPermissions } from "./nostrClientRegistry.js";
import {
nostrClient,
requestDefaultExtensionPermissions,
} from "./nostr.js";
import {
normalizePointerInput,
pointerKey,