feat: add recording to manual editor

This commit is contained in:
Kieran 2023-12-23 19:43:28 +00:00
parent 2bc5fe5eb1
commit e21d8d3ae4
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
5 changed files with 26 additions and 3 deletions

View File

@ -43,7 +43,7 @@ export default function LiveVideoPlayer({
useEffect(() => { useEffect(() => {
if (streamCached && video.current) { if (streamCached && video.current) {
if (Hls.isSupported()) { if (Hls.isSupported() && streamCached.endsWith(".m3u8")) {
try { try {
const hls = new Hls({ const hls = new Hls({
enableWorker: true, enableWorker: true,

View File

@ -52,6 +52,7 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) {
const [summary, setSummary] = useState(""); const [summary, setSummary] = useState("");
const [image, setImage] = useState(""); const [image, setImage] = useState("");
const [stream, setStream] = useState(""); const [stream, setStream] = useState("");
const [recording, setRecording] = useState("");
const [status, setStatus] = useState(""); const [status, setStatus] = useState("");
const [start, setStart] = useState<string>(); const [start, setStart] = useState<string>();
const [tags, setTags] = useState<string[]>([]); const [tags, setTags] = useState<string[]>([]);
@ -62,12 +63,14 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) {
const { formatMessage } = useIntl(); const { formatMessage } = useIntl();
useEffect(() => { 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 ?? ""); setTitle(title ?? "");
setSummary(summary ?? ""); setSummary(summary ?? "");
setImage(image ?? ""); setImage(image ?? "");
setStream(stream ?? ""); setStream(stream ?? "");
setStatus(status ?? StreamState.Live); setStatus(status ?? StreamState.Live);
setRecording(recording ?? "");
setStart(starts); setStart(starts);
setTags(tags ?? []); setTags(tags ?? []);
setContentWarning(contentWarning !== undefined); setContentWarning(contentWarning !== undefined);
@ -104,11 +107,16 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) {
.tag(["title", title]) .tag(["title", title])
.tag(["summary", summary]) .tag(["summary", summary])
.tag(["image", image]) .tag(["image", image])
.tag(["streaming", stream])
.tag(["status", status]) .tag(["status", status])
.tag(["starts", starts]); .tag(["starts", starts]);
if (status === StreamState.Live) {
eb.tag(["streaming", stream]);
}
if (status === StreamState.Ended) { if (status === StreamState.Ended) {
eb.tag(["ends", ends]); eb.tag(["ends", ends]);
if (recording) {
eb.tag(["recording", recording]);
}
} }
for (const tx of tags) { for (const tx of tags) {
eb.tag(["t", tx.trim()]); eb.tag(["t", tx.trim()]);
@ -218,6 +226,16 @@ export function StreamEditor({ ev, onFinish, options }: StreamEditorProps) {
</div> </div>
</div> </div>
)} )}
{status === StreamState.Ended && (
<div>
<p>
<FormattedMessage defaultMessage="Recording URL" id="Y0DXJb" />
</p>
<div className="paper">
<input type="text" value={recording} onChange={e => setRecording(e.target.value)} />
</div>
</div>
)}
</> </>
)} )}
{(options?.canSetTags ?? true) && ( {(options?.canSetTags ?? true) && (

View File

@ -311,6 +311,9 @@
"XgWvGA": { "XgWvGA": {
"defaultMessage": "Reactions" "defaultMessage": "Reactions"
}, },
"Y0DXJb": {
"defaultMessage": "Recording URL"
},
"YPh5Nq": { "YPh5Nq": {
"defaultMessage": "@ {rate}", "defaultMessage": "@ {rate}",
"description": "Showing zap amount in USD @ rate" "description": "Showing zap amount in USD @ rate"

View File

@ -103,6 +103,7 @@
"W9355R": "Unmute", "W9355R": "Unmute",
"X2PZ7D": "Create Goal", "X2PZ7D": "Create Goal",
"XgWvGA": "Reactions", "XgWvGA": "Reactions",
"Y0DXJb": "Recording URL",
"YPh5Nq": "@ {rate}", "YPh5Nq": "@ {rate}",
"YagVIe": "{n}p", "YagVIe": "{n}p",
"YwzT/0": "Clip title", "YwzT/0": "Clip title",

View File

@ -30,6 +30,7 @@ export default defineConfig({
], ],
build: { build: {
outDir: "build", outDir: "build",
sourcemap: true,
}, },
clearScreen: false, clearScreen: false,
resolve: { resolve: {