import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react"; 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 Icons from "../Helpers/Icons"; import Layout from "../Partials/Layout"; import { ChangePasswordTab, FaqTab, LoginActivityTab, NotificationSettingTab, PaymentMathodsTab, PersonalInfoTab, PrivacyPolicyTab, TermsConditionTab, } from "./Tabs"; import RecipientAccountTab from "./Tabs/RecipientAccountTab"; export default function Settings({ faq }) { const { userDetails } = useSelector((state) => state?.userDetails); const [profileImg, setProfileImg] = useState( userDetails?.profile_pic_url ? userDetails.profile_pic_url : profile ); const [coverImg, setCoverImg] = useState(cover); 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]); } }; // 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 apiCall = useMemo(() => new usersService(), []); // 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: 8, name: "terms", title: "Terms and Conditions", iconName: "page-right", }, ]; const [tab, setTab] = useState(tabs[0].name); const tabHandler = (value) => { setTab(value); }; // Recipient Account const [recipientAccount, setRecipientAccount] = useState({ state: false, loader: false, msg: "", data: null, }); const getRecipientAccount = useCallback(async () => { setRecipientAccount((prev) => ({ loader: true })); let res; try { res = await apiCall.getRecipient(); res = res.data; if (res?.internal_return < 0) { setRecipientAccount((prev) => ({ loader: false, msg: "Sorry, something went wrong", })); setTimeout(() => setRecipientAccount((prev) => prev), 5000); return; } return setTimeout(() => { setRecipientAccount((prev) => ({ loader: false, data: res })); }); } catch (error) { setRecipientAccount((prev) => ({ loader: false, msg: "Sorry, an error occurred", })); setTimeout(() => setRecipientAccount((prev) => prev), 5000); return; } }, [apiCall]); useEffect(() => { getRecipientAccount(); }, [reloadCardList]); return ( <>
{/* heading */}

Settings

Personal Information

    {tabs.map(({ name, id, title, iconName }) => (
  • tabHandler(name)} key={id} className={`flex lg:space-x-4 space-x-2 hover:text-purple transition-all duration-300 ease-in-out items-center cursor-pointer lg:mb-11 mb-2 mr-6 lg:mr-0 float-left lg:float-none overflow-hidden ${ tab === name ? "text-purple" : " text-thin-light-gray" }`} >

    {title}

  • ))}
{tab === "personal" && (
)} {tab === "payment" && (
)} {tab === "recipients-account" && (
)} {tab === "notification" && (
)} {tab === "login_activity" && } {tab === "password" && } {tab === "faq" && } {tab === "privacy" && } {tab === "terms" && }
); }