import "./new-stream.css"; import * as Dialog from "@radix-ui/react-dialog"; import { Icon } from "element/icon"; import { useStreamProvider } from "hooks/stream-provider"; import { StreamProvider, StreamProviders } from "providers"; import { useEffect, useState } from "react"; import { StreamEditor, StreamEditorProps } from "./stream-editor"; import { useNavigate } from "react-router-dom"; import { eventLink, findTag } from "utils"; import { NostrProviderDialog } from "./nostr-provider-dialog"; import { unwrap } from "@snort/shared"; import { FormattedMessage } from "react-intl"; function NewStream({ ev, onFinish }: StreamEditorProps) { const providers = useStreamProvider(); const [currentProvider, setCurrentProvider] = useState(); const navigate = useNavigate(); useEffect(() => { if (!currentProvider) { setCurrentProvider( ev !== undefined ? unwrap(providers.find(a => a.name.toLowerCase() === "manual")) : providers.at(0) ); } }, [providers, currentProvider]); function providerDialog() { if (!currentProvider) return; switch (currentProvider.type) { case StreamProviders.Manual: { return ( { currentProvider.updateStreamInfo(ex); if (!ev) { if (findTag(ex, "content-warning") && __XXX_HOST && __XXX === false) { location.href = `${__XXX_HOST}/${eventLink(ex)}`; } else { navigate(`/${eventLink(ex)}`, { state: ex, }); onFinish?.(ex); } } else { onFinish?.(ev); } }} ev={ev} /> ); } case StreamProviders.NostrType: { return ; } case StreamProviders.Owncast: { return; } } } return ( <>

{providers.map(v => ( setCurrentProvider(v)}> {v.name} ))}
{providerDialog()} ); } interface NewStreamDialogProps { text?: string; btnClassName?: string; } export function NewStreamDialog(props: NewStreamDialogProps & StreamEditorProps) { const [open, setOpen] = useState(false); return (
setOpen(false)} />
); }