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 } from "utils"; import { NostrProviderDialog } from "./nostr-provider-dialog"; function NewStream({ ev, onFinish }: StreamEditorProps) { const providers = useStreamProvider(); const [currentProvider, setCurrentProvider] = useState(); const navigate = useNavigate(); useEffect(() => { if (!currentProvider) { setCurrentProvider( ev !== undefined ? 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) { navigate(`/${eventLink(ex)}`, { state: ev, }); } else { onFinish?.(ev); } }} ev={ev} /> ); } case StreamProviders.NostrType: { return ( ); } case StreamProviders.Owncast: { return; } } } return ( <>

Stream Providers

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