import { CloseOutlined } from "@ant-design/icons"; import { BlackUserItem } from "@openim/wasm-client-sdk/lib/types/entity"; import { Button, Empty, Modal } from "antd"; import { t } from "i18next"; import { forwardRef, ForwardRefRenderFunction, memo, useState } from "react"; import OIMAvatar from "@/components/OIMAvatar"; import { useContactStore } from "@/store/contact"; import { feedbackToast } from "@/utils/common"; import { OverlayVisibleHandle, useOverlayVisible } from "../../hooks/useOverlayVisible"; import { IMSDK } from "../MainContentWrap"; const BlackList: ForwardRefRenderFunction = (_, ref) => { const { isOverlayOpen, closeOverlay } = useOverlayVisible(ref); return ( ); }; export default memo(forwardRef(BlackList)); const BlackItem = ({ black, removeBlack, }: { black: BlackUserItem; removeBlack: (userID: string) => Promise; }) => { const [loading, setLoading] = useState(false); const tryRemove = async () => { setLoading(true); await removeBlack(black.userID); setLoading(false); }; return (
{black.nickname}
); }; export const BlackListContent = ({ closeOverlay }: { closeOverlay?: () => void }) => { const blackList = useContactStore((state) => state.blackList); const removeBlack = async (userID: string) => { try { await IMSDK.removeBlack(userID); } catch (error) { feedbackToast({ error }); } }; return (
{t("placeholder.blackList")}
{blackList.length > 0 ? ( blackList.map((black) => ( )) ) : ( )}
); };