From e21d8d3ae4797b752a5510daf867ec06d8793aa9 Mon Sep 17 00:00:00 2001 From: Kieran Date: Sat, 23 Dec 2023 19:43:28 +0000 Subject: [PATCH] feat: add recording to manual editor --- src/element/live-video-player.tsx | 2 +- src/element/stream-editor.tsx | 22 ++++++++++++++++++++-- src/lang.json | 3 +++ src/translations/en.json | 1 + vite.config.ts | 1 + 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/element/live-video-player.tsx b/src/element/live-video-player.tsx index 8b2f9d7..2e563be 100644 --- a/src/element/live-video-player.tsx +++ b/src/element/live-video-player.tsx @@ -43,7 +43,7 @@ export default function LiveVideoPlayer({ useEffect(() => { if (streamCached && video.current) { - if (Hls.isSupported()) { + if (Hls.isSupported() && streamCached.endsWith(".m3u8")) { try { const hls = new Hls({ enableWorker: true, diff --git a/src/element/stream-editor.tsx b/src/element/stream-editor.tsx index 1bf76d5..499f163 100644 --- a/src/element/stream-editor.tsx +++ b/src/element/stream-editor.tsx @@ -52,6 +52,7 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) { const [summary, setSummary] = useState(""); const [image, setImage] = useState(""); const [stream, setStream] = useState(""); + const [recording, setRecording] = useState(""); const [status, setStatus] = useState(""); const [start, setStart] = useState(); const [tags, setTags] = useState([]); @@ -62,12 +63,14 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) { const { formatMessage } = useIntl(); useEffect(() => { - const { title, summary, image, stream, status, starts, tags, contentWarning, goal } = extractStreamInfo(ev); + const { title, summary, image, stream, status, starts, tags, contentWarning, goal, recording } = + extractStreamInfo(ev); setTitle(title ?? ""); setSummary(summary ?? ""); setImage(image ?? ""); setStream(stream ?? ""); setStatus(status ?? StreamState.Live); + setRecording(recording ?? ""); setStart(starts); setTags(tags ?? []); setContentWarning(contentWarning !== undefined); @@ -104,11 +107,16 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) { .tag(["title", title]) .tag(["summary", summary]) .tag(["image", image]) - .tag(["streaming", stream]) .tag(["status", status]) .tag(["starts", starts]); + if (status === StreamState.Live) { + eb.tag(["streaming", stream]); + } if (status === StreamState.Ended) { eb.tag(["ends", ends]); + if (recording) { + eb.tag(["recording", recording]); + } } for (const tx of tags) { eb.tag(["t", tx.trim()]); @@ -218,6 +226,16 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) { )} + {status === StreamState.Ended && ( +
+

+ +

+
+ setRecording(e.target.value)} /> +
+
+ )} )} {(options?.canSetTags ?? true) && ( diff --git a/src/lang.json b/src/lang.json index 3818071..086c9a8 100644 --- a/src/lang.json +++ b/src/lang.json @@ -311,6 +311,9 @@ "XgWvGA": { "defaultMessage": "Reactions" }, + "Y0DXJb": { + "defaultMessage": "Recording URL" + }, "YPh5Nq": { "defaultMessage": "@ {rate}", "description": "Showing zap amount in USD @ rate" diff --git a/src/translations/en.json b/src/translations/en.json index 4184772..23e6363 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -103,6 +103,7 @@ "W9355R": "Unmute", "X2PZ7D": "Create Goal", "XgWvGA": "Reactions", + "Y0DXJb": "Recording URL", "YPh5Nq": "@ {rate}", "YagVIe": "{n}p", "YwzT/0": "Clip title", diff --git a/vite.config.ts b/vite.config.ts index abaf09e..57719bb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -30,6 +30,7 @@ export default defineConfig({ ], build: { outDir: "build", + sourcemap: true, }, clearScreen: false, resolve: {