UNPKG

@droppii-org/chat-sdk

Version:

Droppii React Chat SDK

70 lines (69 loc) 3.76 kB
import { SessionType } from "@openim/wasm-client-sdk"; import { useCallback, useEffect, useMemo, useState } from "react"; import { DChatSDK } from "../../constants/sdk"; import useUsersInfoStore from "../../store/usersInfo"; import { extractUserIdsFromConversations } from "../user/useUsersInfo"; import { useChatContext } from "../../context/ChatContext"; export const markConversationMessageAsRead = (conversationId) => { if (!conversationId) return; DChatSDK.markConversationMessageAsRead(conversationId) .then() .catch(({ errCode, errMsg }) => { console.error("markConversationMessageAsRead", errCode, errMsg); }); }; export const useConversationDetail = ({ sourceID, sessionType, }) => { const [conversationDetail, setConversationDetail] = useState(null); const getConversationDetail = useCallback(async () => { DChatSDK.getOneConversation({ sourceID, sessionType, }) .then(({ data }) => { setConversationDetail(data); }) .catch((err) => { console.error("getOneConversation", err); }); }, [sourceID, sessionType]); useEffect(() => { getConversationDetail(); }, [getConversationDetail]); return { conversationDetail, }; }; export const useConversationDisplayData = (conversation) => { const { user } = useChatContext(); const usersInfo = useUsersInfoStore((state) => state.usersInfo); const userInfo = useMemo(() => { var _a; if (!conversation) return null; const userId = (_a = extractUserIdsFromConversations([conversation])) === null || _a === void 0 ? void 0 : _a[0]; return usersInfo === null || usersInfo === void 0 ? void 0 : usersInfo[userId]; }, [conversation, usersInfo]); const conversationDisplayData = useMemo(() => { var _a, _b, _c, _d, _e; if (!conversation) return null; const exConversationInfo = JSON.parse(conversation.ex || "{}"); const sessionInfo = exConversationInfo === null || exConversationInfo === void 0 ? void 0 : exConversationInfo.sessionInfo; const isSupportGroup = conversation.conversationType === SessionType.Group && !!(sessionInfo === null || sessionInfo === void 0 ? void 0 : sessionInfo.data); const isOwnerGroup = isSupportGroup && ((_a = sessionInfo === null || sessionInfo === void 0 ? void 0 : sessionInfo.data) === null || _a === void 0 ? void 0 : _a.ownerId) === (user === null || user === void 0 ? void 0 : user.userID); const exUserInfo = JSON.parse((userInfo === null || userInfo === void 0 ? void 0 : userInfo.ex) || "{}"); return { avatar: isSupportGroup && !isOwnerGroup ? userInfo === null || userInfo === void 0 ? void 0 : userInfo.faceURL : conversation === null || conversation === void 0 ? void 0 : conversation.faceURL, displayName: isSupportGroup && !isOwnerGroup ? `${userInfo === null || userInfo === void 0 ? void 0 : userInfo.nickname}${((_c = (_b = exUserInfo === null || exUserInfo === void 0 ? void 0 : exUserInfo.userInfo) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.username) ? ` (${(_e = (_d = exUserInfo === null || exUserInfo === void 0 ? void 0 : exUserInfo.userInfo) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.username})` : ""}` : (conversation === null || conversation === void 0 ? void 0 : conversation.showName) || "", }; }, [conversation, userInfo]); return Object.assign({}, conversationDisplayData); };