import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react"; import { useSelector } from "react-redux"; 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 apiCall = new usersService(); const { userDetails } = useSelector((state) => state?.userDetails); const [reloadCardList, setReloadCardList] = useState(false); // STATE TO DETERMINE WHEN CARD LIST RELOADS. EG: WHEN USER DELETES A CARD // 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]); // 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: (
{title}