fix: erros for Create guilds
This commit is contained in:
@@ -130,21 +130,23 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
hasInquiry
|
hasInquiry
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
dispatch(updateGuildByNationalIdNewService(guildsDataArray)).then(
|
|
||||||
(result) => {
|
console.log(guildsDataArray);
|
||||||
if (result.payload.error) {
|
// dispatch(updateGuildByNationalIdNewService(guildsDataArray)).then(
|
||||||
handleSubmitError(openNotif, result.payload.error);
|
// (result) => {
|
||||||
} else {
|
// if (result.payload.error) {
|
||||||
handleSubmitSuccess(
|
// handleSubmitError(openNotif, result.payload.error);
|
||||||
dispatch,
|
// } else {
|
||||||
openNotif,
|
// handleSubmitSuccess(
|
||||||
updateTable,
|
// dispatch,
|
||||||
values,
|
// openNotif,
|
||||||
result.payload?.data
|
// updateTable,
|
||||||
);
|
// values,
|
||||||
}
|
// result.payload?.data
|
||||||
}
|
// );
|
||||||
);
|
// }
|
||||||
|
// }
|
||||||
|
// );
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -183,6 +185,7 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
return {
|
return {
|
||||||
steward: initialValues.steward || false,
|
steward: initialValues.steward || false,
|
||||||
guild: initialValues.guild || false,
|
guild: initialValues.guild || false,
|
||||||
|
license_number: initialValues.license_number ?? "",
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
formik.setFieldValue("guilds", guildsForFormik, false).then(() => {
|
formik.setFieldValue("guilds", guildsForFormik, false).then(() => {
|
||||||
@@ -266,20 +269,11 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
});
|
});
|
||||||
setGuildsFormValues(initialGuildValues);
|
setGuildsFormValues(initialGuildValues);
|
||||||
|
|
||||||
// Update Formik's guilds array for validation
|
// Update Formik's guilds array for validation (include validated fields)
|
||||||
const guildsForFormik = guildsData.map((guildItem) => ({
|
const guildsForFormik = initialGuildValues.map((g) => ({
|
||||||
steward:
|
steward: g.steward ?? false,
|
||||||
typeof guildItem?.steward === "boolean"
|
guild: g.guild ?? false,
|
||||||
? guildItem.steward
|
license_number: g.license_number ?? "",
|
||||||
: typeof guildItem?.isSteward === "boolean"
|
|
||||||
? guildItem.isSteward
|
|
||||||
: false,
|
|
||||||
guild:
|
|
||||||
typeof guildItem?.guild === "boolean"
|
|
||||||
? guildItem.guild
|
|
||||||
: typeof guildItem?.isGuild === "boolean"
|
|
||||||
? guildItem.isGuild
|
|
||||||
: false,
|
|
||||||
}));
|
}));
|
||||||
formik.setFieldValue("guilds", guildsForFormik, true).then(() => {
|
formik.setFieldValue("guilds", guildsForFormik, true).then(() => {
|
||||||
formik.validateField("guilds");
|
formik.validateField("guilds");
|
||||||
@@ -563,8 +557,12 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
return newValues;
|
return newValues;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Sync with Formik's guilds array for steward and guild fields
|
// Sync validated guild fields to Formik's guilds array (schema: license_number, steward, guild)
|
||||||
if (fieldName === "steward" || fieldName === "guild") {
|
if (
|
||||||
|
fieldName === "steward" ||
|
||||||
|
fieldName === "guild" ||
|
||||||
|
fieldName === "license_number"
|
||||||
|
) {
|
||||||
const currentGuilds = formik.values.guilds || [];
|
const currentGuilds = formik.values.guilds || [];
|
||||||
const updatedGuilds = [...currentGuilds];
|
const updatedGuilds = [...currentGuilds];
|
||||||
if (!updatedGuilds[index]) {
|
if (!updatedGuilds[index]) {
|
||||||
@@ -683,6 +681,7 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
onGuildValuesChange={handleGuildValuesChange}
|
onGuildValuesChange={handleGuildValuesChange}
|
||||||
expanded={expandedAccordion === index}
|
expanded={expandedAccordion === index}
|
||||||
onChange={handleAccordionChange(index)}
|
onChange={handleAccordionChange(index)}
|
||||||
|
mainFormik={formik}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -74,7 +74,9 @@ export const FormActions = ({
|
|||||||
color="error"
|
color="error"
|
||||||
sx={{ mt: 1, display: "block" }}
|
sx={{ mt: 1, display: "block" }}
|
||||||
>
|
>
|
||||||
{formik.errors.guilds}
|
{typeof formik.errors.guilds === "string"
|
||||||
|
? formik.errors.guilds
|
||||||
|
: "برای هر واحد صنفی، حداقل یکی از گزینههای مباشر یا صنف باید انتخاب شود"}
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -26,7 +26,12 @@ export const GuildInfoAccordionItem = ({
|
|||||||
onGuildValuesChange,
|
onGuildValuesChange,
|
||||||
expanded,
|
expanded,
|
||||||
onChange,
|
onChange,
|
||||||
|
mainFormik,
|
||||||
}) => {
|
}) => {
|
||||||
|
// Errors and touched for this guild from main formik (formik.errors.guilds[i], formik.touched.guilds[i])
|
||||||
|
const guildErrors = mainFormik?.errors?.guilds?.[guildIndex] ?? {};
|
||||||
|
const guildTouched = mainFormik?.touched?.guilds?.[guildIndex] ?? {};
|
||||||
|
|
||||||
// Create a formik-like object for this guild's values
|
// Create a formik-like object for this guild's values
|
||||||
const guildFormik = {
|
const guildFormik = {
|
||||||
values: guildFormValues || {},
|
values: guildFormValues || {},
|
||||||
@@ -36,9 +41,14 @@ export const GuildInfoAccordionItem = ({
|
|||||||
handleChange: (e) => {
|
handleChange: (e) => {
|
||||||
onGuildValuesChange(guildIndex, e.target.name, e.target.value);
|
onGuildValuesChange(guildIndex, e.target.name, e.target.value);
|
||||||
},
|
},
|
||||||
handleBlur: () => {},
|
handleBlur: (e) => {
|
||||||
errors: {},
|
const name = e?.target?.name;
|
||||||
touched: {},
|
if (name && mainFormik?.setFieldTouched) {
|
||||||
|
mainFormik.setFieldTouched(`guilds.${guildIndex}.${name}`, true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
errors: guildErrors,
|
||||||
|
touched: guildTouched,
|
||||||
};
|
};
|
||||||
const getGuildTitle = () => {
|
const getGuildTitle = () => {
|
||||||
if (guildData?.guildsName) {
|
if (guildData?.guildsName) {
|
||||||
@@ -92,6 +102,7 @@ export const GuildInfoAccordionItem = ({
|
|||||||
typeActivities={typeActivities}
|
typeActivities={typeActivities}
|
||||||
hideTitle={true}
|
hideTitle={true}
|
||||||
noGridWrapper={true}
|
noGridWrapper={true}
|
||||||
|
guildIndex={guildIndex}
|
||||||
/>
|
/>
|
||||||
</AccordionDetails>
|
</AccordionDetails>
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|||||||
@@ -242,6 +242,8 @@ export const GuildInfoSection = ({
|
|||||||
value={formik.values.license_number}
|
value={formik.values.license_number}
|
||||||
onChange={formik.handleChange}
|
onChange={formik.handleChange}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={formik.handleBlur}
|
||||||
|
error={Boolean(formik.errors?.license_number)}
|
||||||
|
helperText={formik.errors?.license_number}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<InfoBox
|
<InfoBox
|
||||||
|
|||||||
@@ -436,12 +436,20 @@ export const PersonalInfoSection = ({
|
|||||||
label="شماره همراه"
|
label="شماره همراه"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
required
|
||||||
id="mobile"
|
id="mobile"
|
||||||
name="mobile"
|
name="mobile"
|
||||||
value={formik.values.mobile}
|
value={formik.values.mobile}
|
||||||
onChange={formik.handleChange}
|
onChange={formik.handleChange}
|
||||||
error={formik.touched.mobile && Boolean(formik.errors.mobile)}
|
onBlur={formik.handleBlur}
|
||||||
helperText={formik.touched.mobile && formik.errors.mobile}
|
error={
|
||||||
|
Boolean(formik.errors.mobile) &&
|
||||||
|
(formik.touched.mobile || formik.submitCount > 0)
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
(formik.touched.mobile || formik.submitCount > 0) &&
|
||||||
|
formik.errors.mobile
|
||||||
|
}
|
||||||
disabled={
|
disabled={
|
||||||
isKillHouse &&
|
isKillHouse &&
|
||||||
formik.values.mobile &&
|
formik.values.mobile &&
|
||||||
|
|||||||
@@ -3,27 +3,19 @@ import { normalizeDatabaseDate } from "./dateUtils";
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates validation schema for the form
|
* Creates validation schema for the form
|
||||||
* @param {boolean} isEditMode - Whether we're editing an existing guild
|
* @param {boolean} isEditMode - Whether we're editing an existing guild (kept for API compatibility)
|
||||||
*/
|
*/
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
export const getValidationSchema = (isEditMode) =>
|
export const getValidationSchema = (isEditMode) =>
|
||||||
yup.object({
|
yup.object({
|
||||||
national_id: yup
|
national_id: yup
|
||||||
.string()
|
.string()
|
||||||
.required("کد ملی الزامی است")
|
.required("کد ملی الزامی است")
|
||||||
.matches(/^[0-9]{10}$/, "کد ملی باید 10 رقم باشد"),
|
.matches(/^[0-9]{10}$/, "کد ملی باید 10 رقم باشد"),
|
||||||
mobile: isEditMode
|
mobile: yup
|
||||||
? yup
|
.string()
|
||||||
.string()
|
.required("شماره همراه الزامی است")
|
||||||
.nullable()
|
.matches(/^[0-9]{11}$/, "شماره تلفن باید 11 رقم باشد"),
|
||||||
.test(
|
|
||||||
"mobile-format",
|
|
||||||
"شماره تلفن باید 11 رقم باشد",
|
|
||||||
(value) => !value || /^[0-9]{11}$/.test(value)
|
|
||||||
)
|
|
||||||
: yup
|
|
||||||
.string()
|
|
||||||
.required("شماره تلفن الزامی است")
|
|
||||||
.matches(/^[0-9]{11}$/, "شماره تلفن باید 11 رقم باشد"),
|
|
||||||
first_name: yup.string(),
|
first_name: yup.string(),
|
||||||
last_name: yup.string(),
|
last_name: yup.string(),
|
||||||
guild_name: yup.string(),
|
guild_name: yup.string(),
|
||||||
@@ -51,22 +43,18 @@ export const getValidationSchema = (isEditMode) =>
|
|||||||
.array()
|
.array()
|
||||||
.min(1, "حداقل یک واحد صنفی باید وجود داشته باشد")
|
.min(1, "حداقل یک واحد صنفی باید وجود داشته باشد")
|
||||||
.of(
|
.of(
|
||||||
yup.object({
|
yup
|
||||||
steward: yup.boolean().default(false),
|
.object({
|
||||||
guild: yup.boolean().default(false),
|
license_number: yup.string().required("شماره مجوز الزامی است"),
|
||||||
})
|
|
||||||
)
|
steward: yup.boolean(),
|
||||||
.test(
|
guild: yup.boolean(),
|
||||||
"steward-guild-required",
|
})
|
||||||
"برای هر واحد صنفی، حداقل یکی از گزینههای مباشر یا صنف باید انتخاب شود",
|
.test(
|
||||||
function (guilds) {
|
"steward-guild-required",
|
||||||
if (!guilds || guilds.length === 0) {
|
"برای هر واحد صنفی، حداقل یکی از گزینههای مباشر یا صنف باید انتخاب شود",
|
||||||
return false;
|
(value) => value?.steward === true || value?.guild === true
|
||||||
}
|
)
|
||||||
return guilds.every(
|
|
||||||
(guild) => guild?.steward === true || guild?.guild === true
|
|
||||||
);
|
|
||||||
}
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
import React, {
|
import React, { useContext, useEffect, useState, useCallback } from "react";
|
||||||
useContext,
|
|
||||||
useEffect,
|
|
||||||
useState,
|
|
||||||
useCallback,
|
|
||||||
useRef,
|
|
||||||
} from "react";
|
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import * as yup from "yup";
|
import * as yup from "yup";
|
||||||
import { useDispatch } from "react-redux";
|
import { useDispatch } from "react-redux";
|
||||||
@@ -28,7 +22,6 @@ import {
|
|||||||
CLOSE_MODAL,
|
CLOSE_MODAL,
|
||||||
LOADING_END,
|
LOADING_END,
|
||||||
LOADING_START,
|
LOADING_START,
|
||||||
OPEN_MODAL,
|
|
||||||
} from "../../../../lib/redux/slices/appSlice";
|
} from "../../../../lib/redux/slices/appSlice";
|
||||||
import { AppContext } from "../../../../contexts/AppContext";
|
import { AppContext } from "../../../../contexts/AppContext";
|
||||||
import { provinceGetLegalPersonUnitInfoService } from "../../services/province-get-legal-person-unit-info";
|
import { provinceGetLegalPersonUnitInfoService } from "../../services/province-get-legal-person-unit-info";
|
||||||
@@ -38,9 +31,8 @@ import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
|
|||||||
import { cityGetProvinces } from "../../../city/services/CityGetProvinces";
|
import { cityGetProvinces } from "../../../city/services/CityGetProvinces";
|
||||||
import { cityGetCity } from "../../../city/services/city-get-city";
|
import { cityGetCity } from "../../../city/services/city-get-city";
|
||||||
|
|
||||||
let preservedUserData = null;
|
const preservedUserData = null;
|
||||||
let preservedUserFound = false;
|
const preservedNationalCode = "";
|
||||||
let preservedNationalCode = "";
|
|
||||||
|
|
||||||
const extractCityFromAddress = (address) => {
|
const extractCityFromAddress = (address) => {
|
||||||
if (!address || typeof address !== "string") {
|
if (!address || typeof address !== "string") {
|
||||||
@@ -386,12 +378,7 @@ const InquiryForm = ({ onInquiry, nationalCode, setNationalCode }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ProvinceLegalGuildsForm = ({
|
export const ProvinceLegalGuildsForm = ({ updateTable, item, userType }) => {
|
||||||
onClose,
|
|
||||||
updateTable,
|
|
||||||
item,
|
|
||||||
userType,
|
|
||||||
}) => {
|
|
||||||
const [provinceData, setProvinceData] = useState();
|
const [provinceData, setProvinceData] = useState();
|
||||||
const [cityData, setCityData] = useState();
|
const [cityData, setCityData] = useState();
|
||||||
|
|
||||||
@@ -424,13 +411,17 @@ export const ProvinceLegalGuildsForm = ({
|
|||||||
const [userData, setUserData] = useState(
|
const [userData, setUserData] = useState(
|
||||||
item ? userInitialValue : preservedUserData
|
item ? userInitialValue : preservedUserData
|
||||||
);
|
);
|
||||||
const [userFound, setUserFound] = useState(item ? true : preservedUserFound);
|
|
||||||
const [typeActivities, setTypeActivities] = useState([]);
|
const [typeActivities, setTypeActivities] = useState([]);
|
||||||
|
|
||||||
const currentRole = getRoleFromUrl();
|
const currentRole = getRoleFromUrl();
|
||||||
const isAdmin = currentRole === "AdminX";
|
const isAdmin = currentRole === "AdminX";
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (preservedUserData) {
|
||||||
|
setUserData(preservedUserData);
|
||||||
|
setNationalCode(preservedNationalCode);
|
||||||
|
}
|
||||||
|
|
||||||
dispatch(LOADING_START());
|
dispatch(LOADING_START());
|
||||||
dispatch(cityGetProvinces())
|
dispatch(cityGetProvinces())
|
||||||
?.then((r) => {
|
?.then((r) => {
|
||||||
@@ -444,51 +435,12 @@ export const ProvinceLegalGuildsForm = ({
|
|||||||
.finally(() => {
|
.finally(() => {
|
||||||
dispatch(LOADING_END());
|
dispatch(LOADING_END());
|
||||||
});
|
});
|
||||||
}, []);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
dispatch(provinceGetTypeActivity()).then((r) => {
|
dispatch(provinceGetTypeActivity()).then((r) => {
|
||||||
setTypeActivities(r.payload.data || []);
|
setTypeActivities(r.payload.data || []);
|
||||||
});
|
});
|
||||||
}, [dispatch]);
|
|
||||||
|
|
||||||
// Restore preserved data on mount
|
|
||||||
useEffect(() => {
|
|
||||||
if (preservedUserData) {
|
|
||||||
setUserData(preservedUserData);
|
|
||||||
setUserFound(preservedUserFound);
|
|
||||||
setNationalCode(preservedNationalCode);
|
|
||||||
}
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Update modal size when userData is available (only once)
|
|
||||||
const sizeUpdatedRef = useRef(false);
|
|
||||||
useEffect(() => {
|
|
||||||
if (userData && !sizeUpdatedRef.current) {
|
|
||||||
sizeUpdatedRef.current = true;
|
|
||||||
// Preserve state before remount
|
|
||||||
preservedUserData = userData;
|
|
||||||
preservedUserFound = userFound;
|
|
||||||
preservedNationalCode = nationalCode;
|
|
||||||
// Update modal with larger size
|
|
||||||
dispatch(
|
|
||||||
OPEN_MODAL({
|
|
||||||
title: `${item ? "ویرایش" : "ثبت"} ${
|
|
||||||
IS_STEWARD ? "مباشر" : "صنف"
|
|
||||||
} حقوقی`,
|
|
||||||
content: (
|
|
||||||
<ProvinceLegalGuildsForm
|
|
||||||
onClose={onClose}
|
|
||||||
updateTable={updateTable}
|
|
||||||
userType={userType}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
size: { xs: "96vw", md: "90vw", lg: "600px" },
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}, [userData, dispatch, onClose, updateTable, userFound, nationalCode]);
|
|
||||||
|
|
||||||
const handleInquiry = useCallback(() => {
|
const handleInquiry = useCallback(() => {
|
||||||
if (!nationalCode || nationalCode.length !== 11) {
|
if (!nationalCode || nationalCode.length !== 11) {
|
||||||
openNotif({
|
openNotif({
|
||||||
@@ -502,7 +454,6 @@ export const ProvinceLegalGuildsForm = ({
|
|||||||
|
|
||||||
dispatch(provinceGetLegalPersonUnitInfoService(nationalCode)).then((r) => {
|
dispatch(provinceGetLegalPersonUnitInfoService(nationalCode)).then((r) => {
|
||||||
if (r.payload.error) {
|
if (r.payload.error) {
|
||||||
setUserFound(false);
|
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
openNotif({
|
openNotif({
|
||||||
vertical: "top",
|
vertical: "top",
|
||||||
@@ -543,7 +494,6 @@ export const ProvinceLegalGuildsForm = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else if (r.payload.data) {
|
} else if (r.payload.data) {
|
||||||
setUserFound(true);
|
|
||||||
const extractedCity = extractCityFromAddress(
|
const extractedCity = extractCityFromAddress(
|
||||||
r.payload.data.address || ""
|
r.payload.data.address || ""
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -155,22 +155,6 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOpenModal = () => {
|
|
||||||
dispatch(
|
|
||||||
OPEN_MODAL({
|
|
||||||
title: `ثبت ${IS_STEWARD ? "مباشر جدید" : "صنف جدید"}`,
|
|
||||||
content: (
|
|
||||||
<ProvinceLegalGuildsForm
|
|
||||||
onClose={() => dispatch(CLOSE_MODAL())}
|
|
||||||
updateTable={updateTableData}
|
|
||||||
userType={userType}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
size: 400,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Grid item gap={SPACING.SMALL} p={2} xs={12}>
|
<Grid item gap={SPACING.SMALL} p={2} xs={12}>
|
||||||
<Grid
|
<Grid
|
||||||
@@ -180,7 +164,25 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
|||||||
gap={SPACING.SMALL}
|
gap={SPACING.SMALL}
|
||||||
mb={SPACING.SMALL}
|
mb={SPACING.SMALL}
|
||||||
>
|
>
|
||||||
<Button variant="contained" color="primary" onClick={handleOpenModal}>
|
<Button
|
||||||
|
variant="contained"
|
||||||
|
color="primary"
|
||||||
|
onClick={() =>
|
||||||
|
dispatch(
|
||||||
|
OPEN_MODAL({
|
||||||
|
title: `ثبت ${IS_STEWARD ? "مباشر جدید" : "صنف جدید"}`,
|
||||||
|
content: (
|
||||||
|
<ProvinceLegalGuildsForm
|
||||||
|
onClose={() => dispatch(CLOSE_MODAL())}
|
||||||
|
updateTable={updateTableData}
|
||||||
|
userType={userType}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
size: "auto",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
>
|
||||||
{`ثبت ${IS_STEWARD ? "مباشر" : "واحد صنفی"}`}
|
{`ثبت ${IS_STEWARD ? "مباشر" : "واحد صنفی"}`}
|
||||||
</Button>
|
</Button>
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ export const ProvinceLegalGuildsOperations = ({
|
|||||||
|
|
||||||
dispatch(LOADING_END());
|
dispatch(LOADING_END());
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
|
||||||
dispatch(LOADING_END());
|
dispatch(LOADING_END());
|
||||||
const errorMessage =
|
const errorMessage =
|
||||||
error.response?.data?.result ||
|
error.response?.data?.result ||
|
||||||
|
|||||||
Reference in New Issue
Block a user