import React, { useEffect, useState } from 'react'; import { FiEdit3, FiTrash2, FiPlus, FiMoreVertical } from 'react-icons/fi'; import AddSignatureModal from './AddSignatureModal'; import api from '../../../config/api'; import { Bounce, toast } from "react-toastify"; import { FaSpinner } from 'react-icons/fa'; interface Signature { id: string; email: string; signatureType: string; lastName: string; firstName: string font: string; initialsBlob: string; initialsStampedBlob: string; initialsHash: string; signatureHash: string; signatureBlob: string; signatureStampedBlob: string; default: boolean; signatureMimeType:string; initialsMimeType:string } const SignatureManager: React.FC = () => { const [loading, setLoading] = useState(false) const [signatures, setSignatures] = useState([]); const [activeDropdown, setActiveDropdown] = useState(null); const [showAddSignature, setShowAddSignature] = useState(false); const [editingSignature, setEditingSignature] = useState(null); const getAllSignatures = async () => { setLoading(true) try { let res = await api.get("/api/user/signatures") console.log("getAllSignatures", res.data) let signatureData = res?.data setSignatures(signatureData) } catch (error) { console.log("getAllSignatures", error) } finally { setLoading(false) } } useEffect(() => { getAllSignatures() }, []) const handleEdit = (id: string) => { console.log('Edit signature:', id); let editSignature = signatures.find((item) => item.id === id); console.log("editSignature", editSignature); if (editSignature) { setEditingSignature(editSignature); setShowAddSignature(true); } setActiveDropdown(null); }; const handleDelete = async (id: string) => { if (!id) return; setLoading(true) try { let res = await api.delete(`/api/user/signatures/${id}`) console.log(res.data) toast.success("Signature Delete Successfull", { position: "top-center", autoClose: 500, hideProgressBar: false, closeOnClick: false, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", transition: Bounce, }); await getAllSignatures(); } catch (error) { console.log("delete signature", error) } finally { setActiveDropdown(null); setLoading(false) } }; const toggleDropdown = (id: string) => { setActiveDropdown(activeDropdown === id ? null : id); }; const handleAddNew = () => { setEditingSignature(null); setShowAddSignature(true); }; const handleModalClose = () => { setShowAddSignature(false); setEditingSignature(null); }; return ( <> {loading ?

Loading...

:
<> {/* Header */}

Signatures

Add or update your name and signature styles.

{/* Table Card */}
{/* Table Header */}

Signature

Initial

Actions

{/* Table Body */}
{signatures.map((signature, index) => (
{/* Signature Column */}
{/* Label */}
Signed by:
{/* Signature Image */}
Signature
{/* Signature ID */}
{signature.signatureHash}
{/* Initial Column */}
{/* Label */}
Initials
{/* Signature Image */}
DS Signature
{/* Initial ID */}
{signature.initialsHash}
{/* Actions Column */}
{/* Dropdown Menu */} {activeDropdown === signature.id && (
)}
))}
{/* Empty State (if no signatures) */} {signatures.length === 0 && (

No signatures yet

Create your first signature to get started.

)}
{/* Click outside to close dropdown */} {activeDropdown && (
setActiveDropdown(null)} /> )} {showAddSignature && ( )}
} ); }; export default SignatureManager;