import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode-ai/ui/v2/dialog-v2" import { DividerV2 } from "@opencode-ai/ui/v2/divider-v2" import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" import { useDialog } from "@opencode-ai/ui/context/dialog" import { type Component, Show, createEffect, createSignal, onCleanup, onMount } from "solid-js" import { useLanguage } from "@/context/language" import { type ServerConnection } from "@/context/server" import { useServerManagementController } from "../dialog-select-server" import "./settings-v2.css" export const DialogServerV2: Component<{ mode: "add" | "edit" server?: ServerConnection.Http }> = (props) => { const dialog = useDialog() const language = useLanguage() const controller = useServerManagementController({ onSelect: () => dialog.close(), navigateOnAdd: false, }) const [opened, setOpened] = createSignal(false) onMount(() => { if (props.mode === "add") controller.startAdd() if (props.mode === "edit" && props.server) controller.startEdit(props.server) setOpened(true) }) onCleanup(() => { controller.resetForm() }) createEffect(() => { if (!opened()) return if (controller.isFormMode()) return dialog.close() }) const keyDown = (event: KeyboardEvent) => { if (event.key !== "Enter" || event.isComposing) return event.preventDefault() controller.submitForm() } const title = () => props.mode === "add" ? language.t("dialog.server.add.title") : language.t("dialog.server.edit.title") const submitLabel = () => { if (controller.formBusy()) return language.t("dialog.server.add.checking") if (props.mode === "add") return language.t("dialog.server.add.button") return language.t("common.save") } return ( {title()}
controller.handleFormChange()(event.currentTarget.value)} onKeyDown={keyDown} /> {controller.formError()}
controller.handleFormNameChange()(event.currentTarget.value)} onKeyDown={keyDown} />
controller.handleFormUsernameChange()(event.currentTarget.value)} onKeyDown={keyDown} />
controller.handleFormPasswordChange()(event.currentTarget.value)} onKeyDown={keyDown} />
dialog.close()}> {language.t("common.cancel")} {submitLabel()}
) }