edit api integrate
This commit is contained in:
1 parent
81c014f94c
commit
8b52dd4a29
10 files changed
+592
-199
No files matched your search
@@ -35,7 +35,7 @@ import { useSendOtp, useVerifyOtp } from "../hooks/useAuth";
|
||||
const OTP_LENGTH = 4;
|
||||
const OTP_TIMER_SEC = 120; // 2 minutes
|
||||
|
||||
const PersonalDetailsForm = ({ onSubmitStep, errors, onFieldChange }) => {
|
||||
const PersonalDetailsForm = ({ onSubmitStep, errors, onFieldChange, isStep1Update }) => {
|
||||
const dispatch = useDispatch();
|
||||
const data = useSelector((state) => state.registerform.personalDetails);
|
||||
const nameInputRef = useRef(null);
|
||||
@@ -1012,6 +1012,7 @@ const PersonalDetailsForm = ({ onSubmitStep, errors, onFieldChange }) => {
|
||||
</div>
|
||||
|
||||
{/* Password */}
|
||||
{!isStep1Update && (
|
||||
<div className="flex flex-col gap-2">
|
||||
<label className="text-gray-900 text-[15px]">
|
||||
Password{requiredMark}
|
||||
@@ -1099,8 +1100,10 @@ const PersonalDetailsForm = ({ onSubmitStep, errors, onFieldChange }) => {
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Confirm Password */}
|
||||
{!isStep1Update && (
|
||||
<div className="flex flex-col gap-2">
|
||||
<label className="text-gray-900 text-[15px]">
|
||||
Confirm Password{requiredMark}
|
||||
@@ -1130,6 +1133,7 @@ const PersonalDetailsForm = ({ onSubmitStep, errors, onFieldChange }) => {
|
||||
variant="outlined"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* State */}
|
||||
<div className="flex flex-col gap-2">
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
useRegisterStep4,
|
||||
useRegisterStep5,
|
||||
} from "../hooks/useRegister";
|
||||
import { setAccessToken } from "../api/axiosInstance";
|
||||
import axiosInstance, { setAccessToken } from "../api/axiosInstance";
|
||||
import toast from "react-hot-toast";
|
||||
|
||||
const STEP_FIELD_ORDER = {
|
||||
@@ -180,6 +180,7 @@ const StepperForm = () => {
|
||||
const initialStep = location.state?.step || 1;
|
||||
|
||||
const [currentStep, setCurrentStep] = useState(initialStep);
|
||||
const [isStep1Update, setIsStep1Update] = useState(false);
|
||||
const [errors, setErrors] = useState({});
|
||||
|
||||
const registerStep1 = useRegisterStep1();
|
||||
@@ -329,6 +330,53 @@ const StepperForm = () => {
|
||||
}
|
||||
}, [location.state?.step]);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchPersonalDetails = async () => {
|
||||
try {
|
||||
const response = await axiosInstance.get("/get_personal_details");
|
||||
const data = response.data;
|
||||
if (data.status === "success" && data.personal_details) {
|
||||
const pd = data.personal_details;
|
||||
setIsStep1Update(true);
|
||||
|
||||
const mappedImages = (pd.images || []).map((url, index) => ({
|
||||
id: `server-${index}`,
|
||||
preview: url,
|
||||
name: `image-${index}.png`,
|
||||
}));
|
||||
|
||||
const formattedDob = pd.dob ? pd.dob.split("T")[0] : "";
|
||||
|
||||
dispatch(
|
||||
updatePersonalDetails({
|
||||
name: pd.name || "",
|
||||
mobileNumber: pd.mobile || "",
|
||||
email: pd.email || "",
|
||||
gender: pd.gender || "",
|
||||
dob: formattedDob,
|
||||
height: pd.height || "",
|
||||
weight: pd.weight || "",
|
||||
maritalStatus: pd.marital_status_id || "",
|
||||
religion: pd.religion_id || "",
|
||||
profileFor: pd.profile_for_id || "",
|
||||
caste: pd.caste_id || "",
|
||||
subCaste: pd.sub_caste_id || "",
|
||||
gothram: pd.gothram_id || "",
|
||||
raasi: pd.raasi_id || "",
|
||||
star: pd.star_id || "",
|
||||
state: pd.state_id || "",
|
||||
city: pd.district_id || "",
|
||||
pincode: pd.pincode || "",
|
||||
profiles: mappedImages,
|
||||
})
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error fetching personal details:", error);
|
||||
}
|
||||
};
|
||||
fetchPersonalDetails();
|
||||
}, [dispatch]);
|
||||
|
||||
|
||||
|
||||
@@ -345,8 +393,6 @@ const StepperForm = () => {
|
||||
"profileFor",
|
||||
"caste",
|
||||
"email",
|
||||
"password",
|
||||
"confirmPassword",
|
||||
"state",
|
||||
"city",
|
||||
"pincode",
|
||||
@@ -358,6 +404,11 @@ const StepperForm = () => {
|
||||
}
|
||||
});
|
||||
|
||||
if (!isStep1Update) {
|
||||
if (!personalDetails.password) newErrors.password = "This field is required";
|
||||
if (!personalDetails.confirmPassword) newErrors.confirmPassword = "This field is required";
|
||||
}
|
||||
|
||||
if (
|
||||
personalDetails.email &&
|
||||
!/\S+@\S+\.\S+/.test(personalDetails.email)
|
||||
@@ -474,7 +525,7 @@ const StepperForm = () => {
|
||||
formData.append("state", personalDetails.state);
|
||||
formData.append("district", personalDetails.city);
|
||||
formData.append("password", personalDetails.password || "");
|
||||
formData.append("fcm_token", localStorage.getItem("fcm_token") || "");
|
||||
formData.append("web_fcm_token", localStorage.getItem("fcm_token") || "");
|
||||
|
||||
if (personalDetails.profiles && Array.isArray(personalDetails.profiles)) {
|
||||
for (const [index, item] of personalDetails.profiles.entries()) {
|
||||
@@ -633,8 +684,14 @@ const StepperForm = () => {
|
||||
try {
|
||||
if (currentStep === 1) {
|
||||
const payload = await buildRegisterStep1Payload();
|
||||
const res = await registerStep1.mutateAsync(payload);
|
||||
const token = extractAccessToken(res);
|
||||
let res;
|
||||
if (isStep1Update) {
|
||||
res = await axiosInstance.post("/update_personal_details", payload);
|
||||
} else {
|
||||
res = await registerStep1.mutateAsync(payload);
|
||||
}
|
||||
|
||||
const token = extractAccessToken(res.data || res);
|
||||
if (token) {
|
||||
setAccessToken(token);
|
||||
}
|
||||
@@ -725,6 +782,7 @@ const StepperForm = () => {
|
||||
onSubmitStep={handleStepSubmit}
|
||||
errors={errors}
|
||||
onFieldChange={clearFieldErrors}
|
||||
isStep1Update={isStep1Update}
|
||||
/>
|
||||
);
|
||||
case 2:
|
||||
|
||||
Reference in new issue
Block a user