nostr-tools icon indicating copy to clipboard operation
nostr-tools copied to clipboard

Problem to public on

Open maccali opened this issue 10 months ago • 2 comments

"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?

maccali avatar Apr 16 '24 19:04 maccali