forked from Kieran/zap.stream
feat: add recording to manual editor
This commit is contained in:
parent
2bc5fe5eb1
commit
e21d8d3ae4
@ -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,
|
||||||
|
@ -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) && (
|
||||||
|
@ -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"
|
||||||
|
@ -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",
|
||||||
|
@ -30,6 +30,7 @@ export default defineConfig({
|
|||||||
],
|
],
|
||||||
build: {
|
build: {
|
||||||
outDir: "build",
|
outDir: "build",
|
||||||
|
sourcemap: true,
|
||||||
},
|
},
|
||||||
clearScreen: false,
|
clearScreen: false,
|
||||||
resolve: {
|
resolve: {
|
||||||
|
Loading…
Reference in New Issue
Block a user