UNPKG

@droppii-org/chat-sdk

Version:

Droppii React Chat SDK

79 lines (78 loc) 3.44 kB
import { useCallback, useEffect, useMemo, useState } from "react"; import { ViewType, CbEvents, } from "@openim/wasm-client-sdk"; import { DChatSDK } from "../../constants/sdk"; export const useMessage = (conversationId) => { const [dataMessages, setDataMessages] = useState(null); const groupMessages = useMemo(() => { var _a; if (!dataMessages || !(dataMessages === null || dataMessages === void 0 ? void 0 : dataMessages.messageList)) return []; const mGroupMessages = (_a = dataMessages === null || dataMessages === void 0 ? void 0 : dataMessages.messageList) === null || _a === void 0 ? void 0 : _a.reduce((acc, cur) => { const extendMessageInfo = JSON.parse((cur === null || cur === void 0 ? void 0 : cur.ex) || "{}"); if (extendMessageInfo === null || extendMessageInfo === void 0 ? void 0 : extendMessageInfo.groupMessageID) { const findGroupMessageIndex = acc.findIndex((item) => item.groupMessageID === (extendMessageInfo === null || extendMessageInfo === void 0 ? void 0 : extendMessageInfo.groupMessageID)); if (findGroupMessageIndex === -1) { acc.push({ groupMessageID: extendMessageInfo.groupMessageID, messages: [cur], sendID: cur.sendID, sendTime: cur.sendTime, }); } else { acc[findGroupMessageIndex].messages.push(cur); } } return acc; }, []); return mGroupMessages; }, [dataMessages]); console.log("groupMessages", groupMessages); const getAdvancedHistoryMessageList = useCallback(() => { if (!conversationId) return; DChatSDK.getSelfUserInfo() .then(({ data }) => { console.log("getSelfUserInfo", data); }) .catch(({ errCode, errMsg }) => { console.log("getSelfUserInfo", errCode, errMsg); }); DChatSDK.getAdvancedHistoryMessageList({ conversationID: conversationId, count: 1000, startClientMsgID: "", viewType: ViewType.History, }) .then(({ data }) => { setDataMessages(data); }) .catch((err) => { console.log("getAdvancedHistoryMessageList", err); }); }, [conversationId]); const onRecvNewMessages = useCallback((data) => { getAdvancedHistoryMessageList(); }, [getAdvancedHistoryMessageList]); const markConversationMessageAsRead = useCallback((message) => { if (!conversationId) return; DChatSDK.markConversationMessageAsRead(conversationId) .then() .catch(({ errCode, errMsg }) => { // Failed call }); }, [conversationId]); useEffect(() => { getAdvancedHistoryMessageList(); }, [getAdvancedHistoryMessageList]); useEffect(() => { DChatSDK.on(CbEvents.OnRecvNewMessages, ({ data }) => { onRecvNewMessages(data); }); return () => { DChatSDK.off(CbEvents.OnRecvNewMessages, () => { }); }; }, [onRecvNewMessages]); return Object.assign(Object.assign({}, dataMessages), { groupMessages, refetch: getAdvancedHistoryMessageList, markConversationMessageAsRead }); };