UNPKG

@droppii-org/chat-sdk

Version:

Droppii React Chat SDK

59 lines (58 loc) 1.95 kB
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, }; };