@droppii-org/chat-sdk
Version:
Droppii React Chat SDK
79 lines (78 loc) • 3.44 kB
JavaScript
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 });
};