nostr-tools
nostr-tools copied to clipboard
Problem to public on
"use client";
import { getEventHash, relayInit, signEvent } from "nostr-tools";
import {
generateSecretKey,
getPublicKey,
finalizeEvent,
verifyEvent,
} from "nostr-tools/pure";
import { AbstractRelay, Relay } from "nostr-tools/relay";
import { useEffect, useState } from "react";
export default function Home() {
const [sk, setSk] = useState(generateSecretKey());
const [pk, setPk] = useState(getPublicKey(sk));
const [relay, setRelay] = useState<AbstractRelay | null>(null);
const [pubStatus, setPubStatus] = useState("");
const [newEvent, setNewEvent] = useState(null);
const [events, setEvents] = useState(null);
// const topicId =
// "d7dd5eb3ab747e16f8d0212d53032ea2a7cadef53837e5a6c66d42849fcb9029"; // ID do tópico
const topicId =
"27a48981ef3d88d54bfab3117e8ae2f1b8bd5c49da6d510bc7d5bf6eda460b48"; // ID do tópico
const connectRelay = async () => {
// const relay = await Relay.connect("wss://relay.damus.io");
const relay = await Relay.connect("wss://relay.nostr.band");
console.log(`connected to ${relay.url}`);
console.log("relay", relay);
setRelay(relay);
};
const subscribeRelay = async (relay: any) => {
const sub = relay.subscribe(
[
{
kinds: [1], // Subscreva-se no tópico desejado
"#e": [
// // "b6adb87b63ac97c91deafa21a31494ce15a56e53cc1d1a74871dd84f283157ff",
// topicId,
topicId,
],
},
],
{
onevent(event) {
console.log("we got the event we wanted:", event);
// setEvents((oldEvents) => [...oldEvents, event]);
},
oneose() {
console.log("??");
sub.close();
},
}
);
};
useEffect(() => {
connectRelay();
}, []);
useEffect(() => {
if (relay) {
subscribeRelay(relay);
}
}, [relay]);
const publishEvent = async () => {
let eventTemplate = {
kind: 1,
created_at: Math.floor(Date.now() / 1000),
tags: [["e", topicId]],
content: `???? ${Math.random()}`,
};
console.log("publishEvent", eventTemplate);
console.log("publishEvent sk", sk);
// Adicione o topicId ao evento antes de finalizá-lo
// eventTemplate.ids = [topicId];
const signedEvent = finalizeEvent(eventTemplate, sk);
let isGood = verifyEvent(signedEvent);
console.log("isGood", isGood);
if (relay) {
console.log("signedEvent", signedEvent);
await relay.publish(signedEvent);
}
};
return (
<div>
<p>private key: {sk}</p>
<p>public key: {pk}</p>
{relay ? (
<p>Connected to {relay.url}</p>
) : (
<p>Could not connect to relay</p>
)}
<button onClick={() => publishEvent()}>Publish event</button>
<p>Publish status: {pubStatus}</p>
{newEvent ? (
<p>Subscribed event content: {newEvent.content}</p>
) : (
<p>no new event</p>
)}
{events !== null &&
events.map((event) => (
<p key={event.sig} style={{ borderStyle: "ridge", padding: 10 }}>
{event.content}
</p>
))}
</div>
);
}
I does'n get nothing on subscribe when a publish my message, is something wrong on publish?