import { Dispatch, SetStateAction, useCallback } from "react"; import { Trans, useTranslation } from "react-i18next"; import { Button } from "@/components/buttons/Button"; import { Toggle } from "@/components/buttons/Toggle"; import { Icon, Icons } from "@/components/Icon"; import { SettingsCard } from "@/components/layout/SettingsCard"; import { MwLink } from "@/components/text/Link"; import { AuthInputBox } from "@/components/text-inputs/AuthInputBox"; import { Divider } from "@/components/utils/Divider"; import { Heading1 } from "@/components/utils/Text"; import { SetupPart } from "@/pages/parts/settings/SetupPart"; interface ProxyEditProps { proxyUrls: string[] | null; setProxyUrls: Dispatch>; } interface BackendEditProps { backendUrl: string | null; setBackendUrl: Dispatch>; } function ProxyEdit({ proxyUrls, setProxyUrls }: ProxyEditProps) { const { t } = useTranslation(); const add = useCallback(() => { setProxyUrls((s) => [...(s ?? []), ""]); }, [setProxyUrls]); const changeItem = useCallback( (index: number, val: string) => { setProxyUrls((s) => [ ...(s ?? []).map((v, i) => { if (i !== index) return v; return val; }), ]); }, [setProxyUrls], ); const removeItem = useCallback( (index: number) => { setProxyUrls((s) => [...(s ?? []).filter((v, i) => i !== index)]); }, [setProxyUrls], ); return (

{t("settings.connections.workers.label")}

Proxy documentation

setProxyUrls((s) => (s === null ? [] : null))} enabled={proxyUrls !== null} />
{proxyUrls !== null ? ( <>

{t("settings.connections.workers.urlLabel")}

{(proxyUrls?.length ?? 0) === 0 ? (

{t("settings.connections.workers.emptyState")}

) : null} {(proxyUrls ?? []).map((v, i) => (
changeItem(i, val)} placeholder={ t("settings.connections.workers.urlPlaceholder") ?? undefined } />
))}
) : null}
); } function BackendEdit({ backendUrl, setBackendUrl }: BackendEditProps) { const { t } = useTranslation(); return (

{t("settings.connections.server.label")}

Backend documentation

setBackendUrl((s) => (s === null ? "" : null))} enabled={backendUrl !== null} />
{backendUrl !== null ? ( <>

{t("settings.connections.server.urlLabel")}

) : null}
); } export function ConnectionsPart(props: BackendEditProps & ProxyEditProps) { const { t } = useTranslation(); return (
{t("settings.connections.title")}
); }