https://dev.kronoz.win/r/marzneshin.git
1
2import {
3 FormControl,
4 FormField,
5 FormItem,
6 FormLabel,
7 FormMessage,
8 Select,
9 SelectContent,
10 SelectItem,
11 SelectTrigger,
12 SelectValue
13} from "@marzneshin/components";
14import { useEffect, useState } from "react";
15import { useFormContext } from "react-hook-form";
16import { useTranslation } from "react-i18next";
17import { AllowInsecureField, AlpnField, FingerprintField, SniField } from ".";
18
19export const SecurityFields = () => {
20 const { t } = useTranslation()
21 const form = useFormContext()
22 const security = form.watch().security
23
24 const [extraSecurity, setExtraSecurity] = useState<boolean>(["tls", "inbound_default"].includes(security))
25 useEffect(() => {
26 setExtraSecurity(["tls", "inbound_default"].includes(security))
27 }, [security, setExtraSecurity])
28 return (
29 <>
30 <FormField
31 control={form.control}
32 name="security"
33 render={({ field }) => (
34 <FormItem>
35 <FormLabel>{t('security')}</FormLabel>
36 <Select onValueChange={field.onChange} defaultValue={field.value}>
37 <FormControl>
38 <SelectTrigger>
39 <SelectValue placeholder="Select a verified email to display" />
40 </SelectTrigger>
41 </FormControl>
42 <SelectContent>
43 <SelectItem value="none">None</SelectItem>
44 <SelectItem value="tls">TLS</SelectItem>
45 <SelectItem value="inbound_default">Inbound Default</SelectItem>
46 </SelectContent>
47 </Select>
48 <FormMessage />
49 </FormItem>
50 )}
51 />
52 {extraSecurity &&
53 <>
54 <SniField />
55 <AlpnField />
56 <FingerprintField />
57 <AllowInsecureField />
58 </>
59 }
60 </>
61 )
62}