import { t } from "@/utils"; import { RiUserForbidLine } from "react-icons/ri"; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { getBlockedUsers, unBlockUserApi } from "@/utils/api"; import { useState } from "react"; import { Skeleton } from "@/components/ui/skeleton"; import { toast } from "sonner"; import { useSelector } from "react-redux"; import { getIsRtl } from "@/redux/reducer/languageSlice"; import CustomImage from "@/components/Common/CustomImage"; const BlockedUsersMenu = ({ setSelectedChatDetails }) => { const [blockedUsersList, setBlockedUsersList] = useState([]); const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); const [unblockingId, setUnblockingId] = useState(""); const isRTL = useSelector(getIsRtl); const fetchBlockedUsers = async () => { setLoading(true); try { const response = await getBlockedUsers.blockedUsers(); const { data } = response; setBlockedUsersList(data?.data); } catch (error) { console.error("Error fetching blocked users:", error); } finally { setLoading(false); } }; const handleOpenChange = (isOpen) => { setOpen(isOpen); if (isOpen) { fetchBlockedUsers(); } }; const handleUnblock = async (userId, e) => { e.stopPropagation(); setUnblockingId(userId); try { const response = await unBlockUserApi.unBlockUser({ blocked_user_id: userId, }); if (response?.data?.error === false) { // Refresh the blocked users list after successful unblock setBlockedUsersList((prevList) => prevList.filter((user) => user.id !== userId) ); setSelectedChatDetails((prev) => ({ ...prev, user_blocked: false, })); toast.success(response?.data?.message); } } catch (error) { console.error("Error unblocking user:", error); } finally { setUnblockingId(""); } }; const BlockedUserSkeleton = () => (
); return ( {t("blockedUsers")}
{loading ? ( Array.from({ length: 2 }, (_, index) => ( )) ) : blockedUsersList && blockedUsersList.length > 0 ? ( {blockedUsersList.map((user) => (
{user.name}
))}
) : (
{t("noBlockedUsers")}
)}
); }; export default BlockedUsersMenu;