/* eslint-disable @typescript-eslint/no-explicit-any */ import React from "react"; import { deleteCustomerBankDetails, getCustomerBankDetails, updateCustomerBankDetails, } from "../../../../Api/CustomerApi"; import BottomSheetModal from "../../../Modal/BottomSheetModal"; import HourGlassLoader from "../../../Loader/Loader"; import Swal from "sweetalert2"; import { toast } from "react-toastify"; import AddBankDetailsModal from "../../../Modal/AddBankDetailsModal"; interface ComponentPropsType { modal?: boolean; toggleBankChange?: () => void; addBankDetails: any; setAddBankDetails: any; listOpen: boolean; } const BankList = ({ modal = true, toggleBankChange, addBankDetails, setAddBankDetails, listOpen }: ComponentPropsType) => { const [isLoading, setIsLoading] = React.useState(false); const [addresses, setAddresses] = React.useState([]); const [selectedAddress, setSelectedAddress] = React.useState({}); // const [addAddress, setAddAddress] = React.useState(false); const [activeMenu, setActiveMenu] = React.useState(null); const dropdownRef = React.useRef(null); const toggle = () => { if (addBankDetails) { setSelectedAddress({}); fetchAddresses(); setActiveMenu(null); } setAddBankDetails(!addBankDetails); }; React.useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setActiveMenu(null); } }; document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); async function fetchAddresses(id?: any) { try { setIsLoading(true); const response: any = await getCustomerBankDetails({ id: id || "", order_by: "is_primary", }); if (id) return response?.data?.[0] || {}; else setAddresses(response?.data || []); } catch (error) { console.error(error, "ERROR------>>>"); } finally { setIsLoading(false); } } React.useEffect(() => { fetchAddresses(); }, []); const makePrimary = async (id: number) => { try { setIsLoading(true); await updateCustomerBankDetails(id, { is_primary: true }); fetchAddresses(); } catch (error) { console.error(error, "ERROR"); } finally { setIsLoading(false); } }; const handleDelete = async (id: number) => { // Prevent form submission const event = window.event; if (event) { event.preventDefault(); event.stopPropagation(); } Swal.fire({ title: "Are you sure?", text: "Do you really want to delete this address?", icon: "warning", showCancelButton: true, confirmButtonText: "Yes, delete it!", cancelButtonText: "Cancel", reverseButtons: true, customClass: { confirmButton: "delybell-primary px-4", cancelButton: "delybell-dark", }, }).then(async (response) => { if (response?.isConfirmed) { await deleteCustomerBankDetails(id); await fetchAddresses(); toast.success("Pickup address deleted successfully!"); } }); }; const handleEdit = async (id: number) => { try { setIsLoading(true); const response: any = await fetchAddresses(id); setSelectedAddress(response || {}); } catch (error) { console.error(error, "ERROR------>>>"); } finally { setIsLoading(false); toggle(); } }; return ( <> {isLoading && } {addBankDetails ? ( ) : ( <> {modal && ( <>

Pickup Address

Add New
)} {listOpen ? (
{addresses?.map((address: any) => (
makePrimary(address.id)} /> {address.isPrimary ? ( Primary ) : ( "" )}
{ e.preventDefault(); setActiveMenu((prev) => prev === address.id ? null : address.id ); }} > {activeMenu === address.id && (
)}
{address.accountNumber ? ( <> Ac. No: {address.accountNumber}
) : ( "" )} {address.bankName ? ( <> {address.bankName}
) : ( "" )} {`${address?.branchName || ""}, ${ address?.country_details?.name || "" }`}
))}
) : ''} {modal && (
)} )} ); }; export default BankList;