From 0725e84d7b1e0c8e849f6aa8b1f693f7ffbbe9c4 Mon Sep 17 00:00:00 2001 From: Kieran Date: Wed, 28 Dec 2022 16:29:42 +0000 Subject: [PATCH] Write notes --- src/nostr/Event.js | 13 +++++++++++++ src/pages/Root.js | 23 +++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/nostr/Event.js b/src/nostr/Event.js index faf3b0fe..2b32954b 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 0ff16f5c..d3caa240 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} );