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