"use client"; import Check from "@mui/icons-material/Check"; import Close from "@mui/icons-material/Close"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; import { useRouter } from "next/navigation"; import React, { useCallback, useState } from "react"; import { useTranslation } from "react-i18next"; import { FieldErrors, FormProvider, SubmitErrorHandler, SubmitHandler, useForm, } from "react-hook-form"; import { Tab, Tabs, TabsProps, Typography } from "@mui/material"; import TimesheetMailDetails from "./TimesheetMailDetails"; import { Error } from "@mui/icons-material"; import { MailSave, saveMail, testEveryone, test7th, test15th, testEmail } from "@/app/api/mail/actions"; import SettingDetails from "./SettingDetails"; import { errorDialog, submitDialog, successDialog } from "../Swal/CustomAlerts"; export interface Props { defaultInputs?: MailSave, } const hasErrorsInTab = ( tabIndex: number, errors: FieldErrors, ) => { switch (tabIndex) { case 0: return ( errors.settings ); case 1: return ( errors.template ); default: false; } }; const MailSetting: React.FC = ({ defaultInputs, }) => { const [serverError, setServerError] = useState(""); const { t } = useTranslation(); const router = useRouter(); const [tabIndex, setTabIndex] = useState(0); const [test, setTest] = useState(false) const handleTabChange = useCallback>( (_e, newValue) => { setTabIndex(newValue); }, [], ); const formProps = useForm({ defaultValues: defaultInputs }); const handleCancel = () => { router.back(); }; const onSubmit = useCallback>( async (data) => { try { console.log(data); let haveError = false // if (data.name.length === 0) { // haveError = true // formProps.setError("name", { message: "Name is empty", type: "required" }) // } if (haveError) { return false } setServerError(""); submitDialog(async () => { const response = await saveMail(data); console.log(response) if (response !== null) { if (test) { let msg = "" try { // msg = "testEveryone" // await testEveryone() // msg = "test7th" // await test7th() // msg = "test15th" // await test15th() msg = "testEmail" await testEmail() } catch (error) { console.log(error) console.log(msg) } } successDialog(t("Save Success"), t) } else { errorDialog(t("Save Fail"), t).then(() => { // formProps.setError("code", { message: response.message, type: "custom" }) // setTabIndex(0) return false }) } }, t) } catch (e) { console.log(e) setServerError(t("An error has occurred. Please try again later.")); } }, [router, t, test], ); const onSubmitError = useCallback>( (errors) => { console.log(errors) }, [], ); const errors = formProps.formState.errors; return ( {serverError && ( {serverError} )} ) : undefined } iconPosition="end" /> ) : undefined } iconPosition="end" /> ); }; export default MailSetting;