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