@droppii-org/chat-sdk 0.1.11 → 0.1.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/assets/droppiiFontSelection.json +14521 -14521
- package/dist/assets/sdk/sql-wasm.wasm +0 -0
- package/dist/assets/svg/cannedResponse.tsx +48 -48
- package/dist/assets/svg/document.tsx +37 -37
- package/dist/assets/svg/index.ts +2 -2
- package/dist/components/message/item/SystemLogMessage.d.ts +7 -0
- package/dist/components/message/item/SystemLogMessage.d.ts.map +1 -0
- package/dist/components/message/item/SystemLogMessage.js +17 -0
- package/dist/components/message/item/index.d.ts.map +1 -1
- package/dist/components/message/item/index.js +25 -7
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +6 -2
- package/dist/hooks/message/useSendMessage.d.ts +1 -2
- package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
- package/dist/hooks/message/useSendMessage.js +14 -11
- package/dist/locales/i18n.ts +18 -18
- package/dist/locales/vi/common.json +112 -111
- package/dist/screens/chatBubble/index.d.ts +1 -1
- package/dist/screens/chatBubble/index.d.ts.map +1 -1
- package/dist/screens/chatBubble/index.js +5 -7
- package/dist/styles/global.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/chat.d.ts +0 -1
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/dto.d.ts +1 -0
- package/dist/types/dto.d.ts.map +1 -1
- package/dist/utils/common.d.ts +1 -1
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +18 -4
- package/dist/utils/messageLog.d.ts +6 -0
- package/dist/utils/messageLog.d.ts.map +1 -0
- package/dist/utils/messageLog.js +34 -0
- package/dist/utils/messageTransform.d.ts.map +1 -1
- package/dist/utils/messageTransform.js +13 -7
- package/package.json +11 -10
- package/dist/utils/messageEx.d.ts +0 -5
- package/dist/utils/messageEx.d.ts.map +0 -1
- package/dist/utils/messageEx.js +0 -11
|
File without changes
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
interface ISvgProps {
|
|
2
|
-
size?: number;
|
|
3
|
-
className?: string;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
const CannedResponseIcon = (props: ISvgProps) => (
|
|
7
|
-
<svg
|
|
8
|
-
width={props.size || 18}
|
|
9
|
-
height={props.size || 18}
|
|
10
|
-
viewBox={`${0} ${0} ${props.size || 18} ${props.size || 18}`}
|
|
11
|
-
fill="none"
|
|
12
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
-
className={props?.className}
|
|
14
|
-
>
|
|
15
|
-
<g clipPath="url(#clip0_4070_70030)">
|
|
16
|
-
<path
|
|
17
|
-
fillRule="evenodd"
|
|
18
|
-
clipRule="evenodd"
|
|
19
|
-
d="M6.66732 0.833374C7.12755 0.833374 7.50065 1.20647 7.50065 1.66671L5.00065 18.3334C5.00065 18.7936 4.62755 19.1667 4.16732 19.1667C3.70708 19.1667 3.33398 18.7936 3.33398 18.3334L5.83398 1.66671C5.83398 1.20647 6.20708 0.833374 6.66732 0.833374Z"
|
|
20
|
-
fill="currentColor"
|
|
21
|
-
/>
|
|
22
|
-
<path
|
|
23
|
-
fillRule="evenodd"
|
|
24
|
-
clipRule="evenodd"
|
|
25
|
-
d="M14.9993 0.833374C15.4596 0.833374 15.8327 1.20647 15.8327 1.66671L13.3327 18.3334C13.3327 18.7936 12.9596 19.1667 12.4993 19.1667C12.0391 19.1667 11.666 18.7936 11.666 18.3334L14.166 1.66671C14.166 1.20647 14.5391 0.833374 14.9993 0.833374Z"
|
|
26
|
-
fill="currentColor"
|
|
27
|
-
/>
|
|
28
|
-
<path
|
|
29
|
-
fillRule="evenodd"
|
|
30
|
-
clipRule="evenodd"
|
|
31
|
-
d="M19.1673 5.83333C19.1673 6.29357 18.7942 6.66667 18.334 6.66667H1.66732C1.20708 6.66667 0.833984 6.29357 0.833984 5.83333C0.833984 5.37309 1.20708 5 1.66732 5H18.334C18.7942 5 19.1673 5.3731 19.1673 5.83333Z"
|
|
32
|
-
fill="currentColor"
|
|
33
|
-
/>
|
|
34
|
-
<path
|
|
35
|
-
fillRule="evenodd"
|
|
36
|
-
clipRule="evenodd"
|
|
37
|
-
d="M19.1673 14.1667C19.1673 14.627 18.7942 15 18.334 15H1.66732C1.20708 15 0.833984 14.627 0.833984 14.1667C0.833984 13.7065 1.20708 13.3334 1.66732 13.3334H18.334C18.7942 13.3334 19.1673 13.7065 19.1673 14.1667Z"
|
|
38
|
-
fill="currentColor"
|
|
39
|
-
/>
|
|
40
|
-
</g>
|
|
41
|
-
<defs>
|
|
42
|
-
<clipPath id="clip0_4070_70030">
|
|
43
|
-
<rect width={props.size || 18} height={props.size || 18} fill="white" />
|
|
44
|
-
</clipPath>
|
|
45
|
-
</defs>
|
|
46
|
-
</svg>
|
|
47
|
-
);
|
|
48
|
-
export default CannedResponseIcon;
|
|
1
|
+
interface ISvgProps {
|
|
2
|
+
size?: number;
|
|
3
|
+
className?: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const CannedResponseIcon = (props: ISvgProps) => (
|
|
7
|
+
<svg
|
|
8
|
+
width={props.size || 18}
|
|
9
|
+
height={props.size || 18}
|
|
10
|
+
viewBox={`${0} ${0} ${props.size || 18} ${props.size || 18}`}
|
|
11
|
+
fill="none"
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
className={props?.className}
|
|
14
|
+
>
|
|
15
|
+
<g clipPath="url(#clip0_4070_70030)">
|
|
16
|
+
<path
|
|
17
|
+
fillRule="evenodd"
|
|
18
|
+
clipRule="evenodd"
|
|
19
|
+
d="M6.66732 0.833374C7.12755 0.833374 7.50065 1.20647 7.50065 1.66671L5.00065 18.3334C5.00065 18.7936 4.62755 19.1667 4.16732 19.1667C3.70708 19.1667 3.33398 18.7936 3.33398 18.3334L5.83398 1.66671C5.83398 1.20647 6.20708 0.833374 6.66732 0.833374Z"
|
|
20
|
+
fill="currentColor"
|
|
21
|
+
/>
|
|
22
|
+
<path
|
|
23
|
+
fillRule="evenodd"
|
|
24
|
+
clipRule="evenodd"
|
|
25
|
+
d="M14.9993 0.833374C15.4596 0.833374 15.8327 1.20647 15.8327 1.66671L13.3327 18.3334C13.3327 18.7936 12.9596 19.1667 12.4993 19.1667C12.0391 19.1667 11.666 18.7936 11.666 18.3334L14.166 1.66671C14.166 1.20647 14.5391 0.833374 14.9993 0.833374Z"
|
|
26
|
+
fill="currentColor"
|
|
27
|
+
/>
|
|
28
|
+
<path
|
|
29
|
+
fillRule="evenodd"
|
|
30
|
+
clipRule="evenodd"
|
|
31
|
+
d="M19.1673 5.83333C19.1673 6.29357 18.7942 6.66667 18.334 6.66667H1.66732C1.20708 6.66667 0.833984 6.29357 0.833984 5.83333C0.833984 5.37309 1.20708 5 1.66732 5H18.334C18.7942 5 19.1673 5.3731 19.1673 5.83333Z"
|
|
32
|
+
fill="currentColor"
|
|
33
|
+
/>
|
|
34
|
+
<path
|
|
35
|
+
fillRule="evenodd"
|
|
36
|
+
clipRule="evenodd"
|
|
37
|
+
d="M19.1673 14.1667C19.1673 14.627 18.7942 15 18.334 15H1.66732C1.20708 15 0.833984 14.627 0.833984 14.1667C0.833984 13.7065 1.20708 13.3334 1.66732 13.3334H18.334C18.7942 13.3334 19.1673 13.7065 19.1673 14.1667Z"
|
|
38
|
+
fill="currentColor"
|
|
39
|
+
/>
|
|
40
|
+
</g>
|
|
41
|
+
<defs>
|
|
42
|
+
<clipPath id="clip0_4070_70030">
|
|
43
|
+
<rect width={props.size || 18} height={props.size || 18} fill="white" />
|
|
44
|
+
</clipPath>
|
|
45
|
+
</defs>
|
|
46
|
+
</svg>
|
|
47
|
+
);
|
|
48
|
+
export default CannedResponseIcon;
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
export const documentIcon = (
|
|
2
|
-
<svg
|
|
3
|
-
width="40"
|
|
4
|
-
height="40"
|
|
5
|
-
viewBox="0 0 40 40"
|
|
6
|
-
fill="none"
|
|
7
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
-
>
|
|
9
|
-
<path
|
|
10
|
-
d="M10.1923 5.83301L23.4363 5.83301L34.1656 14.2054V29.8639C34.1656 31.8997 32.5286 34.1663 29.8068 34.1663C27.0849 34.1663 10.1923 34.1663 10.1923 34.1663C7.4704 34.1663 5.8335 31.8997 5.8335 29.8639V10.0305C5.8335 7.99475 7.4704 5.83301 10.1923 5.83301Z"
|
|
11
|
-
fill="#24B0FF"
|
|
12
|
-
></path>
|
|
13
|
-
<path
|
|
14
|
-
d="M10.8335 28.1394V20.833H16.0309V22.4222H12.7026V23.5916H15.3612V25.1708H12.7026V28.1394H10.8335Z"
|
|
15
|
-
fill="#edf6ff"
|
|
16
|
-
></path>
|
|
17
|
-
<path
|
|
18
|
-
d="M19.0073 28.0885V20.833H20.8613V26.5118H24.0146V28.0885L19.0073 28.0885Z"
|
|
19
|
-
fill="#edf6ff"
|
|
20
|
-
></path>
|
|
21
|
-
<path
|
|
22
|
-
d="M16.5918 28.1001V20.833H18.4485V28.1001H16.5918Z"
|
|
23
|
-
fill="#edf6ff"
|
|
24
|
-
></path>
|
|
25
|
-
<path
|
|
26
|
-
d="M24.5737 20.833V28.1393H29.7723V26.5573H26.439L26.4422 25.1708H29.1017V23.5916H26.4422V22.4222H29.7723V20.833H24.5737Z"
|
|
27
|
-
fill="#edf6ff"
|
|
28
|
-
></path>
|
|
29
|
-
<path
|
|
30
|
-
opacity="0.302"
|
|
31
|
-
fillRule="evenodd"
|
|
32
|
-
clipRule="evenodd"
|
|
33
|
-
d="M23.2686 5.83301V14.2281H34.1655L23.2686 5.83301Z"
|
|
34
|
-
fill="#edf6ff"
|
|
35
|
-
></path>
|
|
36
|
-
</svg>
|
|
37
|
-
);
|
|
1
|
+
export const documentIcon = (
|
|
2
|
+
<svg
|
|
3
|
+
width="40"
|
|
4
|
+
height="40"
|
|
5
|
+
viewBox="0 0 40 40"
|
|
6
|
+
fill="none"
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
d="M10.1923 5.83301L23.4363 5.83301L34.1656 14.2054V29.8639C34.1656 31.8997 32.5286 34.1663 29.8068 34.1663C27.0849 34.1663 10.1923 34.1663 10.1923 34.1663C7.4704 34.1663 5.8335 31.8997 5.8335 29.8639V10.0305C5.8335 7.99475 7.4704 5.83301 10.1923 5.83301Z"
|
|
11
|
+
fill="#24B0FF"
|
|
12
|
+
></path>
|
|
13
|
+
<path
|
|
14
|
+
d="M10.8335 28.1394V20.833H16.0309V22.4222H12.7026V23.5916H15.3612V25.1708H12.7026V28.1394H10.8335Z"
|
|
15
|
+
fill="#edf6ff"
|
|
16
|
+
></path>
|
|
17
|
+
<path
|
|
18
|
+
d="M19.0073 28.0885V20.833H20.8613V26.5118H24.0146V28.0885L19.0073 28.0885Z"
|
|
19
|
+
fill="#edf6ff"
|
|
20
|
+
></path>
|
|
21
|
+
<path
|
|
22
|
+
d="M16.5918 28.1001V20.833H18.4485V28.1001H16.5918Z"
|
|
23
|
+
fill="#edf6ff"
|
|
24
|
+
></path>
|
|
25
|
+
<path
|
|
26
|
+
d="M24.5737 20.833V28.1393H29.7723V26.5573H26.439L26.4422 25.1708H29.1017V23.5916H26.4422V22.4222H29.7723V20.833H24.5737Z"
|
|
27
|
+
fill="#edf6ff"
|
|
28
|
+
></path>
|
|
29
|
+
<path
|
|
30
|
+
opacity="0.302"
|
|
31
|
+
fillRule="evenodd"
|
|
32
|
+
clipRule="evenodd"
|
|
33
|
+
d="M23.2686 5.83301V14.2281H34.1655L23.2686 5.83301Z"
|
|
34
|
+
fill="#edf6ff"
|
|
35
|
+
></path>
|
|
36
|
+
</svg>
|
|
37
|
+
);
|
package/dist/assets/svg/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./document";
|
|
2
|
-
export * from "./cannedResponse";
|
|
1
|
+
export * from "./document";
|
|
2
|
+
export * from "./cannedResponse";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MessageItem } from "@openim/wasm-client-sdk";
|
|
2
|
+
interface SystemLogMessageItemProps {
|
|
3
|
+
message: MessageItem;
|
|
4
|
+
}
|
|
5
|
+
declare const SystemLogMessageItem: ({ message }: SystemLogMessageItemProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
export default SystemLogMessageItem;
|
|
7
|
+
//# sourceMappingURL=SystemLogMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemLogMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/SystemLogMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,UAAU,yBAAyB;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,QAAA,MAAM,oBAAoB,GAAI,aAAa,yBAAyB,mDA+BnE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Icon } from "../../icon";
|
|
5
|
+
import { getSystemLogMessageText, getSystemLogMessageTone, } from "../../../utils/messageLog";
|
|
6
|
+
const SystemLogMessageItem = ({ message }) => {
|
|
7
|
+
const text = getSystemLogMessageText(message);
|
|
8
|
+
const tone = getSystemLogMessageTone(message);
|
|
9
|
+
if (!text) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const isAccent = tone === "accent";
|
|
13
|
+
return (_jsx("div", { className: "flex justify-center", children: _jsxs("div", { className: clsx("max-w-[85%] rounded-full px-3 py-1.5 text-center text-sm font-semibold break-words", isAccent
|
|
14
|
+
? "bg-orange-100 text-orange-900 inline-flex items-center gap-2"
|
|
15
|
+
: "bg-white text-gray-800 shadow-sm"), children: [isAccent && (_jsx(Icon, { icon: "shuffle-o", size: 14, className: "shrink-0 text-orange-500" })), _jsx("span", { children: text })] }) }));
|
|
16
|
+
};
|
|
17
|
+
export default SystemLogMessageItem;
|
|
@@ -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,yBAAyB,CAAC;
|
|
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,yBAAyB,CAAC;AA6BjC,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,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;CACrD;AAED,QAAA,MAAM,WAAW,GAAI,2HAQlB,gBAAgB,mDAgSlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -20,7 +20,8 @@ import { useSendMessage, isMediaResendable, } from "../../../hooks/message/useSe
|
|
|
20
20
|
import { Icon } from "../../icon";
|
|
21
21
|
import RevokeMessageItem from "./RevokeMessage";
|
|
22
22
|
import QuoteMessageItem from "./QuoteMessage";
|
|
23
|
-
import
|
|
23
|
+
import SystemLogMessageItem from "./SystemLogMessage";
|
|
24
|
+
import { isSystemLogMessageType } from "../../../utils/messageLog";
|
|
24
25
|
const ICON_COLOR = "#3278f7";
|
|
25
26
|
const MessageItem = ({ message, allMessages, contextMenuOpen, onContextMenuOpenChange, onRevokeMessage, onQuoteMessage, onPressQuoteMessage, }) => {
|
|
26
27
|
var _a, _b, _c, _d, _e;
|
|
@@ -42,6 +43,8 @@ const MessageItem = ({ message, allMessages, contextMenuOpen, onContextMenuOpenC
|
|
|
42
43
|
return _jsx(VideoMessageItem, { message: message });
|
|
43
44
|
case MessageType.UrlTextMessage:
|
|
44
45
|
return _jsx(UrlTextMessageItem, { message: message });
|
|
46
|
+
case MessageType.LogTextMessage:
|
|
47
|
+
return _jsx(SystemLogMessageItem, { message: message });
|
|
45
48
|
case MessageType.RevokeMessage:
|
|
46
49
|
return _jsx(RevokeMessageItem, {});
|
|
47
50
|
default:
|
|
@@ -60,8 +63,10 @@ const MessageItem = ({ message, allMessages, contextMenuOpen, onContextMenuOpenC
|
|
|
60
63
|
};
|
|
61
64
|
}, [userID, message]);
|
|
62
65
|
const contextMenuItems = useMemo(() => {
|
|
63
|
-
if ((message === null || message === void 0 ? void 0 : message.contentType) === MessageType.RevokeMessage
|
|
66
|
+
if ((message === null || message === void 0 ? void 0 : message.contentType) === MessageType.RevokeMessage ||
|
|
67
|
+
isSystemLogMessageType(message === null || message === void 0 ? void 0 : message.contentType)) {
|
|
64
68
|
return [];
|
|
69
|
+
}
|
|
65
70
|
return [
|
|
66
71
|
...(isReplyable
|
|
67
72
|
? [
|
|
@@ -103,7 +108,8 @@ const MessageItem = ({ message, allMessages, contextMenuOpen, onContextMenuOpenC
|
|
|
103
108
|
console.log("Failed to parse conversationData.ex");
|
|
104
109
|
}
|
|
105
110
|
}, [conversationData === null || conversationData === void 0 ? void 0 : conversationData.ex, isCrm, isMine]);
|
|
106
|
-
const isInternalMessage =
|
|
111
|
+
const isInternalMessage = Boolean(message === null || message === void 0 ? void 0 : message.isInternal);
|
|
112
|
+
const isSystemLogMessage = isSystemLogMessageType(message === null || message === void 0 ? void 0 : message.contentType);
|
|
107
113
|
const hasContextMenu = contextMenuItems.length > 0;
|
|
108
114
|
const isLatestMine = ((_a = allMessages.find((m) => m.sendID === userID)) === null || _a === void 0 ? void 0 : _a.clientMsgID) ===
|
|
109
115
|
message.clientMsgID;
|
|
@@ -124,9 +130,21 @@ const MessageItem = ({ message, allMessages, contextMenuOpen, onContextMenuOpenC
|
|
|
124
130
|
!visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType))) {
|
|
125
131
|
return null;
|
|
126
132
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
133
|
+
if (!isCrm && isSystemLogMessage) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
const messageContainerProps = {
|
|
137
|
+
className: "flex flex-col gap-2 py-1 px-3 sm:px-4 min-w-0",
|
|
138
|
+
key: message === null || message === void 0 ? void 0 : message.clientMsgID,
|
|
139
|
+
id: `${MSG_ITEM_PREFIX}${message === null || message === void 0 ? void 0 : message.clientMsgID}`,
|
|
140
|
+
};
|
|
141
|
+
const timeBreakNode = showTimeBreak ? (_jsx("div", { className: "flex justify-center", children: _jsx("span", { className: "text-xs text-gray-600 text-center bg-neutral-100 px-2 py-1 rounded-full", children: formatTimestamp(message.sendTime, {
|
|
142
|
+
dateMonthFormat: "DD MMMM",
|
|
143
|
+
}) }) })) : null;
|
|
144
|
+
if (isSystemLogMessage) {
|
|
145
|
+
return (_jsxs("div", Object.assign({}, messageContainerProps, { children: [timeBreakNode, _jsx(SystemLogMessageItem, { message: message })] })));
|
|
146
|
+
}
|
|
147
|
+
return (_jsxs("div", Object.assign({}, messageContainerProps, { children: [timeBreakNode, _jsx("div", { className: clsx("flex min-w-0", isMine ? "justify-end" : "justify-start"), children: _jsxs("div", { className: clsx("flex flex-1 items-end gap-2 min-w-0", isMine ? "justify-end" : "justify-start"), children: [showSenderInfo && (_jsx("div", { className: "flex items-center justify-center w-[32px] h-[32px]", children: showSenderAvatar && (_jsx(Avatar, { src: message === null || message === void 0 ? void 0 : message.senderFaceUrl, children: ((_c = (_b = message === null || message === void 0 ? void 0 : message.senderNickname) === null || _b === void 0 ? void 0 : _b.charAt) === null || _c === void 0 ? void 0 : _c.call(_b, 0)) || "A" })) })), _jsxs("div", { className: clsx("flex flex-col max-w-[75%] min-w-0", isMine ? "items-end" : "items-start"), children: [showSenderName && showSenderInfo && (_jsx("span", { className: "text-xs font-bold mb-1 px-3 mt-2", children: message === null || message === void 0 ? void 0 : message.senderNickname })), _jsxs("div", { className: clsx("flex flex-col flex-1 w-full", isMine ? "items-end" : "items-start"), children: [(message === null || message === void 0 ? void 0 : message.quoteElem) && (_jsx(QuoteMessageItem, { message: message, isMine: isMine, onPressQuoteMessage: onPressQuoteMessage })), _jsxs("div", { className: "flex items-end gap-1.5", children: [isMine && (_jsx(MessageStatusIndicator, { message: message, isLatest: isLatestMine })), _jsx(Dropdown, { menu: { items: contextMenuItems }, trigger: hasContextMenu ? ["contextMenu"] : [], open: contextMenuOpen, onOpenChange: onContextMenuOpenChange, children: _jsxs("div", { className: clsx("px-3 py-2 rounded-2xl max-w-full min-w-0 break-normal flex flex-col flex-1 text-gray-900 gap-1 w-fit", isMine
|
|
130
148
|
? isInternalMessage
|
|
131
149
|
? "bg-orange-100"
|
|
132
150
|
: "bg-blue-100"
|
|
@@ -139,6 +157,6 @@ const MessageItem = ({ message, allMessages, contextMenuOpen, onContextMenuOpenC
|
|
|
139
157
|
return renderMessageByType(item);
|
|
140
158
|
}), (message === null || message === void 0 ? void 0 : message.textElem) && (_jsx(TextMessageItem, { message: message }))] })) : (renderMessageByType(message)), _jsx("span", { className: clsx("text-xs text-gray-500 text-right"), children: dayjs(message === null || message === void 0 ? void 0 : message.sendTime).format("HH:mm") })] }) })] })] }), isMine && message.status === MessageStatus.Failed && (_jsx("span", { className: "text-red-500 text-xs mt-1", children: isMediaResendable(message) ? (_jsx(Trans, { i18nKey: "message_send_failed", components: {
|
|
141
159
|
bold: (_jsx("strong", { className: "cursor-pointer", onClick: () => resendMessage(message) })),
|
|
142
|
-
} })) : (t("message_send_failed_no_retry")) }))] })] }) })] }
|
|
160
|
+
} })) : (t("message_send_failed_no_retry")) }))] })] }) })] })));
|
|
143
161
|
};
|
|
144
162
|
export default MessageItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,yBAAyB,CAAC;AAUjC,eAAO,MAAM,kBAAkB,eAgB9B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,iBAAiB,MAAM,EACvB,oBAAoB,MAAM;;;;;qBAOL,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CAiPnC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,CAAC;AAClC,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,SACf,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAC7B,aAAa,WAAW,EAAE,EAC1B,SAAS,WAAW,EACpB,WAAW,MAAM,GAAG,MAAM,KACzB,WAAW,GAAG,SAkBhB,CAAC"}
|
|
@@ -4,6 +4,8 @@ import { DChatSDK } from "../../constants/sdk";
|
|
|
4
4
|
import { useLatest, useRequest } from "ahooks";
|
|
5
5
|
import emitter, { emit } from "../../utils/events";
|
|
6
6
|
import isEmpty from "lodash/isEmpty";
|
|
7
|
+
import { useChatContext } from "../../context/ChatContext";
|
|
8
|
+
import { SyncStatus } from "../../types/chat";
|
|
7
9
|
const PAGE_SIZE = 50;
|
|
8
10
|
export const visibleTypeMessage = [
|
|
9
11
|
MessageType.TextMessage,
|
|
@@ -20,8 +22,10 @@ export const visibleTypeMessage = [
|
|
|
20
22
|
MessageType.FaceMessage,
|
|
21
23
|
MessageType.UrlTextMessage,
|
|
22
24
|
MessageType.RevokeMessage,
|
|
25
|
+
MessageType.LogTextMessage,
|
|
23
26
|
];
|
|
24
27
|
export const useMessage = (conversationId, searchClientMsgID) => {
|
|
28
|
+
const { syncStatus } = useChatContext();
|
|
25
29
|
const [loadState, setLoadState] = useState({
|
|
26
30
|
initLoading: true,
|
|
27
31
|
hasMoreOld: true,
|
|
@@ -173,7 +177,7 @@ export const useMessage = (conversationId, searchClientMsgID) => {
|
|
|
173
177
|
};
|
|
174
178
|
}, []);
|
|
175
179
|
useEffect(() => {
|
|
176
|
-
if (!conversationId)
|
|
180
|
+
if (!conversationId || syncStatus !== SyncStatus.Success)
|
|
177
181
|
return;
|
|
178
182
|
if (!isEmpty(searchClientMsgID)) {
|
|
179
183
|
searchMessages();
|
|
@@ -189,7 +193,7 @@ export const useMessage = (conversationId, searchClientMsgID) => {
|
|
|
189
193
|
messageList: [],
|
|
190
194
|
}));
|
|
191
195
|
};
|
|
192
|
-
}, [conversationId, searchClientMsgID]);
|
|
196
|
+
}, [conversationId, searchClientMsgID, syncStatus]);
|
|
193
197
|
return {
|
|
194
198
|
loadState,
|
|
195
199
|
latestLoadState,
|
|
@@ -29,9 +29,8 @@ export declare const useSendMessage: () => {
|
|
|
29
29
|
}) => Promise<void>;
|
|
30
30
|
resendMessage: (failedMessage: MessageItem) => Promise<void>;
|
|
31
31
|
};
|
|
32
|
-
export declare const generateExtendMessageInfo: ({ richText, currentSession,
|
|
32
|
+
export declare const generateExtendMessageInfo: ({ richText, currentSession, }: {
|
|
33
33
|
richText?: string;
|
|
34
34
|
currentSession?: ISessionResponse;
|
|
35
|
-
isInternal?: boolean;
|
|
36
35
|
}) => ExtendMessageInfo;
|
|
37
36
|
//# sourceMappingURL=useSendMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAenD,eAAO,MAAM,iBAAiB,GAAI,SAAS;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,YAE0C,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,gCAanD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,iBAAiB,eAAe,gCAazE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,MAAM,mBAAmB,gCAatE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,gCActE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,eAAO,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAenD,eAAO,MAAM,iBAAiB,GAAI,SAAS;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,YAE0C,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,gCAanD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,iBAAiB,eAAe,gCAazE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,MAAM,mBAAmB,gCAatE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,gCActE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,eAAO,MAAM,cAAc;4EA6KpB;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;KACrB;oFAoCE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;KACrB;mCA5JqB,WAAW;CA6RpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,+BAGvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACnC,KAWM,iBACN,CAAC"}
|
|
@@ -105,7 +105,7 @@ export const useSendMessage = () => {
|
|
|
105
105
|
const setQuotedMessage = useConversationStore((state) => state.setQuotedMessage);
|
|
106
106
|
const { userID: recvID, groupID } = conversationData || {};
|
|
107
107
|
const dispatchMessage = useCallback(async (message) => {
|
|
108
|
-
var _a;
|
|
108
|
+
var _a, _b;
|
|
109
109
|
const desc = generateContentBasedOnMessageType(message.contentType, ((_a = message === null || message === void 0 ? void 0 : message.textElem) === null || _a === void 0 ? void 0 : _a.content) || "") || t("new_message");
|
|
110
110
|
const { data: successMessage } = await DChatSDK.sendMessage({
|
|
111
111
|
recvID: recvID || "",
|
|
@@ -124,7 +124,7 @@ export const useSendMessage = () => {
|
|
|
124
124
|
iOSBadgeCount: true,
|
|
125
125
|
},
|
|
126
126
|
});
|
|
127
|
-
updateOneMessage(Object.assign(Object.assign({}, successMessage), { ex: successMessage.ex || message.ex || "{}" }));
|
|
127
|
+
updateOneMessage(Object.assign(Object.assign({}, successMessage), { ex: successMessage.ex || message.ex || "{}", isInternal: (_b = successMessage.isInternal) !== null && _b !== void 0 ? _b : message.isInternal }));
|
|
128
128
|
messageFileStore.delete(message.clientMsgID);
|
|
129
129
|
}, [recvID, groupID]);
|
|
130
130
|
const sendMessage = useCallback(async (message) => {
|
|
@@ -133,7 +133,8 @@ export const useSendMessage = () => {
|
|
|
133
133
|
try {
|
|
134
134
|
await dispatchMessage(message);
|
|
135
135
|
}
|
|
136
|
-
catch (
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error("sendMessage", error);
|
|
137
138
|
updateOneMessage(Object.assign(Object.assign({}, message), { status: MessageStatus.Failed }));
|
|
138
139
|
}
|
|
139
140
|
}, [dispatchMessage]);
|
|
@@ -160,7 +161,7 @@ export const useSendMessage = () => {
|
|
|
160
161
|
clientMsgID: failedMessage.clientMsgID,
|
|
161
162
|
});
|
|
162
163
|
removeOneMessage(failedMessage.clientMsgID);
|
|
163
|
-
await sendMessage(Object.assign(Object.assign({}, newTextPayload), { ex: failedMessage.ex }));
|
|
164
|
+
await sendMessage(Object.assign(Object.assign({}, newTextPayload), { ex: failedMessage.ex, isInternal: failedMessage.isInternal }));
|
|
164
165
|
return;
|
|
165
166
|
}
|
|
166
167
|
let newPayload = null;
|
|
@@ -239,9 +240,8 @@ export const useSendMessage = () => {
|
|
|
239
240
|
const extendMessageInfo = generateExtendMessageInfo({
|
|
240
241
|
richText,
|
|
241
242
|
currentSession,
|
|
242
|
-
isInternal,
|
|
243
243
|
});
|
|
244
|
-
let messageItem = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}" });
|
|
244
|
+
let messageItem = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal });
|
|
245
245
|
sendMessage(messageItem);
|
|
246
246
|
}, [recvID, groupID, user, sendMessage, quotedMessage, setQuotedMessage]);
|
|
247
247
|
const sendMergeMessage = useCallback(async ({ richText, plainText, files, currentSession, isInternal, }) => {
|
|
@@ -354,9 +354,8 @@ export const useSendMessage = () => {
|
|
|
354
354
|
const extendMessageInfo = generateExtendMessageInfo({
|
|
355
355
|
richText: (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.TextMessage ? richText : "",
|
|
356
356
|
currentSession,
|
|
357
|
-
isInternal,
|
|
358
357
|
});
|
|
359
|
-
const mMessage = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}" });
|
|
358
|
+
const mMessage = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal });
|
|
360
359
|
await sendMessage(mMessage);
|
|
361
360
|
}
|
|
362
361
|
}, [recvID, groupID, sendMessage, quotedMessage, setQuotedMessage]);
|
|
@@ -366,14 +365,18 @@ export const useSendMessage = () => {
|
|
|
366
365
|
resendMessage,
|
|
367
366
|
};
|
|
368
367
|
};
|
|
369
|
-
export const generateExtendMessageInfo = ({ richText, currentSession,
|
|
370
|
-
return
|
|
368
|
+
export const generateExtendMessageInfo = ({ richText, currentSession, }) => {
|
|
369
|
+
return {
|
|
370
|
+
messageInfo: {
|
|
371
371
|
type: "MESSAGE_INFO",
|
|
372
372
|
data: {
|
|
373
373
|
type: "rich_text",
|
|
374
374
|
content: richText || "",
|
|
375
375
|
},
|
|
376
|
-
},
|
|
376
|
+
},
|
|
377
|
+
sessionId: (currentSession === null || currentSession === void 0 ? void 0 : currentSession.id) || "",
|
|
378
|
+
applicationType: useAuthStore.getState().applicationType,
|
|
379
|
+
};
|
|
377
380
|
};
|
|
378
381
|
const createPicBaseInfoFromFile = (file) => new Promise((resolve, reject) => {
|
|
379
382
|
const _URL = window.URL || window.webkitURL;
|
package/dist/locales/i18n.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import i18n from "i18next";
|
|
2
|
-
import { initReactI18next } from "react-i18next";
|
|
3
|
-
import vi from "./vi/common.json";
|
|
4
|
-
|
|
5
|
-
if (!i18n.isInitialized) {
|
|
6
|
-
i18n.use(initReactI18next).init({
|
|
7
|
-
resources: {
|
|
8
|
-
vi: { common: vi },
|
|
9
|
-
},
|
|
10
|
-
lng: "vi", // default
|
|
11
|
-
fallbackLng: "vi",
|
|
12
|
-
interpolation: { escapeValue: false },
|
|
13
|
-
ns: ["common"],
|
|
14
|
-
defaultNS: "common",
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export default i18n;
|
|
1
|
+
import i18n from "i18next";
|
|
2
|
+
import { initReactI18next } from "react-i18next";
|
|
3
|
+
import vi from "./vi/common.json";
|
|
4
|
+
|
|
5
|
+
if (!i18n.isInitialized) {
|
|
6
|
+
i18n.use(initReactI18next).init({
|
|
7
|
+
resources: {
|
|
8
|
+
vi: { common: vi },
|
|
9
|
+
},
|
|
10
|
+
lng: "vi", // default
|
|
11
|
+
fallbackLng: "vi",
|
|
12
|
+
interpolation: { escapeValue: false },
|
|
13
|
+
ns: ["common"],
|
|
14
|
+
defaultNS: "common",
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default i18n;
|