UNPKG

@nostr-dev-kit/ndk

Version:

NDK - Nostr Development Kit. Includes AI Guardrails to catch common mistakes during development.

87 lines (66 loc) 2.75 kB
/** * Examples of using NDKRelayFeedList (NIP-51 kind 10012) * * This kind represents user's favorite browsable relays and relay sets. * It can contain both individual relay URLs and references to relay sets (kind:30002). */ import { NDK } from "../../ndk/index.js"; import { NDKPrivateKeySigner } from "../../signers/private-key/index.js"; import { NDKRelayFeedList } from "./relay-feed-list.js"; async function createRelayFeedList() { // Initialize NDK with a signer const ndk = new NDK(); const signer = NDKPrivateKeySigner.generate(); ndk.signer = signer; // Create a new relay feed list const relayFeedList = new NDKRelayFeedList(ndk); relayFeedList.title = "My Favorite Relays"; relayFeedList.description = "Relays I browse regularly"; // Add individual relay URLs await relayFeedList.addRelay("wss://relay.damus.io"); await relayFeedList.addRelay("wss://nos.lol"); await relayFeedList.addRelay("wss://relay.nostr.band"); // Add relay set references (kind:30002) await relayFeedList.addRelaySet("30002:pubkey123:my-outbox-relays"); await relayFeedList.addRelaySet("30002:pubkey456:trusted-relays"); // Publish the list await relayFeedList.publish(); return relayFeedList; } async function readRelayFeedList() { const ndk = new NDK(); const signer = NDKPrivateKeySigner.generate(); ndk.signer = signer; // Fetch the user's relay feed list const user = await signer.user(); const lists = await ndk.fetchEvents({ kinds: [10012], authors: [user.pubkey], }); for (const event of lists) { const relayFeedList = NDKRelayFeedList.from(event); console.log("Title:", relayFeedList.title); console.log("Description:", relayFeedList.description); // Get all relay URLs console.log("Relay URLs:", relayFeedList.relayUrls); // Get all relay set references console.log("Relay Sets:", relayFeedList.relaySets); } } async function modifyRelayFeedList() { const ndk = new NDK(); const signer = NDKPrivateKeySigner.generate(); ndk.signer = signer; const relayFeedList = new NDKRelayFeedList(ndk); // Add some relays await relayFeedList.addRelay("wss://relay.damus.io"); await relayFeedList.addRelay("wss://nos.lol"); // Remove a relay (don't publish yet) await relayFeedList.removeRelay("wss://nos.lol", false); // Add it back at the top of the list await relayFeedList.addRelay("wss://nos.lol", undefined, false, "top"); // Publish all changes at once await relayFeedList.publish(); } // Export examples for documentation purposes export { createRelayFeedList, modifyRelayFeedList, readRelayFeedList };