diff --git a/src/element/new-stream.tsx b/src/element/new-stream.tsx index efc7f1e..f6b1a87 100644 --- a/src/element/new-stream.tsx +++ b/src/element/new-stream.tsx @@ -1,15 +1,16 @@ import { useEffect, useState } from "react"; -import { EventPublisher } from "@snort/system"; +import { EventPublisher, NostrEvent } from "@snort/system"; import { unixNow } from "@snort/shared"; import "./new-stream.css"; import AsyncButton from "./async-button"; import { System } from "index"; +import { findTag } from "utils"; -export function NewStream() { - const [title, setTitle] = useState(""); - const [summary, setSummary] = useState(""); - const [image, setImage] = useState(""); - const [stream, setStream] = useState(""); +export function NewStream({ ev, onFinish }: { ev?: NostrEvent, onFinish: () => void }) { + const [title, setTitle] = useState(findTag(ev, "title") ?? ""); + const [summary, setSummary] = useState(findTag(ev, "summary") ?? ""); + const [image, setImage] = useState(findTag(ev, "image") ?? ""); + const [stream, setStream] = useState(findTag(ev, "streaming") ?? ""); const [isValid, setIsValid] = useState(false); function validate() { @@ -32,26 +33,27 @@ export function NewStream() { async function publishStream() { const pub = await EventPublisher.nip7(); if (pub) { - const ev = await pub.generic(eb => { + const evNew = await pub.generic(eb => { const now = unixNow(); + const dTag = findTag(ev, "d") ?? now.toString(); return eb.kind(30_311) - .tag(["d", now.toString()]) + .tag(["d", dTag]) .tag(["title", title]) .tag(["summary", summary]) .tag(["image", image]) .tag(["streaming", stream]) .tag(["status", "live"]) }); - console.debug(ev); - System.BroadcastEvent(ev); + console.debug(evNew); + System.BroadcastEvent(evNew); + onFinish(); } } return

- New Stream + {ev ? "Edit Stream" : "New Stream"}

-

Title @@ -89,7 +91,7 @@ export function NewStream() {

- Start Stream + {ev ? "Save" : "Start Stream"}
diff --git a/src/index.css b/src/index.css index ac9caf0..d3feb4a 100644 --- a/src/index.css +++ b/src/index.css @@ -72,6 +72,11 @@ a { color: white; } +.btn-red { + background: rgb(143, 0, 0); + color: white; +} + .btn>span { display: flex; align-items: center; diff --git a/src/pages/layout.tsx b/src/pages/layout.tsx index 3861ac2..b5c479c 100644 --- a/src/pages/layout.tsx +++ b/src/pages/layout.tsx @@ -63,7 +63,7 @@ export function LayoutPage() { {newStream && setNewStream(false)} > - + navigate("/")} /> } } \ No newline at end of file diff --git a/src/pages/stream-page.css b/src/pages/stream-page.css index 5b8a0cf..c69d54e 100644 --- a/src/pages/stream-page.css +++ b/src/pages/stream-page.css @@ -54,6 +54,8 @@ .live-page .actions { margin: 8px 0 0 0; + display: flex; + gap: 12px; } .live-page .btn.zap { diff --git a/src/pages/stream-page.tsx b/src/pages/stream-page.tsx index cc38b17..b040adb 100644 --- a/src/pages/stream-page.tsx +++ b/src/pages/stream-page.tsx @@ -15,6 +15,7 @@ import { System } from "index"; import Modal from "element/modal"; import { SendZaps } from "element/send-zap"; import { useUserProfile } from "@snort/system-react"; +import { NewStream } from "element/new-stream"; export function StreamPage() { const params = useParams(); @@ -23,6 +24,7 @@ export function StreamPage() { const login = useLogin(); const navigate = useNavigate(); const [zap, setZap] = useState(false); + const [edit, setEdit] = useState(false); const profile = useUserProfile(System, thisEvent.data?.pubkey); const stream = findTag(thisEvent.data, "streaming"); @@ -62,11 +64,14 @@ export function StreamPage() { ))} -
- {isMine && + {isMine &&
+ + Delete - } -
+
+
}
@@ -89,6 +94,9 @@ export function StreamPage() { targetName={getName(thisEvent.data.pubkey, profile)} onFinish={() => setZap(false)} /> } + {edit && thisEvent.data && setEdit(false)}> + window.location.reload()} /> + }
); }