UNPKG

@droppii-org/chat-sdk

Version:

Droppii React Chat SDK

31 lines (30 loc) 1.81 kB
"use client"; import { jsx as _jsx } from "react/jsx-runtime"; import { MessageType } from "@openim/wasm-client-sdk"; import { useAuthStore } from "../../.."; import { sanitizeHtml } from "../../../utils/common"; const TextMessageItem = (props) => { var _a, _b, _c; const { message } = props; const isCrm = useAuthStore((state) => state.isCrm); let extendMessageInfo = null; try { extendMessageInfo = JSON.parse((message === null || message === void 0 ? void 0 : message.ex) || "{}"); } catch (error) { extendMessageInfo = {}; console.error("Failed to parse extendMessageInfo", error); } if ((message === null || message === void 0 ? void 0 : message.contentType) === MessageType.CustomMessage && !isCrm) { return null; } if (Object.keys(extendMessageInfo).length > 0 && (extendMessageInfo === null || extendMessageInfo === void 0 ? void 0 : extendMessageInfo.messageInfo)) { const htmlContent = ((_b = (_a = extendMessageInfo === null || extendMessageInfo === void 0 ? void 0 : extendMessageInfo.messageInfo) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.content) || ""; // 🔒 Sanitize HTML to prevent XSS attacks const sanitizedContent = sanitizeHtml(htmlContent); return (_jsx("div", { className: "!text-sm sm:text-base break-words whitespace-pre-line flex-1", style: { wordBreak: "break-word", overflowWrap: "anywhere" }, dangerouslySetInnerHTML: { __html: sanitizedContent } })); } return (_jsx("span", { className: "!text-sm sm:text-base whitespace-pre-wrap", children: ((_c = message === null || message === void 0 ? void 0 : message.textElem) === null || _c === void 0 ? void 0 : _c.content) || "" })); }; export default TextMessageItem;