diff --git a/src/component/settings/LinksForm.jsx b/src/component/settings/LinksForm.jsx
new file mode 100644
index 0000000..3cf1295
--- /dev/null
+++ b/src/component/settings/LinksForm.jsx
@@ -0,0 +1,159 @@
+import React, { useRef, useState } from 'react'
+import { Form, Formik } from "formik";
+import * as Yup from "yup";
+import { Modal } from "bootstrap";
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { updateLinks } from "../../services/services";
+import queryKeys from '../../services/queryKeys';
+
+
+const linksValidationSchema = Yup.object().shape({
+ // facebook_url: Yup.string().required("facebook is required"),
+ // twitter_url: Yup.string().required("twitter is required"),
+ // blogger_url: Yup.string().required("blog is required"),
+ // google_url: Yup.string().required("google is required"),
+ // linked_url: Yup.string().required("linkedin is required"),
+ // website_url: Yup.string().required("website is required"),
+})
+
+export default function LinksForm({data}) {
+ const modalRef = useRef(null)
+
+ const queryClient = useQueryClient()
+
+ const [intialData] = useState(data)
+
+ const [infoToUpdate, setInfoToUpdate] = useState({})
+
+ const dismissModal = () => {
+ const body = document.querySelector('body')
+ body.removeAttribute('style')
+ // body.classList.toggle('modal-open')
+
+ const modalBackdrop = document.querySelectorAll('.modal-backdrop')
+ modalBackdrop.forEach(item => {
+ if (item) {
+ item.remove();
+ }
+ })
+
+ const modal = Modal.getInstance(modalRef.current);
+ modal && modal.hide();
+ };
+
+ // UPDATE LINKS MUTATION
+ const updateLinksMutation = useMutation({
+ mutationFn: (fields) => {
+ return updateLinks(fields)
+ },
+ onSuccess: (res) => {
+ if(res.data.resultCode != '0'){
+ throw({message: res?.data?.resultDescription ? res?.data?.resultDescription : 'En error occured'})
+ }
+ },
+ onSettled: ()=>{
+ setTimeout(() => {
+ dismissModal() //CLOSE MODAL HERE
+ queryClient.refetchQueries({
+ queryKey: [...queryKeys.profile_data], // type: 'active', // exact: true,
+ })
+ updateLinksMutation.reset()
+ }, 3000);
+ }
+ })
+
+
+ const handleSetInfoToUpdate = (values, helpers) => {
+ setInfoToUpdate(values)
+ var modal = new Modal(document.getElementById('modal_links'));
+ modal.show();
+ }
+
+ const proceed = () => {
+ let reqData = {
+ token: localStorage.getItem('token'), // USER TOKEN
+ uid: localStorage.getItem('uid'), // USER UID
+ ...infoToUpdate
+ }
+ console.log(reqData)
+ // updateLinksMutation.mutate(reqData)
+ }
+
+ return (
+ <>
+
+ {(props) => {
+ return (
+
+ );
+ }}
+
+
+ {/* Vertical Center Modal */}
+
+
+
+
+ {/*
{'productTitle'}
*/}
+
+
+
+
Are you sure, you want to update? gg
+ {(updateLinksMutation.error || updateLinksMutation.isSuccess) && (
+
+
+ {updateLinksMutation.isSuccess ? 'Updated Successfully' : updateLinksMutation.error.message}
+
+
+ )}
+
+
+
+
+
+
+
+
+ {/* END of Vertical Center Modal */}
+ >
+ )
+}
diff --git a/src/component/settings/ProfileForm.jsx b/src/component/settings/ProfileForm.jsx
new file mode 100644
index 0000000..387332b
--- /dev/null
+++ b/src/component/settings/ProfileForm.jsx
@@ -0,0 +1,163 @@
+import React, { useRef, useState } from 'react'
+import { Form, Formik } from "formik";
+import * as Yup from "yup";
+import { Modal } from "bootstrap";
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { updateProfile } from "../../services/services";
+import queryKeys from '../../services/queryKeys';
+import { useDispatch } from 'react-redux';
+import { updateUserDetails } from '../../store/UserDetails'
+
+const profileValidationSchema = Yup.object().shape({
+ firstname: Yup.string().required("firstname is required"),
+ lastname: Yup.string().required("lastname is required"),
+ email: Yup.string().required("email is required"),
+ account_name: Yup.string().required("account name is required"),
+ phone: Yup.string().required("phone is required"),
+ full_address: Yup.string().required("full address is required"),
+})
+
+export default function ProfileForm({data}) {
+
+ const dispatch = useDispatch()
+
+ const modalRef = useRef(null)
+
+ const queryClient = useQueryClient()
+
+ const [intialData] = useState(data)
+
+ const [infoToUpdate, setInfoToUpdate] = useState({})
+
+ const dismissModal = () => {
+ const body = document.querySelector('body')
+ body.removeAttribute('style')
+ // body.classList.toggle('modal-open')
+
+ const modalBackdrop = document.querySelectorAll('.modal-backdrop')
+ modalBackdrop.forEach(item => {
+ if (item) {
+ item.remove();
+ }
+ })
+
+ const modal = Modal.getInstance(modalRef.current);
+ modal && modal.hide();
+ };
+
+ // UPDATE PROFILE MUTATION
+ const updateProfileMutation = useMutation({
+ mutationFn: (fields) => {
+ return updateProfile(fields)
+ },
+ onSuccess: (res) => {
+ if(res.data.resultCode != '0'){
+ throw({message: res?.data?.resultDescription ? res?.data?.resultDescription : 'En error occured'})
+ }
+ // dispatch(updateUserDetails({ ...res?.data }));
+ },
+ onSettled: ()=>{
+ setTimeout(() => {
+ dismissModal() //CLOSE MODAL HERE
+ queryClient.refetchQueries({
+ queryKey: [...queryKeys.profile_data], // type: 'active', // exact: true,
+ })
+ updateProfileMutation.reset()
+ }, 3000);
+ }
+ })
+
+
+ const handleSetInfoToUpdate = (values, helpers) => {
+ delete values.email
+ delete values.country
+ setInfoToUpdate(values)
+ var modal = new Modal(document.getElementById('modal'));
+ modal.show();
+ }
+
+ const proceed = () => {
+ let reqData = {
+ token: localStorage.getItem('token'), // USER TOKEN
+ uid: localStorage.getItem('uid'), // USER UID
+ ...infoToUpdate
+ }
+ updateProfileMutation.mutate(reqData)
+ }
+
+ return (
+ <>
+
+ {(props) => {
+ return (
+
+ );
+ }}
+
+
+ {/* Vertical Center Modal */}
+
+
+
+
+ {/*
{'productTitle'}
*/}
+
+
+
+
Are you sure, you want to update?
+ {(updateProfileMutation.error || updateProfileMutation.isSuccess) && (
+
+
+ {updateProfileMutation.isSuccess ? 'Updated Successfully' : updateProfileMutation.error.message}
+
+
+ )}
+
+
+
+
+
+
+
+
+ {/* END of Vertical Center Modal */}
+ >
+ )
+}
diff --git a/src/component/settings/Settings.jsx b/src/component/settings/Settings.jsx
index 8cbffb9..c7b4bb7 100644
--- a/src/component/settings/Settings.jsx
+++ b/src/component/settings/Settings.jsx
@@ -1,33 +1,11 @@
-import React, { useEffect, useMemo, useState } from "react";
-import { Form, Formik } from "formik";
-import * as Yup from "yup";
+import React, { useMemo, useState } from "react";
import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS";
import getImage from "../../utils/getImage";
import queryKeys from "../../services/queryKeys";
import { useQuery } from "@tanstack/react-query";
import { profileDetails } from "../../services/services";
-
-
-
-
-const profileValidationSchema = Yup.object().shape({
- // firstname: Yup.string().required("firstname is required"),
- // lastname: Yup.string().required("lastname is required"),
- // email: Yup.string().required("email is required"),
- // account_name: Yup.string().required("account name is required"),
- // phone: Yup.string().required("phone is required"),
- // full_address: Yup.string().required("full address is required"),
-})
-
-const linksValidationSchema = Yup.object().shape({
- // facebook_url: Yup.string().required("facebook is required"),
- // twitter_url: Yup.string().required("twitter is required"),
- // blogger_url: Yup.string().required("blog is required"),
- // google_url: Yup.string().required("google is required"),
- // linked_url: Yup.string().required("linkedin is required"),
- // website_url: Yup.string().required("website is required"),
-})
-
+import ProfileForm from "./ProfileForm";
+import LinksForm from "./LinksForm";
export default function Settings() {
const avtarImage = "avtar/merms-user.png";
@@ -53,15 +31,6 @@ export default function Settings() {
setInitialData({external_links: data?.external_links, personal_data: data?.personal_data})
},[profileInfo])
// console.log('INI', intialData)
-
-
- const updateProfile = (values, helpers) => {
- console.log('Values', values)
- }
-
- const updateLinks = (values, helpers) => {
- console.log('Values', values)
- }
return (
<>
@@ -126,95 +95,7 @@ export default function Settings() {
Edit Your Personal Settings