@droppii-org/chat-mobile 0.2.29 → 0.2.30
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/lib/module/components/flows/inputButtons/index.js +6 -3
- package/lib/module/components/flows/inputButtons/index.js.map +1 -1
- package/lib/module/config/api-endpoints.js +2 -1
- package/lib/module/config/api-endpoints.js.map +1 -1
- package/lib/module/context/ChatDetailContext.js +35 -2
- package/lib/module/context/ChatDetailContext.js.map +1 -1
- package/lib/module/context/index.js +1 -0
- package/lib/module/context/index.js.map +1 -1
- package/lib/module/hooks/conversation/useGetConversationDetail.js +58 -0
- package/lib/module/hooks/conversation/useGetConversationDetail.js.map +1 -0
- package/lib/module/hooks/flows/useFlow.js +1 -1
- package/lib/module/hooks/flows/useFlow.js.map +1 -1
- package/lib/module/hooks/flows/useGetConversationFlowMainMenu.js +17 -0
- package/lib/module/hooks/flows/useGetConversationFlowMainMenu.js.map +1 -0
- package/lib/module/hooks/message/useSendMessage.js +32 -7
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/query-keys.js +4 -1
- package/lib/module/hooks/query-keys.js.map +1 -1
- package/lib/module/hooks/useChatCompose.js +0 -1
- package/lib/module/hooks/useChatCompose.js.map +1 -1
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatAttachmentPanel.js +4 -14
- package/lib/module/screens/chat-detail/ChatAttachmentPanel.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatComposer.js +26 -15
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +58 -71
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetailHeader.js +7 -10
- package/lib/module/screens/chat-detail/ChatDetailHeader.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatLoadEarlier.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatQuickActions.js +2 -1
- package/lib/module/screens/chat-detail/ChatQuickActions.js.map +1 -1
- package/lib/module/screens/chat-detail/constants.js +30 -24
- package/lib/module/screens/chat-detail/constants.js.map +1 -1
- package/lib/module/screens/chat-detail/index.js +2 -2
- package/lib/module/screens/chat-detail/index.js.map +1 -1
- package/lib/module/screens/chat-detail/types.js +15 -1
- package/lib/module/screens/chat-detail/types.js.map +1 -1
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js +2 -2
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js.map +1 -1
- package/lib/module/services/endpoints.js +3 -1
- package/lib/module/services/endpoints.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +7 -1
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js +9 -0
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/types/flows.js +5 -0
- package/lib/module/types/flows.js.map +1 -1
- package/lib/module/utils/flows.js +5 -0
- package/lib/module/utils/flows.js.map +1 -1
- package/lib/module/utils/imageUtils.js +0 -3
- package/lib/module/utils/imageUtils.js.map +1 -1
- package/lib/module/utils/messageUtils.js +5 -19
- package/lib/module/utils/messageUtils.js.map +1 -1
- package/lib/typescript/src/components/flows/inputButtons/index.d.ts.map +1 -1
- package/lib/typescript/src/config/api-endpoints.d.ts +1 -0
- package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -1
- package/lib/typescript/src/context/ChatDetailContext.d.ts +1 -1
- package/lib/typescript/src/context/ChatDetailContext.d.ts.map +1 -1
- package/lib/typescript/src/context/index.d.ts +1 -0
- package/lib/typescript/src/context/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/conversation/useGetConversationDetail.d.ts +17 -0
- package/lib/typescript/src/hooks/conversation/useGetConversationDetail.d.ts.map +1 -0
- package/lib/typescript/src/hooks/flows/useGetConversationFlowMainMenu.d.ts +3 -0
- package/lib/typescript/src/hooks/flows/useGetConversationFlowMainMenu.d.ts.map +1 -0
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts +5 -4
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/query-keys.d.ts +3 -0
- package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +6 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatAttachmentPanel.d.ts +2 -2
- package/lib/typescript/src/screens/chat-detail/ChatAttachmentPanel.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +3 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatLoadEarlier.d.ts +3 -2
- package/lib/typescript/src/screens/chat-detail/ChatLoadEarlier.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatQuickActions.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatQuickActions.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/constants.d.ts +3 -3
- package/lib/typescript/src/screens/chat-detail/constants.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/index.d.ts +3 -3
- package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/types.d.ts +28 -19
- package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
- package/lib/typescript/src/services/endpoints.d.ts +2 -0
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/store/conversation.d.ts +1 -1
- package/lib/typescript/src/store/conversation.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +26 -2
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/flows.d.ts +3 -0
- package/lib/typescript/src/types/flows.d.ts.map +1 -1
- package/lib/typescript/src/utils/flows.d.ts +2 -0
- package/lib/typescript/src/utils/flows.d.ts.map +1 -1
- package/lib/typescript/src/utils/imageUtils.d.ts +0 -1
- package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -1
- package/lib/typescript/src/utils/messageUtils.d.ts +1 -1
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
- package/package.json +3 -5
- package/src/components/flows/inputButtons/index.tsx +11 -3
- package/src/config/api-endpoints.ts +2 -0
- package/src/context/ChatDetailContext.tsx +57 -4
- package/src/context/index.ts +1 -0
- package/src/hooks/conversation/useGetConversationDetail.ts +78 -0
- package/src/hooks/flows/useFlow.ts +1 -1
- package/src/hooks/flows/useGetConversationFlowMainMenu.ts +19 -0
- package/src/hooks/message/useSendMessage.ts +43 -14
- package/src/hooks/query-keys.ts +6 -0
- package/src/hooks/useChatCompose.ts +1 -1
- package/src/index.tsx +15 -6
- package/src/screens/chat-detail/ChatAttachmentPanel.tsx +8 -25
- package/src/screens/chat-detail/ChatComposer.tsx +26 -21
- package/src/screens/chat-detail/ChatDetail.tsx +61 -77
- package/src/screens/chat-detail/ChatDetailHeader.tsx +7 -18
- package/src/screens/chat-detail/ChatListLegend.tsx +1 -1
- package/src/screens/chat-detail/ChatLoadEarlier.tsx +1 -2
- package/src/screens/chat-detail/ChatQuickActions.tsx +6 -2
- package/src/screens/chat-detail/constants.ts +33 -27
- package/src/screens/chat-detail/index.ts +5 -8
- package/src/screens/chat-detail/types.ts +30 -28
- package/src/services/attachmentHandlers/imageAttachmentHandler.ts +2 -2
- package/src/services/endpoints.ts +4 -0
- package/src/store/conversation.ts +1 -1
- package/src/translation/resources/i18n.ts +6 -0
- package/src/types/chat.ts +31 -1
- package/src/types/flows.ts +4 -0
- package/src/utils/flows.ts +7 -0
- package/src/utils/imageUtils.ts +0 -4
- package/src/utils/messageUtils.ts +7 -22
- package/lib/module/screens/chat-detail/ChatDay.js +0 -65
- package/lib/module/screens/chat-detail/ChatDay.js.map +0 -1
- package/lib/module/types/message.js +0 -17
- package/lib/module/types/message.js.map +0 -1
- package/lib/module/utils/resolveMessageType.js +0 -47
- package/lib/module/utils/resolveMessageType.js.map +0 -1
- package/lib/typescript/src/screens/chat-detail/ChatDay.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/ChatDay.d.ts.map +0 -1
- package/lib/typescript/src/types/message.d.ts +0 -16
- package/lib/typescript/src/types/message.d.ts.map +0 -1
- package/lib/typescript/src/utils/resolveMessageType.d.ts +0 -4
- package/lib/typescript/src/utils/resolveMessageType.d.ts.map +0 -1
- package/src/screens/chat-detail/ChatDay.tsx +0 -73
- package/src/types/message.ts +0 -18
- package/src/utils/resolveMessageType.ts +0 -51
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["MessageType","CUSTOM_MESSAGE_DATA_TYPE","DChatMessageType","parseCustomDataType","message","data","customElem","undefined","parsed","JSON","parse","type","messageType","resolveChatMessageType","contentType","TextMessage","AtTextMessage","QuoteMessage","Text","PictureMessage","Image","VideoMessage","Video","FileMessage","File","Merged","CustomMessage","customType","ORDER","Order","LINK","Link","Unsupported"],"sourceRoot":"../../../src","sources":["utils/resolveMessageType.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,+BAA+B;AAE3D,SAASC,wBAAwB,EAAEC,gBAAgB,QAAQ,qBAAkB;AAE7E,MAAMC,mBAAmB,GAAIC,OAAqB,IAAyB;EACzE,MAAMC,IAAI,GAAGD,OAAO,CAACE,UAAU,EAAED,IAAI;EACrC,IAAI,CAACA,IAAI,EAAE;IACT,OAAOE,SAAS;EAClB;EAEA,IAAI;IACF,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACL,IAAI,CAA4C;IAC1E,OAAOG,MAAM,CAACG,IAAI,IAAIH,MAAM,CAACI,WAAW;EAC1C,CAAC,CAAC,MAAM;IACN,OAAOL,SAAS;EAClB;AACF,CAAC;AAED,OAAO,MAAMM,sBAAsB,GACjCT,OAAqB,IACA;EACrB,QAAQA,OAAO,CAACU,WAAW;IACzB,KAAKd,WAAW,CAACe,WAAW;IAC5B,KAAKf,WAAW,CAACgB,aAAa;IAC9B,KAAKhB,WAAW,CAACiB,YAAY;MAC3B,OAAOf,gBAAgB,CAACgB,IAAI;IAC9B,KAAKlB,WAAW,CAACmB,cAAc;MAC7B,OAAOjB,gBAAgB,CAACkB,KAAK;IAC/B,KAAKpB,WAAW,CAACqB,YAAY;MAC3B,OAAOnB,gBAAgB,CAACoB,KAAK;IAC/B,KAAKtB,WAAW,CAACuB,WAAW;MAC1B,OAAOrB,gBAAgB,CAACsB,IAAI;IAC9B,KAAK,GAAG;MAAE;MACR,OAAOtB,gBAAgB,CAACuB,MAAM;IAChC,KAAKzB,WAAW,CAAC0B,aAAa;MAAE;QAC9B,MAAMC,UAAU,GAAGxB,mBAAmB,CAACC,OAAO,CAAC;QAE/C,IAAIuB,UAAU,KAAK1B,wBAAwB,CAAC2B,KAAK,EAAE;UACjD,OAAO1B,gBAAgB,CAAC2B,KAAK;QAC/B;QAEA,IAAIF,UAAU,KAAK1B,wBAAwB,CAAC6B,IAAI,EAAE;UAChD,OAAO5B,gBAAgB,CAAC6B,IAAI;QAC9B;QAEA,OAAO7B,gBAAgB,CAAC8B,WAAW;MACrC;IACA;MACE,OAAO9B,gBAAgB,CAAC8B,WAAW;EACvC;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatDay.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA+CzD,eAAO,MAAM,OAAO,oFAC4B,QAAQ,iCAoBvD,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare const DChatMessageType: {
|
|
2
|
-
readonly Text: "TEXT";
|
|
3
|
-
readonly Link: "LINK";
|
|
4
|
-
readonly Image: "IMAGE";
|
|
5
|
-
readonly Video: "VIDEO";
|
|
6
|
-
readonly File: "FILE";
|
|
7
|
-
readonly Merged: "MERGED";
|
|
8
|
-
readonly Order: "ORDER";
|
|
9
|
-
readonly Unsupported: "UNSUPPORTED";
|
|
10
|
-
};
|
|
11
|
-
export type DChatMessageType = (typeof DChatMessageType)[keyof typeof DChatMessageType];
|
|
12
|
-
export declare const CUSTOM_MESSAGE_DATA_TYPE: {
|
|
13
|
-
readonly LINK: "LINK";
|
|
14
|
-
readonly ORDER: "ORDER";
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/types/message.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAE3D,eAAO,MAAM,wBAAwB;;;CAG3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveMessageType.d.ts","sourceRoot":"","sources":["../../../../src/utils/resolveMessageType.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAA4B,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAgB9E,eAAO,MAAM,sBAAsB,GACjC,SAAS,YAAY,KACpB,gBA8BF,CAAC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { memo, useMemo } from 'react';
|
|
2
|
-
import { KContainer, KLabel } from '@droppii/libs';
|
|
3
|
-
import type { DayProps } from 'react-native-gifted-chat';
|
|
4
|
-
import { CHAT_BUBBLE_COLORS } from './constants';
|
|
5
|
-
|
|
6
|
-
const formatTime = (date: Date) =>
|
|
7
|
-
date.toLocaleTimeString('vi-VN', {
|
|
8
|
-
hour: '2-digit',
|
|
9
|
-
minute: '2-digit',
|
|
10
|
-
hour12: false,
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
const formatDayLabel = (createdAt: Date | number): string | null => {
|
|
14
|
-
const date = new Date(createdAt);
|
|
15
|
-
if (Number.isNaN(date.getTime())) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const today = new Date();
|
|
20
|
-
today.setHours(0, 0, 0, 0);
|
|
21
|
-
|
|
22
|
-
const messageDay = new Date(date);
|
|
23
|
-
messageDay.setHours(0, 0, 0, 0);
|
|
24
|
-
|
|
25
|
-
if (messageDay.getTime() === today.getTime()) {
|
|
26
|
-
return `${formatTime(date)} Hôm nay`;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const yesterday = new Date(today);
|
|
30
|
-
yesterday.setDate(yesterday.getDate() - 1);
|
|
31
|
-
|
|
32
|
-
if (messageDay.getTime() === yesterday.getTime()) {
|
|
33
|
-
return `${formatTime(date)} Hôm qua`;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (messageDay.getFullYear() === today.getFullYear()) {
|
|
37
|
-
return `${formatTime(date)} ${date.toLocaleDateString('vi-VN', {
|
|
38
|
-
day: 'numeric',
|
|
39
|
-
month: 'long',
|
|
40
|
-
})}`;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return `${formatTime(date)} ${date.toLocaleDateString('vi-VN', {
|
|
44
|
-
day: 'numeric',
|
|
45
|
-
month: 'long',
|
|
46
|
-
year: 'numeric',
|
|
47
|
-
})}`;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export const ChatDay = memo(
|
|
51
|
-
({ createdAt, containerStyle, wrapperStyle }: DayProps) => {
|
|
52
|
-
const dateStr = useMemo(
|
|
53
|
-
() => (createdAt == null ? null : formatDayLabel(createdAt)),
|
|
54
|
-
[createdAt]
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
if (!dateStr) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return (
|
|
62
|
-
<KContainer.View center marginV="0.5rem" style={containerStyle}>
|
|
63
|
-
<KContainer.View style={wrapperStyle}>
|
|
64
|
-
<KLabel.Text typo="TextXsNormal" color={CHAT_BUBBLE_COLORS.dayLabel}>
|
|
65
|
-
{dateStr}
|
|
66
|
-
</KLabel.Text>
|
|
67
|
-
</KContainer.View>
|
|
68
|
-
</KContainer.View>
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
ChatDay.displayName = 'ChatDay';
|
package/src/types/message.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export const DChatMessageType = {
|
|
2
|
-
Text: 'TEXT',
|
|
3
|
-
Link: 'LINK',
|
|
4
|
-
Image: 'IMAGE',
|
|
5
|
-
Video: 'VIDEO',
|
|
6
|
-
File: 'FILE',
|
|
7
|
-
Merged: 'MERGED',
|
|
8
|
-
Order: 'ORDER',
|
|
9
|
-
Unsupported: 'UNSUPPORTED',
|
|
10
|
-
} as const;
|
|
11
|
-
|
|
12
|
-
export type DChatMessageType =
|
|
13
|
-
(typeof DChatMessageType)[keyof typeof DChatMessageType];
|
|
14
|
-
|
|
15
|
-
export const CUSTOM_MESSAGE_DATA_TYPE = {
|
|
16
|
-
LINK: 'LINK',
|
|
17
|
-
ORDER: 'ORDER',
|
|
18
|
-
} as const;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
2
|
-
import type { DMessageItem } from '../types/chat';
|
|
3
|
-
import { CUSTOM_MESSAGE_DATA_TYPE, DChatMessageType } from '../types/message';
|
|
4
|
-
|
|
5
|
-
const parseCustomDataType = (message: DMessageItem): string | undefined => {
|
|
6
|
-
const data = message.customElem?.data;
|
|
7
|
-
if (!data) {
|
|
8
|
-
return undefined;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
const parsed = JSON.parse(data) as { type?: string; messageType?: string };
|
|
13
|
-
return parsed.type ?? parsed.messageType;
|
|
14
|
-
} catch {
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export const resolveChatMessageType = (
|
|
20
|
-
message: DMessageItem
|
|
21
|
-
): DChatMessageType => {
|
|
22
|
-
switch (message.contentType) {
|
|
23
|
-
case MessageType.TextMessage:
|
|
24
|
-
case MessageType.AtTextMessage:
|
|
25
|
-
case MessageType.QuoteMessage:
|
|
26
|
-
return DChatMessageType.Text;
|
|
27
|
-
case MessageType.PictureMessage:
|
|
28
|
-
return DChatMessageType.Image;
|
|
29
|
-
case MessageType.VideoMessage:
|
|
30
|
-
return DChatMessageType.Video;
|
|
31
|
-
case MessageType.FileMessage:
|
|
32
|
-
return DChatMessageType.File;
|
|
33
|
-
case 107: // MergerMessage (merged/grouped messages)
|
|
34
|
-
return DChatMessageType.Merged;
|
|
35
|
-
case MessageType.CustomMessage: {
|
|
36
|
-
const customType = parseCustomDataType(message);
|
|
37
|
-
|
|
38
|
-
if (customType === CUSTOM_MESSAGE_DATA_TYPE.ORDER) {
|
|
39
|
-
return DChatMessageType.Order;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (customType === CUSTOM_MESSAGE_DATA_TYPE.LINK) {
|
|
43
|
-
return DChatMessageType.Link;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return DChatMessageType.Unsupported;
|
|
47
|
-
}
|
|
48
|
-
default:
|
|
49
|
-
return DChatMessageType.Unsupported;
|
|
50
|
-
}
|
|
51
|
-
};
|