diff --git a/src/components/chat/CallHistory.jsx b/src/components/chat/CallHistory.jsx new file mode 100644 index 0000000..b1493bc --- /dev/null +++ b/src/components/chat/CallHistory.jsx @@ -0,0 +1,254 @@ +import React, { useState, useEffect } from 'react'; +import { ArrowLeft, MoreVertical, Loader2 } from 'lucide-react'; +import { getCallHistoryMyList, getCallHistoryOthersList, deleteCallHistory } from '../../services/chatApi'; +import toast from 'react-hot-toast'; +import { useQuery } from '@tanstack/react-query'; +import { getHeaderDetails } from '../../api/preview.api'; + +const CallHistory = ({ onBack }) => { + const [activeTab, setActiveTab] = useState('me'); + const [historyList, setHistoryList] = useState([]); + const [loading, setLoading] = useState(true); + + const { data: headerData } = useQuery({ + queryKey: ["headerDetails"], + queryFn: getHeaderDetails, + }); + // console.log("headerData", headerData); + + const myDetails = headerData?.myDetails || {}; + + const [isEditMode, setIsEditMode] = useState(false); + const [selectedIds, setSelectedIds] = useState([]); + const [showMenu, setShowMenu] = useState(false); + const [isDeleting, setIsDeleting] = useState(false); + + const fetchData = async () => { + setLoading(true); + setHistoryList([]); + try { + let res; + if (activeTab === 'me') { + res = await getCallHistoryMyList(); + } else { + res = await getCallHistoryOthersList(); + } + + const data = res?.call_list || res?.data || res || []; + setHistoryList(Array.isArray(data) ? data : []); + } catch (error) { + toast.error("Failed to load call history."); + setHistoryList([]); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchData(); + setIsEditMode(false); + setSelectedIds([]); + }, [activeTab]); + + const toggleSelection = (id) => { + if (selectedIds.includes(id)) { + setSelectedIds(selectedIds.filter(item => item !== id)); + } else { + setSelectedIds([...selectedIds, id]); + } + }; + + const handleDelete = async () => { + if (selectedIds.length === 0) return; + + setIsDeleting(true); + try { + const res = await deleteCallHistory(selectedIds); + toast.success(res?.message || "History deleted successfully."); + setIsEditMode(false); + setSelectedIds([]); + fetchData(); + } catch (error) { + toast.error("Failed to delete history."); + } finally { + setIsDeleting(false); + } + }; + + const getSkeletons = () => { + return Array(5).fill(0).map((_, idx) => ( +
+ ID : {myDetails.member_id || myDetails.profile_id || "N/A"} +
+No Call History found
++ Mobile No : {item.mobile} +
+ ) : ( ++ ID : {item.member_id || "N/A"} +
+ )} +