@droppii-org/chat-sdk 0.1.75 → 0.1.78

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.
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
+ );
@@ -1,2 +1,2 @@
1
- export * from "./document";
1
+ export * from "./document";
2
2
  export * from "./canned-response";
@@ -1 +1 @@
1
- {"version":3,"file":"useChatToken.d.ts","sourceRoot":"","sources":["../../../src/hooks/init/useChatToken.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,oFAS5B,CAAC"}
1
+ {"version":3,"file":"useChatToken.d.ts","sourceRoot":"","sources":["../../../src/hooks/init/useChatToken.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,oFAW5B,CAAC"}
@@ -2,10 +2,13 @@ import { useMutation } from "@tanstack/react-query";
2
2
  import { QUERY_KEYS } from "../../services/query";
3
3
  import { apiInstance } from "../../services/api";
4
4
  import { ENDPOINTS } from "../../services/routes";
5
+ import { DChatPlatform } from "../../index";
5
6
  export const useRefetchChatToken = () => useMutation({
6
7
  mutationKey: [QUERY_KEYS.REFRESH_CHAT_TOKEN],
7
8
  mutationFn: async () => {
8
- const res = await apiInstance.post(ENDPOINTS.chatService.getChatToken);
9
+ const res = await apiInstance.post(ENDPOINTS.chatService.getChatToken, {
10
+ platform: DChatPlatform.Web,
11
+ });
9
12
  return res.data;
10
13
  },
11
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAgB,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AAkBpF,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,2BAA2B,GACtC,QAAQ,eAAe,gCAcxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,SAAS,oBAAoB,gCAOtE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,iDAAiD,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,eAAe,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,qBAAqB;sHA0RvD;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,aAAa,CAAC,EAAE,oBAAoB,CAAC;KACtC,KAAG,OAAO,CAAC,OAAO,CAAC;iCA3CT,oBAAoB,gBACf;QAAE,cAAc,CAAC,EAAE,gBAAgB,CAAA;KAAE,KAClD,OAAO,CAAC,OAAO,CAAC;mCAnHG,WAAW;CAyVpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,kDAKvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,sBA8BA,CAAC"}
1
+ {"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAgB,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AAmBpF,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,2BAA2B,GACtC,QAAQ,eAAe,gCAcxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,SAAS,oBAAoB,gCAOtE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,iDAAiD,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,eAAe,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,qBAAqB;sHA6RvD;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,aAAa,CAAC,EAAE,oBAAoB,CAAC;KACtC,KAAG,OAAO,CAAC,OAAO,CAAC;iCA3CT,oBAAoB,gBACf;QAAE,cAAc,CAAC,EAAE,gBAAgB,CAAA;KAAE,KAClD,OAAO,CAAC,OAAO,CAAC;mCAnHG,WAAW;CAyVpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,kDAKvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,sBA8BA,CAAC"}
@@ -16,6 +16,7 @@ import { extractLinkUrls } from "../../utils/link";
16
16
  import { SessionStatus, SessionTag } from "../../types/chat";
17
17
  import { updateSession } from "../../hooks/session/useUpdateSession";
18
18
  import { invalidateSessionQueries } from "../../utils/queryHelpers";
19
+ import { resolveConversationBotId } from "../../utils/conversation";
19
20
  const messageFileStore = new Map();
20
21
  const MEDIA_CONTENT_TYPES = new Set([
21
22
  MessageType.PictureMessage,
@@ -129,6 +130,7 @@ export const useSendMessage = (options) => {
129
130
  const conversationData = useConversationStore((state) => state.conversationData);
130
131
  const quotedMessage = useConversationStore((state) => state.quotedMessage);
131
132
  const setQuotedMessage = useConversationStore((state) => state.setQuotedMessage);
133
+ const userId = useAuthStore((state) => state.userID);
132
134
  const { userID: recvID, groupID } = conversationData || {};
133
135
  const scrollEvent = (_a = options === null || options === void 0 ? void 0 : options.scrollEvent) !== null && _a !== void 0 ? _a : "CHAT_LIST_SCROLL_TO_BOTTOM";
134
136
  const syncSessionAfterPublicMessage = useCallback(async (currentSession) => {
@@ -179,6 +181,9 @@ export const useSendMessage = (options) => {
179
181
  icon: pushMeta.icon,
180
182
  conversationId: pushMeta.conversationId,
181
183
  title: pushMeta.title,
184
+ userId: userId,
185
+ groupId: groupID,
186
+ botId: conversationData ? resolveConversationBotId(conversationData) : '',
182
187
  desc,
183
188
  }),
184
189
  iOSPushSound: "default",
@@ -1,19 +1,19 @@
1
- import i18n from "i18next";
2
- import { initReactI18next } from "react-i18next";
3
- import vi from "./vi/common.json";
4
- import viConversationInbox from "./vi/conversation-inbox.json";
5
-
6
- if (!i18n.isInitialized) {
7
- i18n.use(initReactI18next).init({
8
- resources: {
9
- vi: { common: vi, "conversation-inbox": viConversationInbox },
10
- },
11
- lng: "vi",
12
- fallbackLng: "vi",
13
- interpolation: { escapeValue: false },
14
- ns: ["common", "conversation-inbox"],
15
- defaultNS: "common",
16
- });
17
- }
18
-
19
- export default i18n;
1
+ import i18n from "i18next";
2
+ import { initReactI18next } from "react-i18next";
3
+ import vi from "./vi/common.json";
4
+ import viConversationInbox from "./vi/conversation-inbox.json";
5
+
6
+ if (!i18n.isInitialized) {
7
+ i18n.use(initReactI18next).init({
8
+ resources: {
9
+ vi: { common: vi, "conversation-inbox": viConversationInbox },
10
+ },
11
+ lng: "vi",
12
+ fallbackLng: "vi",
13
+ interpolation: { escapeValue: false },
14
+ ns: ["common", "conversation-inbox"],
15
+ defaultNS: "common",
16
+ });
17
+ }
18
+
19
+ export default i18n;
@@ -1,162 +1,162 @@
1
- {
2
- "library": "Thư viện",
3
- "image": "Ảnh",
4
- "video": "Video",
5
- "file": "Tập tin",
6
- "link": "Liên kết",
7
- "no_conversation_data": "Vui lòng chọn một cuộc trò chuyện",
8
- "no_media_files": "Không có tập tin phương tiện",
9
- "search": "Tìm kiếm",
10
- "all": "Tất cả",
11
- "users": "Người dùng",
12
- "messages": "Tin nhắn",
13
- "no_conversation": "Không tìm thấy cuộc trò chuyện",
14
- "download": "Tải xuống",
15
- "active_sessions": "Đang mở",
16
- "closed_sessions": "Đã đóng",
17
- "unassigned": "Chưa phân công",
18
- "waiting_process": "Chờ xử lý",
19
- "in_process": "Đang xử lý",
20
- "completed": "Hoàn thành",
21
- "awaiting_reply": "Chưa trả lời",
22
- "slow_processing": "Chậm xử lý",
23
- "temporarily_paused": "Tạm chờ",
24
- "see_more": "Xem thêm",
25
- "err_get_conversation": "Lỗi khi lấy thông tin cuộc trò chuyện",
26
- "enter_message": "Nhập tin nhắn",
27
- "enter_internal_message": "Tin nhắn nội bộ chỉ hiển thị với bạn và các thành viên trong nhóm.",
28
- "reply": "Reply",
29
- "internal": "Internal",
30
- "canned_response_hint": "Gõ # và nhấn Enter để chèn câu trả lời nhanh",
31
- "update_session_status_title": "Cập nhật status",
32
- "update_session_tag_title": "Cập nhật tag",
33
- "cancel": "Hủy",
34
- "update": "Cập nhật",
35
- "update_session_status_failed": "Cập nhật status không thành công",
36
- "update_session_tag_failed": "Cập nhật tag không thành công",
37
- "customer": "Khách hàng",
38
- "you": "Bạn",
39
- "current_account": "(tôi)",
40
- "message_sender_unnamed": "Thành viên",
41
- "select_tag": "Chọn tag",
42
- "search_message": "Tìm kiếm tin nhắn",
43
- "no_result": "Không có kết quả",
44
- "no_search_text": "Nhập từ khoá tìm kiếm",
45
- "add_note": "Thêm ghi chú",
46
- "note_created": "Đã tạo ghi chú",
47
- "note_updated": "Đã cập nhật ghi chú",
48
- "create_note_failed": "Thêm ghi chú thất bại",
49
- "update_note_failed": "Cập nhật ghi chú thất bại",
50
- "copied_to_clipboard": "Đã sao chép",
51
- "message_send_failed": "Gửi tin nhắn thất bại, bạn vui lòng <bold>nhấn để gửi lại</bold>",
52
- "message_send_failed_no_retry": "Gửi tin nhắn thất bại",
53
- "context_menu_reply": "Trả lời",
54
- "context_menu_pin": "Ghim",
55
- "context_menu_unpin": "Bỏ ghim",
56
- "context_menu_view_original": "Xem tin nhắn gốc",
57
- "pinned_panel_title": "Tin nhắn đã ghim",
58
- "pinned_panel_hint": "Nhấn giữ tin nhắn để chọn \"Bỏ ghim\" hoặc \"Xem tin nhắn gốc\"",
59
- "pin_message_success": "Đã ghim tin nhắn",
60
- "pin_message_failed": "Ghim tin nhắn thất bại",
61
- "unpin_message_success": "Đã bỏ ghim tin nhắn",
62
- "unpin_message_failed": "Bỏ ghim tin nhắn thất bại",
63
- "pinned_from_text": "Tin nhắn từ {{name}}",
64
- "pinned_from_link": "Từ {{name}}",
65
- "pinned_from_image": "Hình ảnh từ {{name}}",
66
- "pinned_from_video": "Video từ {{name}}",
67
- "pinned_from_file": "Tài liệu từ {{name}}",
68
- "pin_limit_modal_title": "Không thể ghim thêm tin nhắn",
69
- "pin_limit_modal_description": "Chỉ được ghim tối đa {{max}} tin nhắn. Vui lòng bỏ ghim một tin nhắn hiện có trước khi ghim tin nhắn mới.",
70
- "pin_limit_modal_confirm": "Đã hiểu",
71
- "context_menu_copy_message": "Sao chép tin nhắn",
72
- "copy_message_success": "Sao chép tin nhắn thành công",
73
- "context_menu_revoke": "Thu hồi",
74
- "revoke_message_confirm_title": "Thu hồi tin nhắn?",
75
- "revoke_message_confirm_message": "Bạn có chắc chắn muốn thu hồi tin nhắn này?",
76
- "revoke": "Thu hồi",
77
- "revoked": "Đã thu hồi tin nhắn",
78
- "revoked_with_sender": "{{name}} đã thu hồi tin nhắn",
79
- "revoke_message_success": "Đã thu hồi tin nhắn",
80
- "revoke_message_failed": "Thu hồi tin nhắn thất bại",
81
- "manual_assign_search_placeholder": "Tìm kiếm",
82
- "manual_assign_no_results": "Không có kết quả phù hợp",
83
- "manual_assign_confirm_question": "Phân công lại cho <bold>{{name}}</bold>?",
84
- "manual_assign_button_reassign": "Phân công lại",
85
- "manual_assign_button_auto_reassign": "Auto reassign",
86
- "manual_assign_success": "Phân công thành công",
87
- "auto_assign_success": "Tự động phân công thành công",
88
- "auto_assign_failed": "Không có nhân viên phù hợp để phân công",
89
- "manual_assign_failed": "Phân công thất bại",
90
- "assign_to_me": "Phân công cho tôi",
91
- "assign_to_others": "Phân công cho người khác",
92
- "unassigned_thread_notice": "Phiên này chưa được phân công cho ai",
93
- "video_limit_exceeded": "Chỉ được phép tải lên 1 video duy nhất",
94
- "select_status": "Chọn trạng thái",
95
- "invalid_file_format": "{{fileName}} không đúng định dạng JPG, JPEG, PNG hoặc VIDEO",
96
- "file_size_exceeded": "{{fileName}} có kích thước tập tin vượt quá {{maxSize}}MB",
97
- "file_processing_error": "Đã xảy ra lỗi khi xử lý tệp",
98
- "invalid_document_format": "{{fileName}} không đúng định dạng (chỉ hỗ trợ PDF, DOC, DOCX)",
99
- "view_message": "Xem tin nhắn",
100
- "search_message_title": "Tìm kiếm tin nhắn",
101
- "msg_type_image": "[Hình ảnh]",
102
- "msg_type_voice": "[Tin nhắn thoại]",
103
- "msg_type_file": "[File]",
104
- "msg_type_video": "[Video]",
105
- "msg_type_unsupported": "Tin nhắn không khả dụng",
106
- "msg_type_order": "[Đơn hàng] {{orderCode}}",
107
- "invalid_message": "Tin nhắn không hợp lệ",
108
- "session_started": "Phiên chat đã bắt đầu",
109
- "session_ended": "Phiên chat đã kết thúc",
110
- "new_message": "Bạn có tin nhắn mới",
111
- "close_session_success": "Đóng phiên chat thành công",
112
- "close_session_failed": "Đóng phiên chat thất bại",
113
- "session_active": "Đang hoạt động",
114
- "session_add_tag_placeholder": "Thêm thẻ...",
115
- "session_issue_detail_placeholder": "Vấn đề cụ thể...",
116
- "session_note_placeholder": "Ghi chú...",
117
- "session_close_button": "Đóng",
118
- "member_count": "{{count}} thành viên",
119
- "members": "Thành viên",
120
- "no_group_members": "Không có thành viên",
121
- "load_group_member_list_failed": "Không thể tải danh sách thành viên",
122
- "group_creator": "Người tạo nhóm",
123
- "group_owner": "Chủ nhóm",
124
- "group_admin": "Quản trị viên",
125
- "group_member": "Thành viên",
126
- "leave_group": "Rời khỏi nhóm",
127
- "choose_emoji": "Chọn biểu tượng cảm xúc",
128
- "emoji_smileys": "Mặt cười",
129
- "emoji_nature": "Động vật",
130
- "emoji_food": "Đồ ăn",
131
- "emoji_activities": "Hoạt động",
132
- "session_label": "Phiên {{order}}",
133
- "sessions_heading": "PHIÊN HỖ TRỢ",
134
- "reply_to": "Trả lời {{name}}",
135
- "your_self": "bạn",
136
- "canned_responses": "Câu trả lời nhanh",
137
- "team": "Team",
138
- "personal": "Cá nhân",
139
- "no_canned_response": "Không tìm thấy kết quả phù hợp",
140
- "add_canned_response": "Thêm câu trả lời nhanh",
141
- "canned_response_quick_search_placeholder": "Câu trả lời nhanh phù hợp với",
142
- "replied_yourself": "đã trả lời chính mình",
143
- "replied_you": "đã trả lời bạn",
144
- "replied": "đã trả lời",
145
- "my_messages": "Tin nhắn của tôi",
146
- "my_inbox_tab": "My inbox",
147
- "team_messages": "Tin nhắn nhóm",
148
- "join_group_required": "Bạn phải là thành viên để gửi tin nhắn",
149
- "join_group": "Tham gia",
150
- "join_group_success": "Tham gia nhóm thành công",
151
- "join_group_failed": "Tham gia nhóm thất bại",
152
- "leave_group_confirm_title": "Rời khỏi nhóm?",
153
- "leave_group_confirm_message": "Bạn có chắc chắn muốn rời khỏi nhóm này không?",
154
- "leave_group_success": "Rời khỏi nhóm thành công",
155
- "leave_group_failed": "Rời khỏi nhóm thất bại",
156
- "leave_group_assignee_error": "Bạn đang là người được phân công cho phiên chat đang xử lý, không thể rời nhóm",
157
- "session_closed_modal_title": "Session đã đóng!",
158
- "session_closed_modal_description": "Hãy tạo mới hoặc mở lại session để tiếp tục gửi tin nhắn!",
159
- "session_closed_modal_reopen": "Mở lại",
160
- "session_closed_modal_create_new": "Tạo mới",
161
- "session_action_error": "Không thể thực hiện tác vụ này"
1
+ {
2
+ "library": "Thư viện",
3
+ "image": "Ảnh",
4
+ "video": "Video",
5
+ "file": "Tập tin",
6
+ "link": "Liên kết",
7
+ "no_conversation_data": "Vui lòng chọn một cuộc trò chuyện",
8
+ "no_media_files": "Không có tập tin phương tiện",
9
+ "search": "Tìm kiếm",
10
+ "all": "Tất cả",
11
+ "users": "Người dùng",
12
+ "messages": "Tin nhắn",
13
+ "no_conversation": "Không tìm thấy cuộc trò chuyện",
14
+ "download": "Tải xuống",
15
+ "active_sessions": "Đang mở",
16
+ "closed_sessions": "Đã đóng",
17
+ "unassigned": "Chưa phân công",
18
+ "waiting_process": "Chờ xử lý",
19
+ "in_process": "Đang xử lý",
20
+ "completed": "Hoàn thành",
21
+ "awaiting_reply": "Chưa trả lời",
22
+ "slow_processing": "Chậm xử lý",
23
+ "temporarily_paused": "Tạm chờ",
24
+ "see_more": "Xem thêm",
25
+ "err_get_conversation": "Lỗi khi lấy thông tin cuộc trò chuyện",
26
+ "enter_message": "Nhập tin nhắn",
27
+ "enter_internal_message": "Tin nhắn nội bộ chỉ hiển thị với bạn và các thành viên trong nhóm.",
28
+ "reply": "Reply",
29
+ "internal": "Internal",
30
+ "canned_response_hint": "Gõ # và nhấn Enter để chèn câu trả lời nhanh",
31
+ "update_session_status_title": "Cập nhật status",
32
+ "update_session_tag_title": "Cập nhật tag",
33
+ "cancel": "Hủy",
34
+ "update": "Cập nhật",
35
+ "update_session_status_failed": "Cập nhật status không thành công",
36
+ "update_session_tag_failed": "Cập nhật tag không thành công",
37
+ "customer": "Khách hàng",
38
+ "you": "Bạn",
39
+ "current_account": "(tôi)",
40
+ "message_sender_unnamed": "Thành viên",
41
+ "select_tag": "Chọn tag",
42
+ "search_message": "Tìm kiếm tin nhắn",
43
+ "no_result": "Không có kết quả",
44
+ "no_search_text": "Nhập từ khoá tìm kiếm",
45
+ "add_note": "Thêm ghi chú",
46
+ "note_created": "Đã tạo ghi chú",
47
+ "note_updated": "Đã cập nhật ghi chú",
48
+ "create_note_failed": "Thêm ghi chú thất bại",
49
+ "update_note_failed": "Cập nhật ghi chú thất bại",
50
+ "copied_to_clipboard": "Đã sao chép",
51
+ "message_send_failed": "Gửi tin nhắn thất bại, bạn vui lòng <bold>nhấn để gửi lại</bold>",
52
+ "message_send_failed_no_retry": "Gửi tin nhắn thất bại",
53
+ "context_menu_reply": "Trả lời",
54
+ "context_menu_pin": "Ghim",
55
+ "context_menu_unpin": "Bỏ ghim",
56
+ "context_menu_view_original": "Xem tin nhắn gốc",
57
+ "pinned_panel_title": "Tin nhắn đã ghim",
58
+ "pinned_panel_hint": "Nhấn giữ tin nhắn để chọn \"Bỏ ghim\" hoặc \"Xem tin nhắn gốc\"",
59
+ "pin_message_success": "Đã ghim tin nhắn",
60
+ "pin_message_failed": "Ghim tin nhắn thất bại",
61
+ "unpin_message_success": "Đã bỏ ghim tin nhắn",
62
+ "unpin_message_failed": "Bỏ ghim tin nhắn thất bại",
63
+ "pinned_from_text": "Tin nhắn từ {{name}}",
64
+ "pinned_from_link": "Từ {{name}}",
65
+ "pinned_from_image": "Hình ảnh từ {{name}}",
66
+ "pinned_from_video": "Video từ {{name}}",
67
+ "pinned_from_file": "Tài liệu từ {{name}}",
68
+ "pin_limit_modal_title": "Không thể ghim thêm tin nhắn",
69
+ "pin_limit_modal_description": "Chỉ được ghim tối đa {{max}} tin nhắn. Vui lòng bỏ ghim một tin nhắn hiện có trước khi ghim tin nhắn mới.",
70
+ "pin_limit_modal_confirm": "Đã hiểu",
71
+ "context_menu_copy_message": "Sao chép tin nhắn",
72
+ "copy_message_success": "Sao chép tin nhắn thành công",
73
+ "context_menu_revoke": "Thu hồi",
74
+ "revoke_message_confirm_title": "Thu hồi tin nhắn?",
75
+ "revoke_message_confirm_message": "Bạn có chắc chắn muốn thu hồi tin nhắn này?",
76
+ "revoke": "Thu hồi",
77
+ "revoked": "Đã thu hồi tin nhắn",
78
+ "revoked_with_sender": "{{name}} đã thu hồi tin nhắn",
79
+ "revoke_message_success": "Đã thu hồi tin nhắn",
80
+ "revoke_message_failed": "Thu hồi tin nhắn thất bại",
81
+ "manual_assign_search_placeholder": "Tìm kiếm",
82
+ "manual_assign_no_results": "Không có kết quả phù hợp",
83
+ "manual_assign_confirm_question": "Phân công lại cho <bold>{{name}}</bold>?",
84
+ "manual_assign_button_reassign": "Phân công lại",
85
+ "manual_assign_button_auto_reassign": "Auto reassign",
86
+ "manual_assign_success": "Phân công thành công",
87
+ "auto_assign_success": "Tự động phân công thành công",
88
+ "auto_assign_failed": "Không có nhân viên phù hợp để phân công",
89
+ "manual_assign_failed": "Phân công thất bại",
90
+ "assign_to_me": "Phân công cho tôi",
91
+ "assign_to_others": "Phân công cho người khác",
92
+ "unassigned_thread_notice": "Phiên này chưa được phân công cho ai",
93
+ "video_limit_exceeded": "Chỉ được phép tải lên 1 video duy nhất",
94
+ "select_status": "Chọn trạng thái",
95
+ "invalid_file_format": "{{fileName}} không đúng định dạng JPG, JPEG, PNG hoặc VIDEO",
96
+ "file_size_exceeded": "{{fileName}} có kích thước tập tin vượt quá {{maxSize}}MB",
97
+ "file_processing_error": "Đã xảy ra lỗi khi xử lý tệp",
98
+ "invalid_document_format": "{{fileName}} không đúng định dạng (chỉ hỗ trợ PDF, DOC, DOCX)",
99
+ "view_message": "Xem tin nhắn",
100
+ "search_message_title": "Tìm kiếm tin nhắn",
101
+ "msg_type_image": "[Hình ảnh]",
102
+ "msg_type_voice": "[Tin nhắn thoại]",
103
+ "msg_type_file": "[File]",
104
+ "msg_type_video": "[Video]",
105
+ "msg_type_unsupported": "Tin nhắn không khả dụng",
106
+ "msg_type_order": "[Đơn hàng] {{orderCode}}",
107
+ "invalid_message": "Tin nhắn không hợp lệ",
108
+ "session_started": "Phiên chat đã bắt đầu",
109
+ "session_ended": "Phiên chat đã kết thúc",
110
+ "new_message": "Bạn có tin nhắn mới",
111
+ "close_session_success": "Đóng phiên chat thành công",
112
+ "close_session_failed": "Đóng phiên chat thất bại",
113
+ "session_active": "Đang hoạt động",
114
+ "session_add_tag_placeholder": "Thêm thẻ...",
115
+ "session_issue_detail_placeholder": "Vấn đề cụ thể...",
116
+ "session_note_placeholder": "Ghi chú...",
117
+ "session_close_button": "Đóng",
118
+ "member_count": "{{count}} thành viên",
119
+ "members": "Thành viên",
120
+ "no_group_members": "Không có thành viên",
121
+ "load_group_member_list_failed": "Không thể tải danh sách thành viên",
122
+ "group_creator": "Người tạo nhóm",
123
+ "group_owner": "Chủ nhóm",
124
+ "group_admin": "Quản trị viên",
125
+ "group_member": "Thành viên",
126
+ "leave_group": "Rời khỏi nhóm",
127
+ "choose_emoji": "Chọn biểu tượng cảm xúc",
128
+ "emoji_smileys": "Mặt cười",
129
+ "emoji_nature": "Động vật",
130
+ "emoji_food": "Đồ ăn",
131
+ "emoji_activities": "Hoạt động",
132
+ "session_label": "Phiên {{order}}",
133
+ "sessions_heading": "PHIÊN HỖ TRỢ",
134
+ "reply_to": "Trả lời {{name}}",
135
+ "your_self": "bạn",
136
+ "canned_responses": "Câu trả lời nhanh",
137
+ "team": "Team",
138
+ "personal": "Cá nhân",
139
+ "no_canned_response": "Không tìm thấy kết quả phù hợp",
140
+ "add_canned_response": "Thêm câu trả lời nhanh",
141
+ "canned_response_quick_search_placeholder": "Câu trả lời nhanh phù hợp với",
142
+ "replied_yourself": "đã trả lời chính mình",
143
+ "replied_you": "đã trả lời bạn",
144
+ "replied": "đã trả lời",
145
+ "my_messages": "Tin nhắn của tôi",
146
+ "my_inbox_tab": "My inbox",
147
+ "team_messages": "Tin nhắn nhóm",
148
+ "join_group_required": "Bạn phải là thành viên để gửi tin nhắn",
149
+ "join_group": "Tham gia",
150
+ "join_group_success": "Tham gia nhóm thành công",
151
+ "join_group_failed": "Tham gia nhóm thất bại",
152
+ "leave_group_confirm_title": "Rời khỏi nhóm?",
153
+ "leave_group_confirm_message": "Bạn có chắc chắn muốn rời khỏi nhóm này không?",
154
+ "leave_group_success": "Rời khỏi nhóm thành công",
155
+ "leave_group_failed": "Rời khỏi nhóm thất bại",
156
+ "leave_group_assignee_error": "Bạn đang là người được phân công cho phiên chat đang xử lý, không thể rời nhóm",
157
+ "session_closed_modal_title": "Session đã đóng!",
158
+ "session_closed_modal_description": "Hãy tạo mới hoặc mở lại session để tiếp tục gửi tin nhắn!",
159
+ "session_closed_modal_reopen": "Mở lại",
160
+ "session_closed_modal_create_new": "Tạo mới",
161
+ "session_action_error": "Không thể thực hiện tác vụ này"
162
162
  }