diff --git a/src/components/dashboard/change-password/index.jsx b/src/components/dashboard/change-password/index.jsx index ccbab93..ae74de6 100644 --- a/src/components/dashboard/change-password/index.jsx +++ b/src/components/dashboard/change-password/index.jsx @@ -6,45 +6,27 @@ import * as Yup from "yup"; import {useTranslations} from "next-intl"; import PasswordField from "@/core/components/PasswordField"; import StyledForm from "@/core/components/StyledForm"; -import {CHANGE_PASSWORD} from "@/core/data/apiRoutes"; -import useUser from "@/lib/app/hooks/useUser"; -import axios from "axios"; -import Notifications from "@/core/components/notifications"; -import useDirection from "@/lib/app/hooks/useDirection"; -import {toast} from "react-toastify"; +import {SET_USER_PASSWORD} from "@/core/data/apiRoutes"; import SvgChangePassword from "@/core/components/svgs/SvgChangePassword"; +import useRequest from "@/lib/app/hooks/useRequest"; const DashboardChangePasswordComponent = () => { const t = useTranslations(); - const {token} = useUser(); - const {directionApp} = useDirection(); + const requestServer = useRequest({auth: true}) const handleSubmit = (values, {setSubmitting, resetForm}) => { - Notifications(t); - axios - .post( - CHANGE_PASSWORD, - { - current_password: values.current_password, - new_password: values.new_password, - new_password_confirmation: values.new_password_confirmation, - }, - { - headers: {authorization: `Bearer ${token}`}, - } - ) - .then((response) => { - toast.dismiss(pendingToast); // Dismiss the pending toast notification - Notifications(t, response); - resetForm(); - }) - .catch((error) => { - toast.dismiss(pendingToast); // Dismiss the pending toast notification - Notifications(t, error.response); - }) - .finally(() => { - setSubmitting(false); // Set `setSubmitting` to false after the API request completes - }); + requestServer(SET_USER_PASSWORD, 'post', { + data: { + current_password: values.current_password, + new_password: values.new_password, + new_password_confirmation: values.new_password_confirmation, + }, + }).then((response) => { + resetForm(); + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }; const initialValues = { current_password: "", diff --git a/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx b/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx index 2e457b1..ab0f17f 100644 --- a/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx +++ b/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx @@ -14,24 +14,22 @@ import { } from "@mui/material"; import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt"; import UploadSystem from "@/core/components/UploadSystem"; -import useUser from "@/lib/app/hooks/useUser"; import useDirection from "@/lib/app/hooks/useDirection"; -import axios from "axios"; import {useFormik} from "formik"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; -import Notifications from "@/core/components/notifications"; import {CONFIRM_MACHINARY_OFFICE} from "@/core/data/apiRoutes"; import * as Yup from "yup"; +import useRequest from "@/lib/app/hooks/useRequest"; const Confirm = ({rowId, fetchUrl, mutate}) => { const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [selectedImage, setSelectedImage] = useState(""); const [fileType, setfileType] = useState(null); const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ proposed_amount: Yup.number().positive(t("ConfirmDialog.proposed_amount_positive")).required(t("ConfirmDialog.proposed_amount_error")), @@ -43,24 +41,19 @@ const Confirm = ({rowId, fetchUrl, mutate}) => { confirm_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("proposed_amount", values.proposed_amount); if (values.description != "") formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${CONFIRM_MACHINARY_OFFICE}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${CONFIRM_MACHINARY_OFFICE}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/machinary-office/Form/RejectForm.jsx b/src/components/dashboard/machinary-office/Form/RejectForm.jsx index 2105a44..5980af3 100644 --- a/src/components/dashboard/machinary-office/Form/RejectForm.jsx +++ b/src/components/dashboard/machinary-office/Form/RejectForm.jsx @@ -19,9 +19,7 @@ import UploadSystem from "@/core/components/UploadSystem"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; import useDirection from "@/lib/app/hooks/useDirection"; import ThumbDownIcon from "@mui/icons-material/ThumbDown"; -import Notifications from "@/core/components/notifications"; -import axios from "axios"; -import useUser from "@/lib/app/hooks/useUser"; +import useRequest from "@/lib/app/hooks/useRequest"; const Reject = ({rowId, fetchUrl, mutate}) => { const [selectedImage, setSelectedImage] = useState(""); @@ -29,9 +27,9 @@ const Reject = ({rowId, fetchUrl, mutate}) => { const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [openRejectDialog, setOpenRejectDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ description: Yup.string().required(t("RejectDialog.description_error")), @@ -43,23 +41,18 @@ const Reject = ({rowId, fetchUrl, mutate}) => { reject_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${REJECT_MACHINARY_OFFICE}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${REJECT_MACHINARY_OFFICE}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/passenger-boss/Form/ConfirmForm.jsx b/src/components/dashboard/passenger-boss/Form/ConfirmForm.jsx index ccbe43c..18c8dd9 100644 --- a/src/components/dashboard/passenger-boss/Form/ConfirmForm.jsx +++ b/src/components/dashboard/passenger-boss/Form/ConfirmForm.jsx @@ -14,24 +14,22 @@ import { } from "@mui/material"; import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt"; import UploadSystem from "@/core/components/UploadSystem"; -import useUser from "@/lib/app/hooks/useUser"; import useDirection from "@/lib/app/hooks/useDirection"; -import axios from "axios"; import {useFormik} from "formik"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; -import Notifications from "@/core/components/notifications"; -import {CONFIRM_PASSENGER_BOSS} from "@/core/data/apiRoutes"; import * as Yup from "yup"; +import useRequest from "@/lib/app/hooks/useRequest"; +import {CONFIRM_PASSENGER_BOSS} from "@/core/data/apiRoutes"; const Confirm = ({rowId, fetchUrl, mutate}) => { const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [selectedImage, setSelectedImage] = useState(""); const [fileType, setfileType] = useState(null); const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ approved_amount: Yup.number().positive(t("ConfirmDialog.approved_amount_positive")).required(t("ConfirmDialog.approved_amount_error")) @@ -43,24 +41,19 @@ const Confirm = ({rowId, fetchUrl, mutate}) => { confirm_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("approved_amount", values.approved_amount); if (values.description != "") formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${CONFIRM_PASSENGER_BOSS}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${CONFIRM_PASSENGER_BOSS}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/passenger-boss/Form/RejectForm.jsx b/src/components/dashboard/passenger-boss/Form/RejectForm.jsx index 7377777..90bdb51 100644 --- a/src/components/dashboard/passenger-boss/Form/RejectForm.jsx +++ b/src/components/dashboard/passenger-boss/Form/RejectForm.jsx @@ -19,9 +19,7 @@ import UploadSystem from "@/core/components/UploadSystem"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; import useDirection from "@/lib/app/hooks/useDirection"; import ThumbDownIcon from "@mui/icons-material/ThumbDown"; -import Notifications from "@/core/components/notifications"; -import axios from "axios"; -import useUser from "@/lib/app/hooks/useUser"; +import useRequest from "@/lib/app/hooks/useRequest"; const Reject = ({rowId, fetchUrl, mutate}) => { const [selectedImage, setSelectedImage] = useState(""); @@ -29,9 +27,9 @@ const Reject = ({rowId, fetchUrl, mutate}) => { const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [openRejectDialog, setOpenRejectDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ description: Yup.string().required(t("RejectDialog.description_error")), @@ -43,23 +41,18 @@ const Reject = ({rowId, fetchUrl, mutate}) => { reject_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${REJECT_PASSENGER_BOSS}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${REJECT_PASSENGER_BOSS}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx b/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx index 493db2c..0a550e0 100644 --- a/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx +++ b/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx @@ -14,46 +14,39 @@ import { } from "@mui/material"; import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt"; import UploadSystem from "@/core/components/UploadSystem"; -import useUser from "@/lib/app/hooks/useUser"; import useDirection from "@/lib/app/hooks/useDirection"; -import axios from "axios"; import {useFormik} from "formik"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; -import Notifications from "@/core/components/notifications"; +import useRequest from "@/lib/app/hooks/useRequest"; import {CONFIRM_PASSENGER_OFFICE} from "@/core/data/apiRoutes"; const Confirm = ({rowId, fetchUrl, mutate}) => { const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [selectedImage, setSelectedImage] = useState(""); const [fileType, setfileType] = useState(null); const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const requestServer = useRequest({auth: true}) const formik = useFormik({ initialValues: { description: "", confirm_img: "" }, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); if (values.description != "") formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${CONFIRM_PASSENGER_OFFICE}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${CONFIRM_PASSENGER_OFFICE}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/passenger-office/Form/RejectForm.jsx b/src/components/dashboard/passenger-office/Form/RejectForm.jsx index 7e37c9b..1b56bab 100644 --- a/src/components/dashboard/passenger-office/Form/RejectForm.jsx +++ b/src/components/dashboard/passenger-office/Form/RejectForm.jsx @@ -19,9 +19,7 @@ import UploadSystem from "@/core/components/UploadSystem"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; import useDirection from "@/lib/app/hooks/useDirection"; import ThumbDownIcon from "@mui/icons-material/ThumbDown"; -import Notifications from "@/core/components/notifications"; -import axios from "axios"; -import useUser from "@/lib/app/hooks/useUser"; +import useRequest from "@/lib/app/hooks/useRequest"; const Reject = ({rowId, fetchUrl, mutate}) => { const [selectedImage, setSelectedImage] = useState(""); @@ -29,9 +27,9 @@ const Reject = ({rowId, fetchUrl, mutate}) => { const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [openRejectDialog, setOpenRejectDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ description: Yup.string().required(t("RejectDialog.description_error")), @@ -43,23 +41,18 @@ const Reject = ({rowId, fetchUrl, mutate}) => { reject_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${REJECT_PASSENGER_OFFICE}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${REJECT_PASSENGER_OFFICE}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/province-manager/Form/ConfirmForm.jsx b/src/components/dashboard/province-manager/Form/ConfirmForm.jsx index 23e946f..7056975 100644 --- a/src/components/dashboard/province-manager/Form/ConfirmForm.jsx +++ b/src/components/dashboard/province-manager/Form/ConfirmForm.jsx @@ -14,46 +14,39 @@ import { } from "@mui/material"; import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt"; import UploadSystem from "@/core/components/UploadSystem"; -import useUser from "@/lib/app/hooks/useUser"; import useDirection from "@/lib/app/hooks/useDirection"; -import axios from "axios"; import {useFormik} from "formik"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; -import Notifications from "@/core/components/notifications"; import {CONFIRM_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; +import useRequest from "@/lib/app/hooks/useRequest"; const Confirm = ({rowId, fetchUrl, mutate}) => { const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [selectedImage, setSelectedImage] = useState(""); const [fileType, setfileType] = useState(null); const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const requestServer = useRequest({auth: true}) const formik = useFormik({ initialValues: { description: "", confirm_img: "" }, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); if (values.description != "") formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${CONFIRM_PROVINCE_MANAGER}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${CONFIRM_PROVINCE_MANAGER}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/province-manager/Form/RejectForm.jsx b/src/components/dashboard/province-manager/Form/RejectForm.jsx index 5c085d8..8934eee 100644 --- a/src/components/dashboard/province-manager/Form/RejectForm.jsx +++ b/src/components/dashboard/province-manager/Form/RejectForm.jsx @@ -19,9 +19,7 @@ import UploadSystem from "@/core/components/UploadSystem"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; import useDirection from "@/lib/app/hooks/useDirection"; import ThumbDownIcon from "@mui/icons-material/ThumbDown"; -import Notifications from "@/core/components/notifications"; -import axios from "axios"; -import useUser from "@/lib/app/hooks/useUser"; +import useRequest from "@/lib/app/hooks/useRequest"; const Reject = ({rowId, fetchUrl, mutate}) => { const [selectedImage, setSelectedImage] = useState(""); @@ -29,9 +27,9 @@ const Reject = ({rowId, fetchUrl, mutate}) => { const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [openRejectDialog, setOpenRejectDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ description: Yup.string().required(t("RejectDialog.description_error")), @@ -43,23 +41,18 @@ const Reject = ({rowId, fetchUrl, mutate}) => { reject_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${REJECT_PROVINCE_MANAGER}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${REJECT_PROVINCE_MANAGER}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx b/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx index a5902e0..6ce7dda 100644 --- a/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx +++ b/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx @@ -14,46 +14,39 @@ import { } from "@mui/material"; import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt"; import UploadSystem from "@/core/components/UploadSystem"; -import useUser from "@/lib/app/hooks/useUser"; import useDirection from "@/lib/app/hooks/useDirection"; -import axios from "axios"; import {useFormik} from "formik"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; -import Notifications from "@/core/components/notifications"; import {CONFIRM_TRANSPORTATION_ASSISTANCE} from "@/core/data/apiRoutes"; +import useRequest from "@/lib/app/hooks/useRequest"; const Confirm = ({rowId, fetchUrl, mutate}) => { const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [selectedImage, setSelectedImage] = useState(""); const [fileType, setfileType] = useState(null); const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const requestServer = useRequest({auth: true}) const formik = useFormik({ initialValues: { description: "", confirm_img: "" }, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); if (values.description != "") formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${CONFIRM_TRANSPORTATION_ASSISTANCE}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${CONFIRM_TRANSPORTATION_ASSISTANCE}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx b/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx index c9b76c8..2bd4fe7 100644 --- a/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx +++ b/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx @@ -19,9 +19,7 @@ import UploadSystem from "@/core/components/UploadSystem"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; import useDirection from "@/lib/app/hooks/useDirection"; import ThumbDownIcon from "@mui/icons-material/ThumbDown"; -import Notifications from "@/core/components/notifications"; -import axios from "axios"; -import useUser from "@/lib/app/hooks/useUser"; +import useRequest from "@/lib/app/hooks/useRequest"; const Reject = ({rowId, fetchUrl, mutate}) => { const [selectedImage, setSelectedImage] = useState(""); @@ -29,9 +27,9 @@ const Reject = ({rowId, fetchUrl, mutate}) => { const [fileName, setfileName] = useState(null); const [showAddIcon, setShowAddIcon] = useState(true); const t = useTranslations(); - const {token} = useUser(); const {directionApp} = useDirection(); const [openRejectDialog, setOpenRejectDialog] = useState(false); + const requestServer = useRequest({auth: true}) const validationSchema = Yup.object().shape({ description: Yup.string().required(t("RejectDialog.description_error")), @@ -43,23 +41,18 @@ const Reject = ({rowId, fetchUrl, mutate}) => { reject_img: "" }, validationSchema, - onSubmit: (values) => { + onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("expert_description", values.description); - Notifications(directionApp, t, undefined) - axios - .post(`${REJECT_TRANSPORTATION_ASSISTANCE}/${rowId}`, formData, { - headers: {authorization: `Bearer ${token}`}, - }) - .then((response) => { - Notifications(directionApp, t, response); - mutate(fetchUrl) - formik.setSubmitting(false) - }) - .catch((error) => { - Notifications(directionApp, t, error.response); - formik.setSubmitting(false) - }); + + requestServer(`${REJECT_TRANSPORTATION_ASSISTANCE}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); }, }); diff --git a/src/core/components/DataTable.jsx b/src/core/components/DataTable.jsx index c7f422e..b3b0f26 100644 --- a/src/core/components/DataTable.jsx +++ b/src/core/components/DataTable.jsx @@ -5,22 +5,19 @@ import moment from "moment-jalaali"; import useSWR from "swr"; import {Typography} from "@mui/material"; import MaterialReactTable from "material-react-table"; -import axios from "axios"; -import useUser from "@/lib/app/hooks/useUser"; +import useRequest from "@/lib/app/hooks/useRequest"; function DataTable(props) { - const {token} = useUser(); + const requestServer = useRequest({auth: true}) const fetcher = (...args) => { - return axios - .get(args, { - headers: { - Authorization: `Bearer ${token}`, - }, - }) - .then((res) => { - setRowCount(res.data.meta.totalRowCount); - return res.data.data; - }); + return requestServer(args, 'get', { + pending: false, + success: {notification: {show: false}} + }).then((response) => { + setRowCount(response.data.meta.totalRowCount); + return response.data.data; + }).catch(() => { + }) }; const t = useTranslations(); const {languageApp, languageList} = useLanguage(); diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index cf01622..36bff5e 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -5,7 +5,7 @@ export const GET_USER_TOKEN = BASE_URL + "/dashboard/login"; //end login //change password -export const CHANGE_PASSWORD = BASE_URL + "/dashboard/profile/change_password"; +export const SET_USER_PASSWORD = BASE_URL + "/dashboard/profile/change_password"; //end change password //user data