diff --git a/dashboard/src/modules/users/components/dialogs/mutation/index.tsx b/dashboard/src/modules/users/components/dialogs/mutation/index.tsx index 58e2f45..7742b9e 100644 --- a/dashboard/src/modules/users/components/dialogs/mutation/index.tsx +++ b/dashboard/src/modules/users/components/dialogs/mutation/index.tsx @@ -34,6 +34,7 @@ export const UsersMutationDialog: FC> = ({ service_ids: [], username: "", data_limit_reset_strategy: "no_reset", + data_limit: undefined, note: "", expire_date: "", expire_strategy: "fixed_date", diff --git a/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/index.tsx b/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/index.tsx index 027304f..7080125 100644 --- a/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/index.tsx +++ b/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/index.tsx @@ -2,32 +2,29 @@ import { FC } from "react"; import { FormLabel, Switch } from '@marzneshin/components'; import { useTranslation } from 'react-i18next'; import { DataLimitField, DataLimitResetStrategyField } from "../../fields"; -import { useFormContext } from "react-hook-form"; import { useDataLimit } from "./use-data-limit"; export const DataLimitFields: FC = () => { const { t } = useTranslation(); const { isDataLimitEnabled, setIsDataLimitEnabled } = useDataLimit(); - const form = useFormContext(); - - const handleToggleChange = () => { - setIsDataLimitEnabled(!isDataLimitEnabled); - }; return (
{t('page.users.data_limit_method')} - + setIsDataLimitEnabled(!isDataLimitEnabled)} + /> -
- {isDataLimitEnabled && ( + {isDataLimitEnabled && ( +
- {form.watch().data_limit !== 0 && } +
- )} -
+
+ )}
); }; diff --git a/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts b/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts index 47505a7..d43a45e 100644 --- a/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts +++ b/dashboard/src/modules/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts @@ -5,15 +5,11 @@ export const useDataLimit = () => { const form = useFormContext(); const dataLimit = form.watch("data_limit"); - const [isDataLimitEnabled, setIsDataLimitEnabled] = useState(dataLimit !== 0); - - useEffect(() => { - setIsDataLimitEnabled(dataLimit !== 0); - }, [dataLimit]); + const [isDataLimitEnabled, setIsDataLimitEnabled] = useState(!!dataLimit); useEffect(() => { if (!isDataLimitEnabled) { - form.setValue("data_limit", 0); + form.setValue("data_limit", undefined); form.setValue("data_limit_reset_strategy", "no_reset"); } // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/dashboard/src/modules/users/domain/schema.ts b/dashboard/src/modules/users/domain/schema.ts index c314d5a..c3fd503 100644 --- a/dashboard/src/modules/users/domain/schema.ts +++ b/dashboard/src/modules/users/domain/schema.ts @@ -7,7 +7,7 @@ export const UserSchema = z.object({ data_limit: z .union([z.string().transform((str) => (Number(str))), z.number()]) .refine(val => val >= 0, { message: 'The minimum number is 0' }) - .transform((val) => (Math.round(val) ?? 0) * DATA_LIMIT_METRIC) + .transform((val) => (Math.round(val)) * DATA_LIMIT_METRIC) .nullable() .optional(), data_limit_reset_strategy: z