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()} />
+ }
);
}