Compare commits

...

1 Commits

Author SHA1 Message Date
Chief Bube 53db8df5c7 Added Picture path 2023-11-06 05:07:45 -08:00
6 changed files with 439 additions and 350 deletions
+72 -15
View File
@@ -33,7 +33,7 @@ export default function FamilyManageTabs({
loading: false, loading: false,
data: null, data: null,
}; };
console.log('accountDetails',accountDetails)
// State for family details, tasks, waitlist, and pending // State for family details, tasks, waitlist, and pending
const [details, setDetails] = useState({ const [details, setDetails] = useState({
familyDetails: { ...initialDetailState }, familyDetails: { ...initialDetailState },
@@ -66,8 +66,10 @@ export default function FamilyManageTabs({
// State for family task popout // State for family task popout
const [familyTaskPopout, setFamilyTaskPopout] = useState(false); const [familyTaskPopout, setFamilyTaskPopout] = useState(false);
let [uploadStatus, setUploadStatus] = useState({loading: false, status: false, message:''}) // HOLDS STATE FOR UPLOAD PROFILE PICTURE STATUS
// State for profile image // State for profile image
const [profileImg, setProfileImg] = useState(profile); const [profileImg, setProfileImg] = useState(accountDetails.image ? accountDetails.image : profile);
// Ref for profile image input // Ref for profile image input
const profileImgInput = useRef(null); const profileImgInput = useRef(null);
@@ -90,24 +92,78 @@ export default function FamilyManageTabs({
* Checks if the selected file exceeds the maximum file size limit and displays an alert if it does. * Checks if the selected file exceeds the maximum file size limit and displays an alert if it does.
* If the file is within the size limit, it reads the file using the FileReader API and sets the profile image state with the result. * If the file is within the size limit, it reads the file using the FileReader API and sets the profile image state with the result.
*/ */
const profileImgChangeHandler = (e) => { // const profileImgChangeHandler = (e) => {
const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB // const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
const file = e.target.files[0]; // const file = e.target.files[0];
if (file && file.size > MAX_FILE_SIZE) { // if (file && file.size > MAX_FILE_SIZE) {
alert("File size exceeds the limit."); // alert("File size exceeds the limit.");
return; // return;
// }
// if (file) {
// const imgReader = new FileReader();
// imgReader.onload = () => {
// const imageDataUrl = imgReader.result;
// // Set the profile image
// setProfileImg(imageDataUrl);
// };
// imgReader.readAsDataURL(file);
// }
// };
const profileImgChangeHandler = (e) => {
setUploadStatus({loading: false, status: false, message:''})
let acceptedFormat = ["jpeg", "jpg", "png", "bmp", "gif"] // ARRAY OF SUPPORTED FORMATS
let uploadedFile = e.target.files[0] //UPLOADED FILE
const fileFormat = uploadedFile?.type?.split("/")[1]?.toLowerCase();
if(!acceptedFormat.includes(fileFormat)){ //CHECKING FOR CORRECT UPLOAD FORMAT
const msg = `Please select ${acceptedFormat.slice(0, -1).join(', ')} or ${acceptedFormat.slice(-1)}`;
setUploadStatus({loading: false, status: false, message:msg})
return setTimeout(()=>{
profileImgInput.current.value = '' // clear the input
setUploadStatus({loading: false, status: false, message:''})
},5000)
} }
if (file) { if(uploadedFile.size > 5*1048576){ // CHECKING FOR CORRECT FILE SIZE
const imgReader = new FileReader(); setUploadStatus({loading: false, status: false, message:'File must not exceed 5MB'})
imgReader.onload = () => { return setTimeout(()=>{
const imageDataUrl = imgReader.result; profileImgInput.current.value = '' // clear the input
setUploadStatus({loading: false, status: false, message:''})
},5000)
}
// Set the profile image if (e.target.value !== "") {
setProfileImg(imageDataUrl); const imgReader = new FileReader();
imgReader.onload = (event) => {
let reqData = { // PAYLOAD FOR API CALL
family_uid: accountDetails?.family_uid,
file_name: uploadedFile?.name,
file_size: uploadedFile?.size,
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
file_data: event?.target?.result,
msg_type: 'FILE',
action: 111305
}
setUploadStatus({loading: true, status: false, message:'Loading...'})
apiCall.sendFiles(reqData).then(res=>{
if(res.status != 200 || res.data.internal_return < 0){
return setUploadStatus({loading: false, status: false, message: 'Something went wrong, try again'})
}
setUploadStatus({loading: false, status: true, message: 'Uploaded successfully'})
setProfileImg(event.target.result);
}).catch(error=>{
setUploadStatus({loading: false, status: false, message: 'Network error, try again'})
}).finally(()=>{
setTimeout(()=>{
setUploadStatus({loading: false, status: false, message: ''})
},5000)
})
}; };
imgReader.readAsDataURL(file); imgReader.readAsDataURL(e.target.files[0]);
} }
}; };
@@ -298,6 +354,7 @@ export default function FamilyManageTabs({
profileImgChangeHandler={profileImgChangeHandler} profileImgChangeHandler={profileImgChangeHandler}
browseProfileImg={browseProfileImg} browseProfileImg={browseProfileImg}
accountDetails={accountDetails} accountDetails={accountDetails}
uploadStatus={uploadStatus}
/> />
<div className="mt-4 flex flex-col justify-center items-center gap-2 lg:flex-row lg:justify-center lg:items-center xl:flex-col xl:justify-center xl:items-center 2xl:flex-row 2xl:justify-center 2xl:items-center 2xl:gap-[2px]"> <div className="mt-4 flex flex-col justify-center items-center gap-2 lg:flex-row lg:justify-center lg:items-center xl:flex-col xl:justify-center xl:items-center 2xl:flex-row 2xl:justify-center 2xl:items-center 2xl:gap-[2px]">
<button <button
+8 -4
View File
@@ -19,6 +19,7 @@ export default function FamilyTable({
familyList, familyList,
loader, loader,
popUpHandler, popUpHandler,
imageServer
}) { }) {
const navigate = useNavigate(); const navigate = useNavigate();
const [currentPage, setCurrentPage] = useState(0); const [currentPage, setCurrentPage] = useState(0);
@@ -54,11 +55,13 @@ export default function FamilyTable({
banner, banner,
enable_traking, enable_traking,
profile_picture, profile_picture,
imageServer
}) => { }) => {
// Check for valid dates // Check for valid dates
const addedDate = added ? added.split(" ")[0] : "N/A"; const addedDate = added ? added.split(" ")[0] : "N/A";
const loginDate = last_login ? formatDateString(last_login) : "N/A"; const loginDate = last_login ? formatDateString(last_login) : "N/A";
const key = `family-${family_uid}`; // Assign a unique key const key = `family-${family_uid}`; // Assign a unique key
const image = localStorage.getItem('session_token') ? `${imageServer}${localStorage.getItem('session_token')}/family/${family_uid}` : ''
const trackingStatus = const trackingStatus =
enable_traking === "0" enable_traking === "0"
@@ -76,8 +79,8 @@ export default function FamilyTable({
<div className="flex space-x-2 items-center w-full"> <div className="flex space-x-2 items-center w-full">
<div className="w-[60px] h-[60px] rounded-full overflow-hidden flex justify-center items-center flex-[0.1]"> <div className="w-[60px] h-[60px] rounded-full overflow-hidden flex justify-center items-center flex-[0.1]">
<img <img
src={profile_picture} // src={profile_picture}
// src={profile_picture || localImgLoad(`images/icons/${banner}`)} src={image || profile_picture || localImgLoad(`images/icons/${banner}`)}
alt={`Avatar of ${firstname} ${lastname}`} alt={`Avatar of ${firstname} ${lastname}`}
className="w-full h-full" className="w-full h-full"
/> />
@@ -133,6 +136,7 @@ export default function FamilyTable({
task_count, task_count,
family_uid, family_uid,
banner, banner,
image
}) })
} }
type="button" type="button"
@@ -182,7 +186,7 @@ export default function FamilyTable({
</thead> </thead>
<tbody className="h-full"> <tbody className="h-full">
{currentFamilyList?.map((familyMember, index) => { {currentFamilyList?.map((familyMember, index) => {
return <FamilyRow key={index} {...familyMember} />; return <FamilyRow key={index} {...familyMember} imageServer={imageServer} />;
})} })}
</tbody> </tbody>
</table> </table>
@@ -213,7 +217,7 @@ export default function FamilyTable({
<PaginatedList <PaginatedList
onClick={handlePagination} onClick={handlePagination}
prev={currentPage == 0} prev={currentPage == 0}
next={currentPage + itemsPerPage >= familyList.length} next={currentPage + itemsPerPage >= familyList?.length}
data={familyList} data={familyList}
start={indexOfFirstItem} start={indexOfFirstItem}
stop={indexOfLastItem} stop={indexOfLastItem}
+5 -1
View File
@@ -36,6 +36,10 @@ export default function Header({ logoutModalHandler, sidebarHandler }) {
const { notifications } = useSelector((state) => state?.notifications); // NOTIFICATION STORE const { notifications } = useSelector((state) => state?.notifications); // NOTIFICATION STORE
const { walletDetails } = useSelector((state) => state?.walletDetails); // WALLET STORE const { walletDetails } = useSelector((state) => state?.walletDetails); // WALLET STORE
const image = `${userDetails.session_image_server}${localStorage.getItem(
"session_token"
)}/profile/${userDetails.uid}`;
const handlerBalance = () => { const handlerBalance = () => {
setbalanceValue.toggle(); setbalanceValue.toggle();
if (notificationDropdown) { if (notificationDropdown) {
@@ -91,7 +95,7 @@ export default function Header({ logoutModalHandler, sidebarHandler }) {
// User Profile // User Profile
let { firstname, lastname, email, profile_pic_url } = userDetails; let { firstname, lastname, email, profile_pic_url } = userDetails;
let userEmail = email?.split("@")[0]; let userEmail = email?.split("@")[0];
const userProfileImage = profile_pic_url || DEFAULT_PROFILE_IMAGE; const userProfileImage = image || DEFAULT_PROFILE_IMAGE;
return ( return (
<> <>
+143 -16
View File
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useRef, useState } from "react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
@@ -6,6 +6,9 @@ import Icons from "../../Helpers/Icons";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import LoadingSpinner from "../../Spinners/LoadingSpinner"; import LoadingSpinner from "../../Spinners/LoadingSpinner";
import cover from "../../../assets/images/profile-info-cover.png";
import profileImage from "../../../assets/images/profile.jpg";
import { Form, Formik } from "formik"; import { Form, Formik } from "formik";
import * as Yup from "yup"; import * as Yup from "yup";
@@ -43,18 +46,13 @@ export default function PersonalInfoTab({
frstNmeHndlr, frstNmeHndlr,
lstNmeHndlr, lstNmeHndlr,
dscrphn, dscrphn,
profileImg,
coverImg,
profileImgInput,
browseProfileImg,
profileImgChangHandler,
coverImgInput,
browseCoverImg,
coverImgChangHandler,
uploadStatus
}) { }) {
let { userDetails } = useSelector((state) => state.userDetails); let { userDetails } = useSelector((state) => state.userDetails);
const image = `${userDetails.session_image_server}${localStorage.getItem(
"session_token"
)}/profile/${userDetails.uid}`;
const apiCall = new usersService(); const apiCall = new usersService();
let navigate = useNavigate(); let navigate = useNavigate();
@@ -85,6 +83,123 @@ export default function PersonalInfoTab({
status: false, status: false,
}); });
const [profileImg, setProfileImg] = useState(
userDetails?.session_image_server ? image : profileImage
);
let [uploadStatus, setUploadStatus] = useState({
loading: false,
status: false,
message: "",
}); // HOLDS STATE FOR UPLOAD PROFILE PICTURE STATUS
const [coverImg, setCoverImg] = useState(cover);
// profile img
const profileImgInput = useRef(null);
const browseProfileImg = () => {
profileImgInput.current.click();
};
const profileImgChangHandler = (e) => {
setUploadStatus({ loading: false, status: false, message: "" });
const acceptedFormat = ["jpeg", "jpg", "png", "bmp", "gif"]; // ARRAY OF SUPPORTED FORMATS
const uploadedFile = e.target.files[0]; //UPLOADED FILE
const fileFormat = uploadedFile?.type?.split("/")[1]?.toLowerCase();
const MAX_FILE_SIZE = 5 * 1048576; // 5MB
if (!acceptedFormat.includes(fileFormat)) {
//CHECKING FOR CORRECT UPLOAD FORMAT
const msg = `Please select ${acceptedFormat
.slice(0, -1)
.join(", ")} or ${acceptedFormat.slice(-1)}`;
setUploadStatus({ loading: false, status: false, message: msg });
return setTimeout(() => {
profileImgInput.current.value = ""; // clear the input
setUploadStatus({ loading: false, status: false, message: "" });
}, 5000);
}
if (uploadedFile.size > MAX_FILE_SIZE) {
// CHECKING FOR CORRECT FILE SIZE
setUploadStatus({
loading: false,
status: false,
message: "File must not exceed 5MB",
});
return setTimeout(() => {
profileImgInput.current.value = ""; // clear the input
setUploadStatus({ loading: false, status: false, message: "" });
}, 5000);
}
if (e.target.value !== "") {
const imgReader = new FileReader();
imgReader.onload = (event) => {
let reqData = {
// PAYLOAD FOR API CALL
file_name: uploadedFile?.name,
file_size: uploadedFile?.size,
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
file_data: event?.target?.result,
msg_type: "FILE",
action: 11300,
};
setUploadStatus({
loading: true,
status: false,
message: "Loading...",
});
apiCall
.sendFiles(reqData)
.then((res) => {
if (res.status != 200 || res.data.internal_return < 0) {
return setUploadStatus({
loading: false,
status: false,
message: "Something went wrong, try again",
});
}
setUploadStatus({
loading: false,
status: true,
message: "Uploaded successfully",
});
setProfileImg(event.target.result);
})
.catch((error) => {
setUploadStatus({
loading: false,
status: false,
message: "Network error, try again",
});
})
.finally(() => {
setTimeout(() => {
setUploadStatus({ loading: false, status: false, message: "" });
}, 5000);
});
};
imgReader.readAsDataURL(uploadedFile);
}
};
// cover img
const coverImgInput = useRef(null);
const browseCoverImg = () => {
coverImgInput.current.click();
};
const coverImgChangHandler = (e) => {
if (e.target.value !== "") {
const imgReader = new FileReader();
imgReader.onload = (event) => {
setCoverImg(event.target.result);
};
imgReader.readAsDataURL(e.target.files[0]);
}
};
const handleUpdateUser = (values, helpers) => { const handleUpdateUser = (values, helpers) => {
setRequestState({ message: "", loading: true, status: false }); setRequestState({ message: "", loading: true, status: false });
@@ -374,7 +489,7 @@ export default function PersonalInfoTab({
<p className="text-base text-thin-light-gray mb-5"> <p className="text-base text-thin-light-gray mb-5">
Profile of at least Size Profile of at least Size
<span className="ml-1 text-dark-gray dark:text-white"> <span className="ml-1 text-dark-gray dark:text-white">
300x300 200x200
</span> </span>
. Gifs work too. . Gifs work too.
<span className="ml-1 text-dark-gray dark:text-white"> <span className="ml-1 text-dark-gray dark:text-white">
@@ -383,11 +498,11 @@ export default function PersonalInfoTab({
. .
</p> </p>
<div className="flex justify-center"> <div className="flex justify-center">
<div className="w-full relative"> <div className="w-[200px] h-[200px] relative">
<img <img
src={profileImg} src={profileImg}
alt="profile" alt="profile"
className="sm:w-[198px] sm:h-[198px] w-[120px] h-[120px] rounded-full overflow-hidden object-contain object-center" className="sm:w-[198px] sm:h-[198px] w-full h-full rounded-full overflow-hidden object-cover object-center"
/> />
<input <input
ref={profileImgInput} ref={profileImgInput}
@@ -397,7 +512,7 @@ export default function PersonalInfoTab({
/> />
<div <div
onClick={browseProfileImg} onClick={browseProfileImg}
className="w-[32px] h-[32px] absolute bottom-7 sm:right-10 right-[105px] hover:bg-pink bg-dark-gray rounded-full cursor-pointer" className="w-[32px] h-[32px] absolute bottom-4 right-4 hover:bg-pink bg-dark-gray rounded-full cursor-pointer"
> >
<svg <svg
width="32" width="32"
@@ -418,8 +533,20 @@ export default function PersonalInfoTab({
</div> </div>
</div> </div>
</div> </div>
{uploadStatus.message && !uploadStatus.loading && <p className={`text-center ${uploadStatus.status ? 'text-green-500':'text-red-500'}`}>{uploadStatus.message}</p>} {uploadStatus.message && !uploadStatus.loading && (
{uploadStatus.loading && <p className="text-center">{uploadStatus.message}</p>} <p
className={`text-center ${
uploadStatus.status
? "text-green-500"
: "text-red-500"
}`}
>
{uploadStatus.message}
</p>
)}
{uploadStatus.loading && (
<p className="text-center">{uploadStatus.message}</p>
)}
</div> </div>
</div> </div>
{/* } */} {/* } */}
+115 -194
View File
@@ -6,8 +6,6 @@ import React, {
useState, useState,
} from "react"; } from "react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import cover from "../../assets/images/profile-info-cover.png";
import profile from "../../assets/images/profile.jpg";
import usersService from "../../services/UsersService"; import usersService from "../../services/UsersService";
import Icons from "../Helpers/Icons"; import Icons from "../Helpers/Icons";
import Layout from "../Partials/Layout"; import Layout from "../Partials/Layout";
@@ -26,161 +24,8 @@ import RecipientAccountTab from "./Tabs/RecipientAccountTab";
export default function Settings({ faq }) { export default function Settings({ faq }) {
const apiCall = new usersService(); const apiCall = new usersService();
const { userDetails } = useSelector((state) => state?.userDetails); const { userDetails } = useSelector((state) => state?.userDetails);
const [profileImg, setProfileImg] = useState(
userDetails?.profile_pic_url ? userDetails.profile_pic_url : profile
);
let [uploadStatus, setUploadStatus] = useState({loading: false, status: false, message:''}) // HOLDS STATE FOR UPLOAD PROFILE PICTURE STATUS
const [coverImg, setCoverImg] = useState(cover);
const [reloadCardList, setReloadCardList] = useState(false); // STATE TO DETERMINE WHEN CARD LIST RELOADS. EG: WHEN USER DELETES A CARD const [reloadCardList, setReloadCardList] = useState(false); // STATE TO DETERMINE WHEN CARD LIST RELOADS. EG: WHEN USER DELETES A CARD
// profile img
const profileImgInput = useRef(null);
const browseProfileImg = () => {
profileImgInput.current.click();
};
const profileImgChangHandler = (e) => {
// if (e.target.value !== "") {
// const imgReader = new FileReader();
// imgReader.onload = (event) => {
// setProfileImg(event.target.result);
// };
// imgReader.readAsDataURL(e.target.files[0]);
// }
setUploadStatus({loading: false, status: false, message:''})
let acceptedFormat = ["jpeg", "jpg", "png", "bmp", "gif"] // ARRAY OF SUPPORTED FORMATS
let uploadedFile = e.target.files[0] //UPLOADED FILE
if(!acceptedFormat.includes(uploadedFile?.type?.split("/")[1]?.toLowerCase())){ //CHECKING FOR CORRECT UPLOAD FORMAT
let msg = 'Please select '
for(let i=0; i<=acceptedFormat.length-1; i++){
if(i == acceptedFormat.length-1){
msg+=`or ${acceptedFormat[i]}`
}else{
msg+=`${acceptedFormat[i]}, `
}
}
setUploadStatus({loading: false, status: false, message:msg})
return setTimeout(()=>{
profileImgInput.current.value = '' // clear the input
setUploadStatus({loading: false, status: false, message:''})
},5000)
}
if(uploadedFile.size > 5*1048576){ // CHECKING FOR CORRECT FILE SIZE
setUploadStatus({loading: false, status: false, message:'File must not exceed 5MB'})
return setTimeout(()=>{
profileImgInput.current.value = '' // clear the input
setUploadStatus({loading: false, status: false, message:''})
},5000)
}
if (e.target.value !== "") {
const imgReader = new FileReader();
imgReader.onload = (event) => {
let reqData = { // PAYLOAD FOR API CALL
file_name: uploadedFile?.name,
file_size: uploadedFile?.size,
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
file_data: event?.target?.result,
msg_type: 'FILE',
action: 'WRENCHBOARD_PICTURE_PROFILE',
// action: 11307
}
setUploadStatus({loading: true, status: false, message:'Loading...'})
apiCall.sendFiles(reqData).then(res=>{
if(res.status != 200 || res.data.internal_return < 0){
return setUploadStatus({loading: false, status: false, message: 'Something went wrong, try again'})
}
setUploadStatus({loading: false, status: true, message: 'Uploaded successfully'})
setProfileImg(event.target.result);
}).catch(error=>{
setUploadStatus({loading: false, status: false, message: 'Network error, try again'})
}).finally(()=>{
setTimeout(()=>{
setUploadStatus({loading: false, status: false, message: ''})
},5000)
})
};
imgReader.readAsDataURL(e.target.files[0]);
}
};
// cover img
const coverImgInput = useRef(null);
const browseCoverImg = () => {
coverImgInput.current.click();
};
const coverImgChangHandler = (e) => {
if (e.target.value !== "") {
const imgReader = new FileReader();
imgReader.onload = (event) => {
setCoverImg(event.target.result);
};
imgReader.readAsDataURL(e.target.files[0]);
}
};
// Tabs Handling
const tabs = [
{
id: 1,
name: "personal",
title: "Edit Profile",
iconName: "people-hover",
},
{
id: 2,
name: "payment",
title: "Payment Cards",
iconName: "bank-card",
},
{
id: 3,
name: "recipients-account",
title: "Recipients Account",
iconName: "bank-card",
},
{
id: 4,
name: "notification",
title: "Notification Setting",
iconName: "notification-setting",
},
{
id: 5,
name: "login_activity",
title: "Login Activity",
iconName: "login-activity",
},
{
id: 6,
name: "password",
title: "Change Password",
iconName: "password-hover",
},
{
id: 7,
name: "faq",
title: "FAQ",
iconName: "block-question",
},
{
id: 8,
name: "privacy",
title: "Privacy Policy",
iconName: "page-right",
},
{
id: 9,
name: "terms",
title: "Terms and Conditions",
iconName: "page-right",
},
];
const [tab, setTab] = useState(tabs[0].name);
const tabHandler = (value) => {
setTab(value);
};
// Recipient Account // Recipient Account
const [recipientAccount, setRecipientAccount] = useState({ const [recipientAccount, setRecipientAccount] = useState({
state: false, state: false,
@@ -223,6 +68,120 @@ export default function Settings({ faq }) {
getRecipientAccount(); getRecipientAccount();
}, [reloadCardList]); }, [reloadCardList]);
// Tabs Handling
const tabs = [
{
id: 1,
name: "personal",
title: "Edit Profile",
iconName: "people-hover",
},
{
id: 2,
name: "payment",
title: "Payment Cards",
iconName: "bank-card",
},
{
id: 3,
name: "recipients_account",
title: "Recipients Account",
iconName: "bank-card",
},
{
id: 4,
name: "notification",
title: "Notification Setting",
iconName: "notification-setting",
},
{
id: 5,
name: "login_activity",
title: "Login Activity",
iconName: "login-activity",
},
{
id: 6,
name: "password",
title: "Change Password",
iconName: "password-hover",
},
{
id: 7,
name: "faq",
title: "FAQ",
iconName: "block-question",
},
{
id: 8,
name: "privacy",
title: "Privacy Policy",
iconName: "page-right",
},
{
id: 9,
name: "terms",
title: "Terms and Conditions",
iconName: "page-right",
},
];
const [tab, setTab] = useState(() => {
// Retrieve the active tab from local storage or use the default tab
return localStorage.getItem("activeTab") || tabs[0].name;
});
const tabHandler = (value) => {
setTab(value);
};
// Update local storage when the tab changes
useEffect(() => {
localStorage.setItem("activeTab", tab);
}, [tab]);
const tabComponents = {
personal: (
<div className="tab-item">
<PersonalInfoTab />
</div>
),
payment: (
<div className="tab-item">
<PaymentMathodsTab />
</div>
),
recipients_account: (
<div className="tab-item">
<RecipientAccountTab
recipientAccount={recipientAccount}
setRecipientAccount={setRecipientAccount}
setReloadCardList={setReloadCardList}
/>
</div>
),
notification: (
<div className="tab-item">
<NotificationSettingTab />
</div>
),
login_activity: <LoginActivityTab />,
password: <ChangePasswordTab />,
faq: <FaqTab datas={faq} />,
privacy: <PrivacyPolicyTab />,
terms: <TermsConditionTab />,
};
// Default tab component
const defaultTabComponent = (
<div className="tab-item">
<PersonalInfoTab />
</div>
);
// Selected tab component based on the current 'tab'
const selectedTabComponent = tabComponents[tab] || defaultTabComponent;
return ( return (
<> <>
<Layout> <Layout>
@@ -263,45 +222,7 @@ export default function Settings({ faq }) {
</div> </div>
<div className="w-[1px] bg-[#E3E4FE] dark:bg-[#a7a9b533] mr-10"></div> <div className="w-[1px] bg-[#E3E4FE] dark:bg-[#a7a9b533] mr-10"></div>
<div className="content-body-items flex-1"> <div className="content-body-items flex-1">
{tab === "personal" && ( {selectedTabComponent}
<div className="tab-item">
<PersonalInfoTab
profileImg={profileImg}
coverImg={coverImg}
browseProfileImg={browseProfileImg}
profileImgInput={profileImgInput}
profileImgChangHandler={profileImgChangHandler}
coverImgChangHandler={coverImgChangHandler}
browseCoverImg={browseCoverImg}
coverImgInput={coverImgInput}
uploadStatus={uploadStatus}
/>
</div>
)}
{tab === "payment" && (
<div className="tab-item">
<PaymentMathodsTab />
</div>
)}
{tab === "recipients-account" && (
<div className="tab-item">
<RecipientAccountTab
recipientAccount={recipientAccount}
setRecipientAccount={setRecipientAccount}
setReloadCardList={setReloadCardList}
/>
</div>
)}
{tab === "notification" && (
<div className="tab-item">
<NotificationSettingTab />
</div>
)}
{tab === "login_activity" && <LoginActivityTab />}
{tab === "password" && <ChangePasswordTab />}
{tab === "faq" && <FaqTab datas={faq} />}
{tab === "privacy" && <PrivacyPolicyTab />}
{tab === "terms" && <TermsConditionTab />}
</div> </div>
</div> </div>
</div> </div>
+4 -28
View File
@@ -19,16 +19,6 @@ class usersService {
return this.postAuxEnd("/completesignuplink", reqData); return this.postAuxEnd("/completesignuplink", reqData);
} }
assignJobTask(reqData) {
var postData = {
uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"),
...reqData,
};
return this.postAuxEnd("/assigntask", postData);
}
// FUNCTION TO GET USER CURRENT TASK DUE TIME // FUNCTION TO GET USER CURRENT TASK DUE TIME
getHomeDate() { getHomeDate() {
var postData = { var postData = {
@@ -45,7 +35,7 @@ class usersService {
uid: localStorage.getItem("uid"), uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"), member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"), sessionid: localStorage.getItem("session_token"),
action: 11202, action: 11202
}; };
return this.postAuxEnd("/recentactivities", postData); return this.postAuxEnd("/recentactivities", postData);
} }
@@ -378,7 +368,7 @@ class usersService {
page: 0, page: 0,
offset: 0, offset: 0,
limit: 100, limit: 100,
allstatus: 0, allstatus: 0
}; };
return this.postAuxEnd("/activetaskslist", postData); return this.postAuxEnd("/activetaskslist", postData);
} }
@@ -608,7 +598,7 @@ class usersService {
sessionid: localStorage.getItem("session_token"), sessionid: localStorage.getItem("session_token"),
page: 0, page: 0,
limit: 100, limit: 100,
...reqdata, ...reqdata
}; };
return this.postAuxEnd("/familyupdate", postData); return this.postAuxEnd("/familyupdate", postData);
} }
@@ -792,17 +782,6 @@ class usersService {
return this.postAuxEnd("/pendingjobsendtome", postData); return this.postAuxEnd("/pendingjobsendtome", postData);
} }
pendingCancelOffer(reqData) {
var postData = {
uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"),
action: 13043,
...reqData,
};
return this.postAuxEnd("/pendingjobcancel", postData);
}
// FUNCTION TO GET ACTIVE JOB MESSAGE LIST // FUNCTION TO GET ACTIVE JOB MESSAGE LIST
activeJobMesList(reqData) { activeJobMesList(reqData) {
var postData = { var postData = {
@@ -1099,6 +1078,7 @@ class usersService {
return this.postAuxEnd("/blogdata", postData); return this.postAuxEnd("/blogdata", postData);
} }
// FUNCTION TO CANCEL TASK OR SEND REMINDER BY FAMILY MEMBER // FUNCTION TO CANCEL TASK OR SEND REMINDER BY FAMILY MEMBER
suggestStatus(reqData) { suggestStatus(reqData) {
var postData = { var postData = {
@@ -1257,10 +1237,6 @@ class usersService {
console.log(response); console.log(response);
// res = response; // res = response;
console.log("~~~~~~~ Toks2 POST ~~~~~~~~"); console.log("~~~~~~~ Toks2 POST ~~~~~~~~");
if (response.data.internal_return == "-9999") {
localStorage.clear();
window.location.href = `/login?sessionExpired=true`;
}
return response; return response;
}) })
.catch((error) => { .catch((error) => {