"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Separator } from "@/components/ui/separator"; import { Save, RotateCcw } from "lucide-react"; import { useEffect, useState } from "react"; import { toast } from "sonner"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; const formSchema = z.object({ wispServer: z.string().url("Please provide a valid URL"), description: z.string().optional(), }); export default function ProxyOptions() { const [submitting, setSubmitting] = useState(false); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { wispServer: "", }, }); useEffect(() => { const wispServer: string = window.chemical.getStore("wisp"); const defaultWisp: string = (location.protocol === "https:" ? "wss" : "ws") + "://" + location.host + "/wisp/"; form.setValue("wispServer", wispServer !== defaultWisp ? wispServer : ""); }, []); function onSubmit(values: z.infer) { setSubmitting(true); window.chemical.setStore("wisp", values.wispServer); setTimeout(() => { setSubmitting(false); toast.success("Settings saved"); }, 1000); } function onReset() { form.reset(); window.chemical.setStore("wisp", ""); toast("Settings reset"); } const [proxy, setProxy] = useState(""); useEffect(() => { setProxy(window.chemical.getStore("service")); }, []); const proxyChanged = (service: string) => { setProxy(service); window.chemical.setStore("service", service); }; return (

Proxy

Proxy Switcher

( Wisp Server Switcher )} /> {}
); }