diff --git a/src/nostr/Event.js b/src/nostr/Event.js index faf3b0f..2b32954 100644 --- a/src/nostr/Event.js +++ b/src/nostr/Event.js @@ -162,4 +162,17 @@ export default class Event { ev.Content = JSON.stringify(obj); return ev; } + + /** + * Create a new TextNote event + * @param {String} pubKey + * @param {String} message + * @returns + */ + static NewNote(pubKey, message) { + let ev = Event.ForPubKey(pubKey); + ev.Kind = EventKind.TextNote; + ev.Content = message; + return ev; + } } \ No newline at end of file diff --git a/src/pages/Root.js b/src/pages/Root.js index 0ff16f5..d3caa24 100644 --- a/src/pages/Root.js +++ b/src/pages/Root.js @@ -1,22 +1,37 @@ import "./Root.css"; import Timeline from "./Timeline"; import { useSelector } from "react-redux"; +import { useContext, useState } from "react"; +import Event from "../nostr/Event"; +import { NostrContext } from ".."; export default function RootPage() { - const login = useSelector(s => s.login.privateKey); + const system = useContext(NostrContext); + const pubKey = useSelector(s => s.login.publicKey); + const privKey = useSelector(s => s.login.privateKey); + const [note, setNote] = useState(""); + + async function sendNote() { + let ev = Event.NewNote(pubKey, note); + await ev.Sign(privKey); + + console.debug("Sending note: ", ev); + system.BroadcastEvent(ev); + setNote(""); + } function noteSigner() { return (
- -
Send
+ setNote(e.target.value)}> +
sendNote()}>Send
); } return ( <> - {login ? noteSigner() : null} + {pubKey ? noteSigner() : null} );