gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/hosts/dialogs/mutation/fields/splithttp/xmux.tsx · v0.7.4
Source
1 4056c66 Dawsh 1y ago import {
2 4056c66 Dawsh 1y ago FormControl,
3 4056c66 Dawsh 1y ago FormField,
4 4056c66 Dawsh 1y ago FormItem,
5 4056c66 Dawsh 1y ago FormLabel,
6 4056c66 Dawsh 1y ago Input,
7 4056c66 Dawsh 1y ago Switch,
8 4056c66 Dawsh 1y ago } from "@marzneshin/common/components";
9 4056c66 Dawsh 1y ago import { useFormContext, useWatch } from "react-hook-form";
10 4056c66 Dawsh 1y ago import { useTranslation } from "react-i18next";
11 4056c66 Dawsh 1y ago
12 4056c66 Dawsh 1y ago export const SplitHttpXmuxFields = () => {
13 4056c66 Dawsh 1y ago const { t } = useTranslation();
14 4056c66 Dawsh 1y ago const form = useFormContext();
15 4056c66 Dawsh 1y ago const xmux = useWatch({ name: "splithttp_settings.xmux" });
16 4056c66 Dawsh 1y ago const isXMuxDisabled = xmux === null;
17 4056c66 Dawsh 1y ago
18 4056c66 Dawsh 1y ago const updateFieldValue = (path: string, value: any) => {
19 4056c66 Dawsh 1y ago form.setValue(path, value === "" ? null : value, {
20 4056c66 Dawsh 1y ago shouldDirty: true,
21 4056c66 Dawsh 1y ago shouldValidate: true,
22 4056c66 Dawsh 1y ago });
23 4056c66 Dawsh 1y ago };
24 4056c66 Dawsh 1y ago
25 4056c66 Dawsh 1y ago return (
26 4056c66 Dawsh 1y ago <div>
27 4056c66 Dawsh 1y ago <FormLabel className="flex items-center justify-between">
28 4056c66 Dawsh 1y ago {t("page.hosts.xmux-settings")}
29 4056c66 Dawsh 1y ago <Switch
30 4056c66 Dawsh 1y ago checked={!isXMuxDisabled}
31 4056c66 Dawsh 1y ago onCheckedChange={(checked) =>
32 4056c66 Dawsh 1y ago form.setValue(
33 4056c66 Dawsh 1y ago "splithttp_settings.xmux",
34 4056c66 Dawsh 1y ago checked ? { xmux: {} } : null,
35 4056c66 Dawsh 1y ago )
36 4056c66 Dawsh 1y ago }
37 4056c66 Dawsh 1y ago />
38 4056c66 Dawsh 1y ago </FormLabel>
39 4056c66 Dawsh 1y ago {!isXMuxDisabled && (
40 4056c66 Dawsh 1y ago <div className="grid grid-cols-2 gap-3">
41 4056c66 Dawsh 1y ago {[
42 4056c66 Dawsh 1y ago "max_concurrency",
43 4056c66 Dawsh 1y ago "max_connections",
44 4056c66 Dawsh 1y ago "max_reuse_times",
45 4056c66 Dawsh 1y ago "max_lifetime",
46 4056c66 Dawsh 1y ago "max_request_times",
47 4056c66 Dawsh 1y ago ].map((fieldName) => (
48 4056c66 Dawsh 1y ago <FormField
49 4056c66 Dawsh 1y ago key={fieldName}
50 4056c66 Dawsh 1y ago name={`splithttp_settings.xmux.${fieldName}`}
51 4056c66 Dawsh 1y ago render={({ field }) => (
52 4056c66 Dawsh 1y ago <FormItem>
53 4056c66 Dawsh 1y ago <FormLabel className="flex items-center justify-between capitalize">
54 4056c66 Dawsh 1y ago {t(`${fieldName.replace(/_/g, " ")}`)}
55 4056c66 Dawsh 1y ago </FormLabel>
56 4056c66 Dawsh 1y ago <FormControl>
57 4056c66 Dawsh 1y ago <Input
58 4056c66 Dawsh 1y ago value={field.value}
59 4056c66 Dawsh 1y ago onChange={(e) =>
60 4056c66 Dawsh 1y ago updateFieldValue(
61 4056c66 Dawsh 1y ago `splithttp_settings.xmux.${fieldName}`,
62 4056c66 Dawsh 1y ago e.target.value,
63 4056c66 Dawsh 1y ago )
64 4056c66 Dawsh 1y ago }
65 4056c66 Dawsh 1y ago className="w-full"
66 4056c66 Dawsh 1y ago />
67 4056c66 Dawsh 1y ago </FormControl>
68 4056c66 Dawsh 1y ago </FormItem>
69 4056c66 Dawsh 1y ago )}
70 4056c66 Dawsh 1y ago />
71 4056c66 Dawsh 1y ago ))}
72 4056c66 Dawsh 1y ago <FormField
73 4056c66 Dawsh 1y ago key="keep_alive_period"
74 4056c66 Dawsh 1y ago name={`splithttp_settings.xmux.keep_alive_period`}
75 4056c66 Dawsh 1y ago render={({ field }) => (
76 4056c66 Dawsh 1y ago <FormItem>
77 4056c66 Dawsh 1y ago <FormLabel className="flex items-center justify-between capitalize">
78 4056c66 Dawsh 1y ago Keep Alive Period
79 4056c66 Dawsh 1y ago </FormLabel>
80 4056c66 Dawsh 1y ago <FormControl>
81 4056c66 Dawsh 1y ago <Input
82 4056c66 Dawsh 1y ago value={field.value}
83 4056c66 Dawsh 1y ago type="number"
84 4056c66 Dawsh 1y ago onChange={(e) =>
85 4056c66 Dawsh 1y ago updateFieldValue(
86 4056c66 Dawsh 1y ago `splithttp_settings.xmux.keep_alive_period`,
87 4056c66 Dawsh 1y ago e.target.value === ""
88 4056c66 Dawsh 1y ago ? null
89 4056c66 Dawsh 1y ago : Number.parseInt(
90 4056c66 Dawsh 1y ago e.target.value,
91 4056c66 Dawsh 1y ago ),
92 4056c66 Dawsh 1y ago )
93 4056c66 Dawsh 1y ago }
94 4056c66 Dawsh 1y ago className="w-full"
95 4056c66 Dawsh 1y ago />
96 4056c66 Dawsh 1y ago </FormControl>
97 4056c66 Dawsh 1y ago </FormItem>
98 4056c66 Dawsh 1y ago )}
99 4056c66 Dawsh 1y ago />
100 4056c66 Dawsh 1y ago </div>
101 4056c66 Dawsh 1y ago )}
102 4056c66 Dawsh 1y ago </div>
103 4056c66 Dawsh 1y ago );
104 4056c66 Dawsh 1y ago };