@droppii-org/chat-sdk
Version:
Droppii React Chat SDK
59 lines (58 loc) • 1.95 kB
JavaScript
import { CbEvents, } from "@openim/wasm-client-sdk";
import { useCallback, useEffect, useState } from "react";
import { DChatSDK } from "../../constants/sdk";
export const useConversationList = (selectedThreadId) => {
const [conversationList, setConversationList] = useState([]);
const getAllConversationList = useCallback(async () => {
DChatSDK.getAllConversationList()
.then(({ data }) => {
setConversationList(data);
})
.catch((err) => {
console.log("getAllConversationList", err);
});
}, []);
useEffect(() => {
getAllConversationList();
}, [getAllConversationList]);
useEffect(() => {
DChatSDK.on(CbEvents.OnConversationChanged, ({ data }) => {
setConversationList(data);
});
return () => {
DChatSDK.off(CbEvents.OnConversationChanged, () => { });
};
}, []);
useEffect(() => {
if (selectedThreadId) {
DChatSDK.markConversationMessageAsRead(selectedThreadId).catch(({ errCode, errMsg }) => {
console.error("Failed to mark messages as read", errCode, errMsg);
});
}
}, [selectedThreadId]);
return {
conversationList,
getAllConversationList,
};
};
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.log("getOneConversation", err);
});
}, [sourceID, sessionType]);
useEffect(() => {
getConversationDetail();
}, [getConversationDetail]);
return {
conversationDetail,
};
};