UNPKG

@droppii-org/chat-sdk

Version:

Droppii React Chat SDK

55 lines (54 loc) 2.33 kB
import { DChatSDK } from "../../constants/sdk"; import dayjs from "dayjs"; import { v4 as uuidv4 } from "uuid"; import { useChatContext } from "../../context/ChatContext"; import { useCallback } from "react"; export const createTextMessage = async (text) => { let textMessage = await DChatSDK.createTextMessage(text, new Date().getTime().toString()) .then(({ data }) => { return data; }) .catch(({ errCode, errMsg }) => { console.error("createTextMessage", errCode, errMsg); return null; }); return textMessage; }; export const useSendMessage = (props) => { const { recvID, groupID } = props; const { user } = useChatContext(); const sendTextMessage = useCallback(async (text, lastMessage) => { let result = false; if (!recvID && !groupID) return false; const textMessage = await createTextMessage(text); if (!textMessage) return false; const extendMessageInfo = generateExtendMessageInfo((user === null || user === void 0 ? void 0 : user.userID) || "", lastMessage); try { await DChatSDK.sendMessage({ recvID, groupID, message: Object.assign(Object.assign({}, textMessage), { ex: JSON.stringify(extendMessageInfo) || "{}" }), }, new Date().getTime().toString()); result = true; } catch (error) { console.log("sendMessage", error); } return result; }, [recvID, groupID, user]); return { sendTextMessage, }; }; export const generateExtendMessageInfo = (currentUserID, lastMessage) => { const diffSendTime = dayjs().diff(lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.sendTime, "minutes"); const isSameSender = (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.sendID) === currentUserID; const lastMessageExtendMessageInfo = JSON.parse((lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.ex) || "{}"); return { groupMessageID: isSameSender && diffSendTime <= 5 ? (lastMessageExtendMessageInfo === null || lastMessageExtendMessageInfo === void 0 ? void 0 : lastMessageExtendMessageInfo.groupMessageID) || uuidv4() : uuidv4(), }; };