src/adapter.js (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import NDK, {NDKPrivateKeySigner} from "@nostr-dev-kit/ndk"; let ndk = null; function createAdapter() { let adapter = { nickname: "", identity: null, protocol: null, }; adatper.init = ()=>{}; adapter.getInbox = ()=>{}; adapter.getFollowers = ()=>{}; adapter.getFollowing = ()=>{}; adapter.publish = ()=>{}; adapter.updateMetadata = ()=>{}; adapter.getMetadata = ()=>{}; return adapter; } function toNostrAdapter(adapter, settings) { adapter.identity = { privkey: settings.privkey }; adapter.init = ()=> { if (!ndk) { ndk = new NDK({ signer: new NDKPrivateKeySigner(settings.privatekey), explicitRelayUrls: [ settings.relays ] }); ndk.connect(); } else { ndk.activeUser = new NDKPrivateKeySigner(settings.privatekey); for (let i of settings.relays) { ndk.addExplicitRelay(i); } } }; adapter.getInbox = () => { const sub = ndk.subscribe({ kinds: [1] }); // Get all kind:1s sub.on("event", (event) => console.log(event.content)); // Show the content sub.on("eose", () => console.log("All relays have reached the end of the event stream")); sub.on("close", () => console.log("Subscription closed")); setTimeout(() => sub.stop(), 10000); // Stop the subscription after 10 seconds }; return adapter; } export default { createAdapter, toNostrAdapter } |