@droppii-org/chat-sdk 0.4.12 → 0.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/message/item/MessageBubble.d.ts.map +1 -1
- package/dist/components/message/item/MessageBubble.js +4 -4
- package/dist/components/message/item/index.d.ts.map +1 -1
- package/dist/components/message/item/index.js +9 -3
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/MessageBubble.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AA6CD,QAAA,MAAM,aAAa,GAAI,uIAYpB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/MessageBubble.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AA6CD,QAAA,MAAM,aAAa,GAAI,uIAYpB,kBAAkB,4CAsEpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -22,9 +22,9 @@ const MessageBubble = ({ isMine, content, senderName, showSenderName, showTip =
|
|
|
22
22
|
: isMine
|
|
23
23
|
? "bg-chat-bubble-mine/10"
|
|
24
24
|
: "bg-chat-bubble-neutral/10"));
|
|
25
|
-
return (_jsxs("div", { className: "relative flex min-w-0 max-w-full items-end", "data-testid": "message-bubble", "data-cp-name": "MessageBubble", onClick: () => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
return (_jsxs("div", { className: "flex min-w-0 max-w-full flex-col gap-1", children: [showSenderName && senderName && (_jsx("span", { "data-testid": "message-sender-name", className: "px-1 text-[12px] font-medium leading-[160%] tracking-[0.12px] text-gray-400", children: senderName })), _jsxs("div", { className: "relative flex min-w-0 max-w-full items-end", "data-testid": "message-bubble", "data-cp-name": "MessageBubble", onClick: () => {
|
|
26
|
+
if (timeLabel)
|
|
27
|
+
onToggleTimeReveal === null || onToggleTimeReveal === void 0 ? void 0 : onToggleTimeReveal();
|
|
28
|
+
}, children: [!isMine && showTail && (_jsx(MessageBubbleTail, { isMine: isMine, isInternal: isInternal })), _jsx("div", { className: bubbleClass, id: id, children: _jsx("div", { className: clsx("flex flex-col gap-2", !isTransparent && "px-1"), children: content }) }), isMine && showTail && (_jsx(MessageBubbleTail, { isMine: isMine, isInternal: isInternal })), showTimeLabel && (_jsx("span", { "data-testid": "message-time-label", className: clsx("absolute -bottom-2 flex h-[19px] w-[30px] items-center justify-center rounded-full bg-white text-[10px] text-gray-400 shadow-sm", isMine ? "right-1" : "left-1"), children: timeLabel }))] })] }));
|
|
29
29
|
};
|
|
30
30
|
export default MessageBubble;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,IAAI,eAAe,EAG/B,MAAM,8BAA8B,CAAC;AAyCtC,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,IAAI,eAAe,EAG/B,MAAM,8BAA8B,CAAC;AAyCtC,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAkCD,QAAA,MAAM,WAAW,GAAI,uOAelB,gBAAgB,mDA+UlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -25,9 +25,14 @@ import { isGroupNotificationMessageType, isSessionEventMessage, isSystemLogMessa
|
|
|
25
25
|
import { buildMessageToolboxMenuItems, getCopyableMessageText, isCopyableMessageType, isPinnableMessageType, MessageToolboxActionKey, MESSAGE_TOOLBOX_OVERLAY_CLASSNAME, useMessageToolboxVisibility, } from "../../../components/message/toolbox";
|
|
26
26
|
const MESSAGE_AVATAR_SIZE = 24;
|
|
27
27
|
const DIVIDER_GAP_MINUTES = 30;
|
|
28
|
+
const DIVIDER_GAP_MS = DIVIDER_GAP_MINUTES * 60 * 1000;
|
|
28
29
|
const GROUPING_GAP_MINUTES = 5;
|
|
29
30
|
const GROUPING_GAP_MS = GROUPING_GAP_MINUTES * 60 * 1000;
|
|
30
31
|
const isOrderMessage = (message) => { var _a; return ((_a = message === null || message === void 0 ? void 0 : message.customElem) === null || _a === void 0 ? void 0 : _a.extension) === CustomMessageType.Order; };
|
|
32
|
+
// Shared by showTimeBreak (day divider) and prevSameUser/nextSameUser (group
|
|
33
|
+
// break) so both features agree on the same calendar-day boundary — a group
|
|
34
|
+
// must never span a divider, regardless of how small the time gap is.
|
|
35
|
+
const isSameCalendarDay = (sendTimeA, sendTimeB) => dayjs(sendTimeA).isSame(sendTimeB, "day");
|
|
31
36
|
const MessageAvatar = ({ avatarUrl, senderNickname, }) => {
|
|
32
37
|
var _a;
|
|
33
38
|
return (_jsx(Avatar, { size: MESSAGE_AVATAR_SIZE, src: avatarUrl, className: "shrink-0 self-end", "data-cp-name": "MessageAvatar", children: ((_a = senderNickname === null || senderNickname === void 0 ? void 0 : senderNickname.charAt) === null || _a === void 0 ? void 0 : _a.call(senderNickname, 0)) || "A" }));
|
|
@@ -154,6 +159,7 @@ const MessageItem = ({ message, allMessages, isGroupChat = false, forceHideTip =
|
|
|
154
159
|
!!previousMessage &&
|
|
155
160
|
!isOrderMessage(previousMessage) &&
|
|
156
161
|
previousMessage.sendID === (message === null || message === void 0 ? void 0 : message.sendID) &&
|
|
162
|
+
isSameCalendarDay(message.sendTime, previousMessage.sendTime) &&
|
|
157
163
|
Math.abs(dayjs(message.sendTime).diff(previousMessage.sendTime, "millisecond")) <=
|
|
158
164
|
GROUPING_GAP_MS;
|
|
159
165
|
const nextSameUser = !isOrder &&
|
|
@@ -161,12 +167,12 @@ const MessageItem = ({ message, allMessages, isGroupChat = false, forceHideTip =
|
|
|
161
167
|
!!nextMessage &&
|
|
162
168
|
!isOrderMessage(nextMessage) &&
|
|
163
169
|
nextMessage.sendID === (message === null || message === void 0 ? void 0 : message.sendID) &&
|
|
170
|
+
isSameCalendarDay(nextMessage.sendTime, message.sendTime) &&
|
|
164
171
|
Math.abs(dayjs(nextMessage.sendTime).diff(message.sendTime, "millisecond")) <=
|
|
165
172
|
GROUPING_GAP_MS;
|
|
166
173
|
const showTimeBreak = !previousMessage ||
|
|
167
|
-
!
|
|
168
|
-
Math.abs(dayjs(message.sendTime).diff(previousMessage.sendTime, "
|
|
169
|
-
DIVIDER_GAP_MINUTES;
|
|
174
|
+
!isSameCalendarDay(message.sendTime, previousMessage.sendTime) ||
|
|
175
|
+
Math.abs(dayjs(message.sendTime).diff(previousMessage.sendTime, "millisecond")) > DIVIDER_GAP_MS;
|
|
170
176
|
const showPeerInfo = isGroupChat || showSenderInfo;
|
|
171
177
|
const showAvatar = showPeerInfo && !isMine && !nextSameUser;
|
|
172
178
|
const showSenderName = showPeerInfo && !isMine && !prevSameUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,iBAAiB,EAGlB,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,WAAW,0CAOtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,gFAM1B,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,iBAAiB,EAGlB,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,WAAW,0CAOtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,gFAM1B,iBAAiB,4CA0GnB,CAAC"}
|
|
@@ -73,6 +73,8 @@ export const ChatProvider = ({ children, config, renderCustomMessage, onNavigate
|
|
|
73
73
|
wsAddress: config.wsAddr,
|
|
74
74
|
applicationType: config.applicationType,
|
|
75
75
|
isCrm: config.isCrm,
|
|
76
|
+
onTokenRefresh: config.onTokenRefresh,
|
|
77
|
+
onAuthError: config.onAuthError,
|
|
76
78
|
});
|
|
77
79
|
setUser({
|
|
78
80
|
userID: config.userID,
|