@droppii-org/chat-mobile 0.2.0
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/LICENSE +20 -0
- package/README.md +101 -0
- package/lib/module/assets/images/icon_bot.png +0 -0
- package/lib/module/assets/images/index.js +9 -0
- package/lib/module/assets/images/index.js.map +1 -0
- package/lib/module/assets/images/tag_bot.png +0 -0
- package/lib/module/assets/images/tag_mall.png +0 -0
- package/lib/module/build-ignore.d.js +2 -0
- package/lib/module/build-ignore.d.js.map +1 -0
- package/lib/module/components/Avatar/Avatar.js +81 -0
- package/lib/module/components/Avatar/Avatar.js.map +1 -0
- package/lib/module/components/Avatar/Avatar.types.js +2 -0
- package/lib/module/components/Avatar/Avatar.types.js.map +1 -0
- package/lib/module/components/Avatar/Avatar.utils.js +44 -0
- package/lib/module/components/Avatar/Avatar.utils.js.map +1 -0
- package/lib/module/components/Avatar/AvatarBadge.js +28 -0
- package/lib/module/components/Avatar/AvatarBadge.js.map +1 -0
- package/lib/module/components/Avatar/DoubleAvatar.js +74 -0
- package/lib/module/components/Avatar/DoubleAvatar.js.map +1 -0
- package/lib/module/components/Avatar/SingleAvatar.js +53 -0
- package/lib/module/components/Avatar/SingleAvatar.js.map +1 -0
- package/lib/module/components/Avatar/index.js +7 -0
- package/lib/module/components/Avatar/index.js.map +1 -0
- package/lib/module/components/ThreadCard/AvatarSection.js +37 -0
- package/lib/module/components/ThreadCard/AvatarSection.js.map +1 -0
- package/lib/module/components/ThreadCard/NamePrefixIcon.js +36 -0
- package/lib/module/components/ThreadCard/NamePrefixIcon.js.map +1 -0
- package/lib/module/components/ThreadCard/ThreadCard.js +132 -0
- package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -0
- package/lib/module/components/ThreadCard/UnreadBadge.js +35 -0
- package/lib/module/components/ThreadCard/UnreadBadge.js.map +1 -0
- package/lib/module/components/ThreadCard/index.js +7 -0
- package/lib/module/components/ThreadCard/index.js.map +1 -0
- package/lib/module/components/ThreadCard/thread-card.utils.js +51 -0
- package/lib/module/components/ThreadCard/thread-card.utils.js.map +1 -0
- package/lib/module/core/index.js +11 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/core/useChatListener.js +62 -0
- package/lib/module/core/useChatListener.js.map +1 -0
- package/lib/module/core/useUserListener.js +72 -0
- package/lib/module/core/useUserListener.js.map +1 -0
- package/lib/module/hooks/query-keys.js +10 -0
- package/lib/module/hooks/query-keys.js.map +1 -0
- package/lib/module/hooks/useChatMessages.js +163 -0
- package/lib/module/hooks/useChatMessages.js.map +1 -0
- package/lib/module/hooks/useConversationList.js +51 -0
- package/lib/module/hooks/useConversationList.js.map +1 -0
- package/lib/module/index.js +14 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/screens/chat-detail/ChatAttachmentPanel.js +106 -0
- package/lib/module/screens/chat-detail/ChatAttachmentPanel.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatComposer.js +288 -0
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatDay.js +65 -0
- package/lib/module/screens/chat-detail/ChatDay.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatDetail.js +104 -0
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatDetailHeader.js +92 -0
- package/lib/module/screens/chat-detail/ChatDetailHeader.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatList.js +145 -0
- package/lib/module/screens/chat-detail/ChatList.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatLoadEarlier.js +23 -0
- package/lib/module/screens/chat-detail/ChatLoadEarlier.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatQuickActions.js +85 -0
- package/lib/module/screens/chat-detail/ChatQuickActions.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatScrollToBottom.js +12 -0
- package/lib/module/screens/chat-detail/ChatScrollToBottom.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatTextBubble.js +62 -0
- package/lib/module/screens/chat-detail/ChatTextBubble.js.map +1 -0
- package/lib/module/screens/chat-detail/constants.js +59 -0
- package/lib/module/screens/chat-detail/constants.js.map +1 -0
- package/lib/module/screens/chat-detail/index.js +12 -0
- package/lib/module/screens/chat-detail/index.js.map +1 -0
- package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js +24 -0
- package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js.map +1 -0
- package/lib/module/screens/chat-detail/messages/types.js +4 -0
- package/lib/module/screens/chat-detail/messages/types.js.map +1 -0
- package/lib/module/screens/chat-detail/types.js +4 -0
- package/lib/module/screens/chat-detail/types.js.map +1 -0
- package/lib/module/screens/chat-detail/useChatActionPress.js +11 -0
- package/lib/module/screens/chat-detail/useChatActionPress.js.map +1 -0
- package/lib/module/screens/inbox/Inbox.js +134 -0
- package/lib/module/screens/inbox/Inbox.js.map +1 -0
- package/lib/module/screens/inbox/MessagesTab.js +58 -0
- package/lib/module/screens/inbox/MessagesTab.js.map +1 -0
- package/lib/module/screens/inbox/index.js +5 -0
- package/lib/module/screens/inbox/index.js.map +1 -0
- package/lib/module/services/apis.js +41 -0
- package/lib/module/services/apis.js.map +1 -0
- package/lib/module/services/index.js +5 -0
- package/lib/module/services/index.js.map +1 -0
- package/lib/module/services/message.js +38 -0
- package/lib/module/services/message.js.map +1 -0
- package/lib/module/store/conversation.js +89 -0
- package/lib/module/store/conversation.js.map +1 -0
- package/lib/module/store/index.js +6 -0
- package/lib/module/store/index.js.map +1 -0
- package/lib/module/store/storeConfig.js +19 -0
- package/lib/module/store/storeConfig.js.map +1 -0
- package/lib/module/store/user.js +25 -0
- package/lib/module/store/user.js.map +1 -0
- package/lib/module/translation/index.js +24 -0
- package/lib/module/translation/index.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +10 -0
- package/lib/module/translation/resources/i18n.js.map +1 -0
- package/lib/module/types/auth.js +9 -0
- package/lib/module/types/auth.js.map +1 -0
- package/lib/module/types/chat.js +26 -0
- package/lib/module/types/chat.js.map +1 -0
- package/lib/module/types/message.js +16 -0
- package/lib/module/types/message.js.map +1 -0
- package/lib/module/utils/conversation.js +61 -0
- package/lib/module/utils/conversation.js.map +1 -0
- package/lib/module/utils/giftedChatMessage.js +90 -0
- package/lib/module/utils/giftedChatMessage.js.map +1 -0
- package/lib/module/utils/message.js +68 -0
- package/lib/module/utils/message.js.map +1 -0
- package/lib/module/utils/resolveMessageType.js +44 -0
- package/lib/module/utils/resolveMessageType.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/assets/images/index.d.ts +7 -0
- package/lib/typescript/src/assets/images/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/Avatar.d.ts +4 -0
- package/lib/typescript/src/components/Avatar/Avatar.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/Avatar.types.d.ts +18 -0
- package/lib/typescript/src/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/Avatar.utils.d.ts +14 -0
- package/lib/typescript/src/components/Avatar/Avatar.utils.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/AvatarBadge.d.ts +7 -0
- package/lib/typescript/src/components/Avatar/AvatarBadge.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/DoubleAvatar.d.ts +13 -0
- package/lib/typescript/src/components/Avatar/DoubleAvatar.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/SingleAvatar.d.ts +12 -0
- package/lib/typescript/src/components/Avatar/SingleAvatar.d.ts.map +1 -0
- package/lib/typescript/src/components/Avatar/index.d.ts +6 -0
- package/lib/typescript/src/components/Avatar/index.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts +8 -0
- package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/NamePrefixIcon.d.ts +8 -0
- package/lib/typescript/src/components/ThreadCard/NamePrefixIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts +11 -0
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/UnreadBadge.d.ts +6 -0
- package/lib/typescript/src/components/ThreadCard/UnreadBadge.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/index.d.ts +5 -0
- package/lib/typescript/src/components/ThreadCard/index.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts +4 -0
- package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +3 -0
- package/lib/typescript/src/core/index.d.ts.map +1 -0
- package/lib/typescript/src/core/useChatListener.d.ts +2 -0
- package/lib/typescript/src/core/useChatListener.d.ts.map +1 -0
- package/lib/typescript/src/core/useUserListener.d.ts +2 -0
- package/lib/typescript/src/core/useUserListener.d.ts.map +1 -0
- package/lib/typescript/src/hooks/query-keys.d.ts +9 -0
- package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useChatMessages.d.ts +21 -0
- package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useConversationList.d.ts +8 -0
- package/lib/typescript/src/hooks/useConversationList.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +14 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatAttachmentPanel.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatAttachmentPanel.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatDay.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatDay.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +4 -0
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts +4 -0
- package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatList.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatList.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatLoadEarlier.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatLoadEarlier.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatQuickActions.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatQuickActions.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatScrollToBottom.d.ts +2 -0
- package/lib/typescript/src/screens/chat-detail/ChatScrollToBottom.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/constants.d.ts +17 -0
- package/lib/typescript/src/screens/chat-detail/constants.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/index.d.ts +13 -0
- package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/messages/types.d.ts +13 -0
- package/lib/typescript/src/screens/chat-detail/messages/types.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/types.d.ts +86 -0
- package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/useChatActionPress.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/useChatActionPress.d.ts.map +1 -0
- package/lib/typescript/src/screens/inbox/Inbox.d.ts +10 -0
- package/lib/typescript/src/screens/inbox/Inbox.d.ts.map +1 -0
- package/lib/typescript/src/screens/inbox/MessagesTab.d.ts +7 -0
- package/lib/typescript/src/screens/inbox/MessagesTab.d.ts.map +1 -0
- package/lib/typescript/src/screens/inbox/index.d.ts +3 -0
- package/lib/typescript/src/screens/inbox/index.d.ts.map +1 -0
- package/lib/typescript/src/services/apis.d.ts +12 -0
- package/lib/typescript/src/services/apis.d.ts.map +1 -0
- package/lib/typescript/src/services/index.d.ts +3 -0
- package/lib/typescript/src/services/index.d.ts.map +1 -0
- package/lib/typescript/src/services/message.d.ts +21 -0
- package/lib/typescript/src/services/message.d.ts.map +1 -0
- package/lib/typescript/src/store/conversation.d.ts +24 -0
- package/lib/typescript/src/store/conversation.d.ts.map +1 -0
- package/lib/typescript/src/store/index.d.ts +4 -0
- package/lib/typescript/src/store/index.d.ts.map +1 -0
- package/lib/typescript/src/store/storeConfig.d.ts +4 -0
- package/lib/typescript/src/store/storeConfig.d.ts.map +1 -0
- package/lib/typescript/src/store/user.d.ts +12 -0
- package/lib/typescript/src/store/user.d.ts.map +1 -0
- package/lib/typescript/src/translation/index.d.ts +4 -0
- package/lib/typescript/src/translation/index.d.ts.map +1 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts +5 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -0
- package/lib/typescript/src/types/auth.d.ts +24 -0
- package/lib/typescript/src/types/auth.d.ts.map +1 -0
- package/lib/typescript/src/types/chat.d.ts +99 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -0
- package/lib/typescript/src/types/message.d.ts +15 -0
- package/lib/typescript/src/types/message.d.ts.map +1 -0
- package/lib/typescript/src/utils/conversation.d.ts +10 -0
- package/lib/typescript/src/utils/conversation.d.ts.map +1 -0
- package/lib/typescript/src/utils/giftedChatMessage.d.ts +10 -0
- package/lib/typescript/src/utils/giftedChatMessage.d.ts.map +1 -0
- package/lib/typescript/src/utils/message.d.ts +15 -0
- package/lib/typescript/src/utils/message.d.ts.map +1 -0
- package/lib/typescript/src/utils/resolveMessageType.d.ts +4 -0
- package/lib/typescript/src/utils/resolveMessageType.d.ts.map +1 -0
- package/package.json +209 -0
- package/src/assets/images/icon_bot.png +0 -0
- package/src/assets/images/index.ts +7 -0
- package/src/assets/images/tag_bot.png +0 -0
- package/src/assets/images/tag_mall.png +0 -0
- package/src/build-ignore.d.ts +24 -0
- package/src/components/Avatar/Avatar.tsx +105 -0
- package/src/components/Avatar/Avatar.types.ts +17 -0
- package/src/components/Avatar/Avatar.utils.ts +49 -0
- package/src/components/Avatar/AvatarBadge.tsx +29 -0
- package/src/components/Avatar/DoubleAvatar.tsx +89 -0
- package/src/components/Avatar/SingleAvatar.tsx +74 -0
- package/src/components/Avatar/index.ts +5 -0
- package/src/components/ThreadCard/AvatarSection.tsx +42 -0
- package/src/components/ThreadCard/NamePrefixIcon.tsx +45 -0
- package/src/components/ThreadCard/ThreadCard.tsx +145 -0
- package/src/components/ThreadCard/UnreadBadge.tsx +35 -0
- package/src/components/ThreadCard/index.ts +4 -0
- package/src/components/ThreadCard/thread-card.utils.ts +68 -0
- package/src/core/index.ts +10 -0
- package/src/core/useChatListener.ts +85 -0
- package/src/core/useUserListener.ts +86 -0
- package/src/hooks/query-keys.ts +11 -0
- package/src/hooks/useChatMessages.ts +243 -0
- package/src/hooks/useConversationList.ts +57 -0
- package/src/index.tsx +36 -0
- package/src/screens/chat-detail/ChatAttachmentPanel.tsx +142 -0
- package/src/screens/chat-detail/ChatComposer.tsx +412 -0
- package/src/screens/chat-detail/ChatDay.tsx +73 -0
- package/src/screens/chat-detail/ChatDetail.tsx +118 -0
- package/src/screens/chat-detail/ChatDetailHeader.tsx +114 -0
- package/src/screens/chat-detail/ChatList.tsx +187 -0
- package/src/screens/chat-detail/ChatLoadEarlier.tsx +20 -0
- package/src/screens/chat-detail/ChatQuickActions.tsx +108 -0
- package/src/screens/chat-detail/ChatScrollToBottom.tsx +8 -0
- package/src/screens/chat-detail/ChatTextBubble.tsx +73 -0
- package/src/screens/chat-detail/constants.ts +76 -0
- package/src/screens/chat-detail/index.ts +33 -0
- package/src/screens/chat-detail/messages/ChatMessageBubble.tsx +24 -0
- package/src/screens/chat-detail/messages/types.ts +14 -0
- package/src/screens/chat-detail/types.ts +97 -0
- package/src/screens/chat-detail/useChatActionPress.ts +17 -0
- package/src/screens/inbox/Inbox.tsx +164 -0
- package/src/screens/inbox/MessagesTab.tsx +62 -0
- package/src/screens/inbox/index.ts +2 -0
- package/src/services/apis.ts +60 -0
- package/src/services/index.ts +2 -0
- package/src/services/message.ts +61 -0
- package/src/store/conversation.ts +116 -0
- package/src/store/index.ts +3 -0
- package/src/store/storeConfig.ts +19 -0
- package/src/store/user.ts +26 -0
- package/src/translation/index.ts +30 -0
- package/src/translation/resources/i18n.ts +8 -0
- package/src/types/auth.ts +25 -0
- package/src/types/chat.ts +118 -0
- package/src/types/message.ts +17 -0
- package/src/utils/conversation.ts +106 -0
- package/src/utils/giftedChatMessage.ts +137 -0
- package/src/utils/message.ts +136 -0
- package/src/utils/resolveMessageType.ts +49 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
|
|
6
|
+
import { DChatCategory } from "../../types/chat.js";
|
|
7
|
+
import { AvatarSection } from "./AvatarSection.js";
|
|
8
|
+
import { NamePrefixIcon } from "./NamePrefixIcon.js";
|
|
9
|
+
import { UnreadBadge } from "./UnreadBadge.js";
|
|
10
|
+
import { formatTimestamp, getLastMessageText } from "./thread-card.utils.js";
|
|
11
|
+
import Images from "../../assets/images/index.js";
|
|
12
|
+
import { useConversation, useUserStore } from "../../store/index.js";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const ThreadCard = /*#__PURE__*/memo(({
|
|
15
|
+
item,
|
|
16
|
+
onPress
|
|
17
|
+
}) => {
|
|
18
|
+
const {
|
|
19
|
+
peer,
|
|
20
|
+
chatCategory,
|
|
21
|
+
lastMessage,
|
|
22
|
+
unreadCount = 0,
|
|
23
|
+
isMuted,
|
|
24
|
+
pinnedAt,
|
|
25
|
+
applicationType,
|
|
26
|
+
chatType,
|
|
27
|
+
latestMsgSendTime
|
|
28
|
+
} = useConversation(item) ?? {};
|
|
29
|
+
const fullName = peer?.fullName ?? peer?.username ?? '';
|
|
30
|
+
const hasUnread = unreadCount > 0;
|
|
31
|
+
const timestamp = formatTimestamp(latestMsgSendTime ?? lastMessage?.sendTime ?? null);
|
|
32
|
+
const currentUserId = useUserStore(s => s.user?.userID);
|
|
33
|
+
const lastMessageText = getLastMessageText(lastMessage, currentUserId);
|
|
34
|
+
const handlePress = useCallback(event => {
|
|
35
|
+
onPress?.({
|
|
36
|
+
item,
|
|
37
|
+
event
|
|
38
|
+
});
|
|
39
|
+
}, [item, onPress]);
|
|
40
|
+
return /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
41
|
+
row: true,
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
paddingH: "0.75rem",
|
|
44
|
+
paddingV: "0.75rem",
|
|
45
|
+
onPress: handlePress,
|
|
46
|
+
activeOpacity: 0.7,
|
|
47
|
+
children: [/*#__PURE__*/_jsx(AvatarSection, {
|
|
48
|
+
avatar: peer?.avatar ?? null,
|
|
49
|
+
fullName: fullName,
|
|
50
|
+
chatCategory: chatCategory,
|
|
51
|
+
applicationType: applicationType,
|
|
52
|
+
chatType: chatType
|
|
53
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
54
|
+
flex: true,
|
|
55
|
+
marginL: "0.5rem",
|
|
56
|
+
paddingB: 2,
|
|
57
|
+
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
58
|
+
row: true,
|
|
59
|
+
alignItems: "center",
|
|
60
|
+
children: [/*#__PURE__*/_jsx(NamePrefixIcon, {
|
|
61
|
+
chatCategory: chatCategory,
|
|
62
|
+
chatType: chatType
|
|
63
|
+
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
64
|
+
visible: chatCategory === DChatCategory.BIZ_BOT_CRM || chatCategory === DChatCategory.BIZ_BOT_PDP,
|
|
65
|
+
children: /*#__PURE__*/_jsx(KImage.Base, {
|
|
66
|
+
uri: Images.ICON_BOT,
|
|
67
|
+
size: 14,
|
|
68
|
+
style: styles.botIcon
|
|
69
|
+
})
|
|
70
|
+
}), /*#__PURE__*/_jsx(KLabel.Text, {
|
|
71
|
+
typo: hasUnread ? 'TextMdBold' : 'TextMdNormal',
|
|
72
|
+
numberOfLines: 1,
|
|
73
|
+
color: KColors.black,
|
|
74
|
+
flex: true,
|
|
75
|
+
children: fullName
|
|
76
|
+
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
77
|
+
visible: !!isMuted,
|
|
78
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
79
|
+
marginL: "0.25rem",
|
|
80
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
81
|
+
name: "bell-off",
|
|
82
|
+
provider: "MaterialCommunityIcons",
|
|
83
|
+
size: 16,
|
|
84
|
+
color: KColors.palette.gray.w500
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
88
|
+
visible: Boolean(timestamp),
|
|
89
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
90
|
+
typo: "TextXsNormal",
|
|
91
|
+
color: KColors.palette.gray.w400,
|
|
92
|
+
marginL: "0.25rem",
|
|
93
|
+
children: timestamp
|
|
94
|
+
})
|
|
95
|
+
})]
|
|
96
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
97
|
+
row: true,
|
|
98
|
+
alignItems: "center",
|
|
99
|
+
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
100
|
+
typo: hasUnread ? 'TextNmMedium' : 'TextNmNormal',
|
|
101
|
+
color: hasUnread ? KColors.black : KColors.gray.normal,
|
|
102
|
+
numberOfLines: 1,
|
|
103
|
+
flex: true,
|
|
104
|
+
children: lastMessageText
|
|
105
|
+
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
106
|
+
visible: Boolean(pinnedAt),
|
|
107
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
108
|
+
marginL: "0.5rem",
|
|
109
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
110
|
+
name: "pin-outline",
|
|
111
|
+
provider: "MaterialCommunityIcons",
|
|
112
|
+
size: 14,
|
|
113
|
+
color: KColors.palette.gray.w400
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
}), /*#__PURE__*/_jsx(UnreadBadge, {
|
|
117
|
+
count: unreadCount
|
|
118
|
+
})]
|
|
119
|
+
})]
|
|
120
|
+
})]
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
ThreadCard.displayName = 'ThreadCard';
|
|
124
|
+
export default ThreadCard;
|
|
125
|
+
const styles = StyleSheet.create({
|
|
126
|
+
botIcon: {
|
|
127
|
+
width: 16,
|
|
128
|
+
height: 16,
|
|
129
|
+
marginRight: 4
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=ThreadCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","StyleSheet","KContainer","KImage","KLabel","KColors","DChatCategory","AvatarSection","NamePrefixIcon","UnreadBadge","formatTimestamp","getLastMessageText","Images","useConversation","useUserStore","jsx","_jsx","jsxs","_jsxs","ThreadCard","item","onPress","peer","chatCategory","lastMessage","unreadCount","isMuted","pinnedAt","applicationType","chatType","latestMsgSendTime","fullName","username","hasUnread","timestamp","sendTime","currentUserId","s","user","userID","lastMessageText","handlePress","event","Touchable","row","alignItems","paddingH","paddingV","activeOpacity","children","avatar","View","flex","marginL","paddingB","VisibleView","visible","BIZ_BOT_CRM","BIZ_BOT_PDP","Base","uri","ICON_BOT","size","style","styles","botIcon","Text","typo","numberOfLines","color","black","VectorIcons","name","provider","palette","gray","w500","Boolean","w400","normal","count","displayName","create","width","height","marginRight"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/ThreadCard.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,UAAU,QAAoC,cAAc;AACrE,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AACnE,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,wBAAqB;AACzE,OAAOC,MAAM,MAAM,8BAAqB;AACxC,SAASC,eAAe,EAAEC,YAAY,QAAQ,sBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAO5D,MAAMC,UAAU,gBAAGpB,IAAI,CAAC,CAAC;EAAEqB,IAAI;EAAEC;AAAyB,CAAC,KAAK;EAC9D,MAAM;IACJC,IAAI;IACJC,YAAY;IACZC,WAAW;IACXC,WAAW,GAAG,CAAC;IACfC,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,QAAQ;IACRC;EACF,CAAC,GAAGjB,eAAe,CAACO,IAAI,CAAC,IAAI,CAAC,CAAC;EAE/B,MAAMW,QAAQ,GAAGT,IAAI,EAAES,QAAQ,IAAIT,IAAI,EAAEU,QAAQ,IAAI,EAAE;EACvD,MAAMC,SAAS,GAAGR,WAAW,GAAG,CAAC;EACjC,MAAMS,SAAS,GAAGxB,eAAe,CAC/BoB,iBAAiB,IAAIN,WAAW,EAAEW,QAAQ,IAAI,IAChD,CAAC;EACD,MAAMC,aAAa,GAAGtB,YAAY,CAAEuB,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAEC,MAAM,CAAC;EACzD,MAAMC,eAAe,GAAG7B,kBAAkB,CAACa,WAAW,EAAEY,aAAa,CAAC;EAEtE,MAAMK,WAAW,GAAGzC,WAAW,CAC5B0C,KAA4B,IAAK;IAChCrB,OAAO,GAAG;MAAED,IAAI;MAAEsB;IAAM,CAAC,CAAC;EAC5B,CAAC,EACD,CAACtB,IAAI,EAAEC,OAAO,CAChB,CAAC;EAED,oBACEH,KAAA,CAAChB,UAAU,CAACyC,SAAS;IACnBC,GAAG;IACHC,UAAU,EAAC,QAAQ;IACnBC,QAAQ,EAAC,SAAS;IAClBC,QAAQ,EAAC,SAAS;IAClB1B,OAAO,EAAEoB,WAAY;IACrBO,aAAa,EAAE,GAAI;IAAAC,QAAA,gBAEnBjC,IAAA,CAACT,aAAa;MACZ2C,MAAM,EAAE5B,IAAI,EAAE4B,MAAM,IAAI,IAAK;MAC7BnB,QAAQ,EAAEA,QAAS;MACnBR,YAAY,EAAEA,YAAa;MAC3BK,eAAe,EAAEA,eAAgB;MACjCC,QAAQ,EAAEA;IAAS,CACpB,CAAC,eAGFX,KAAA,CAAChB,UAAU,CAACiD,IAAI;MAACC,IAAI;MAACC,OAAO,EAAC,QAAQ;MAACC,QAAQ,EAAE,CAAE;MAAAL,QAAA,gBAEjD/B,KAAA,CAAChB,UAAU,CAACiD,IAAI;QAACP,GAAG;QAACC,UAAU,EAAC,QAAQ;QAAAI,QAAA,gBACtCjC,IAAA,CAACR,cAAc;UAACe,YAAY,EAAEA,YAAa;UAACM,QAAQ,EAAEA;QAAS,CAAE,CAAC,eAClEb,IAAA,CAACd,UAAU,CAACqD,WAAW;UACrBC,OAAO,EACLjC,YAAY,KAAKjB,aAAa,CAACmD,WAAW,IAC1ClC,YAAY,KAAKjB,aAAa,CAACoD,WAChC;UAAAT,QAAA,eAEDjC,IAAA,CAACb,MAAM,CAACwD,IAAI;YACVC,GAAG,EAAEhD,MAAM,CAACiD,QAAS;YACrBC,IAAI,EAAE,EAAG;YACTC,KAAK,EAAEC,MAAM,CAACC;UAAQ,CACvB;QAAC,CACoB,CAAC,eACzBjD,IAAA,CAACZ,MAAM,CAAC8D,IAAI;UACVC,IAAI,EAAElC,SAAS,GAAG,YAAY,GAAG,cAAe;UAChDmC,aAAa,EAAE,CAAE;UACjBC,KAAK,EAAEhE,OAAO,CAACiE,KAAM;UACrBlB,IAAI;UAAAH,QAAA,EAEHlB;QAAQ,CACE,CAAC,eACdf,IAAA,CAACd,UAAU,CAACqD,WAAW;UAACC,OAAO,EAAE,CAAC,CAAC9B,OAAQ;UAAAuB,QAAA,eACzCjC,IAAA,CAACd,UAAU,CAACiD,IAAI;YAACE,OAAO,EAAC,SAAS;YAAAJ,QAAA,eAChCjC,IAAA,CAACb,MAAM,CAACoE,WAAW;cACjBC,IAAI,EAAC,UAAU;cACfC,QAAQ,EAAC,wBAAwB;cACjCX,IAAI,EAAE,EAAG;cACTO,KAAK,EAAEhE,OAAO,CAACqE,OAAO,CAACC,IAAI,CAACC;YAAK,CAClC;UAAC,CACa;QAAC,CACI,CAAC,eACzB5D,IAAA,CAACd,UAAU,CAACqD,WAAW;UAACC,OAAO,EAAEqB,OAAO,CAAC3C,SAAS,CAAE;UAAAe,QAAA,eAClDjC,IAAA,CAACZ,MAAM,CAAC8D,IAAI;YACVC,IAAI,EAAC,cAAc;YACnBE,KAAK,EAAEhE,OAAO,CAACqE,OAAO,CAACC,IAAI,CAACG,IAAK;YACjCzB,OAAO,EAAC,SAAS;YAAAJ,QAAA,EAEhBf;UAAS,CACC;QAAC,CACQ,CAAC;MAAA,CACV,CAAC,eAGlBhB,KAAA,CAAChB,UAAU,CAACiD,IAAI;QAACP,GAAG;QAACC,UAAU,EAAC,QAAQ;QAAAI,QAAA,gBACtCjC,IAAA,CAACZ,MAAM,CAAC8D,IAAI;UACVC,IAAI,EAAElC,SAAS,GAAG,cAAc,GAAG,cAAe;UAClDoC,KAAK,EAAEpC,SAAS,GAAG5B,OAAO,CAACiE,KAAK,GAAGjE,OAAO,CAACsE,IAAI,CAACI,MAAO;UACvDX,aAAa,EAAE,CAAE;UACjBhB,IAAI;UAAAH,QAAA,EAEHT;QAAe,CACL,CAAC,eACdxB,IAAA,CAACd,UAAU,CAACqD,WAAW;UAACC,OAAO,EAAEqB,OAAO,CAAClD,QAAQ,CAAE;UAAAsB,QAAA,eACjDjC,IAAA,CAACd,UAAU,CAACiD,IAAI;YAACE,OAAO,EAAC,QAAQ;YAAAJ,QAAA,eAC/BjC,IAAA,CAACb,MAAM,CAACoE,WAAW;cACjBC,IAAI,EAAC,aAAa;cAClBC,QAAQ,EAAC,wBAAwB;cACjCX,IAAI,EAAE,EAAG;cACTO,KAAK,EAAEhE,OAAO,CAACqE,OAAO,CAACC,IAAI,CAACG;YAAK,CAClC;UAAC,CACa;QAAC,CACI,CAAC,eACzB9D,IAAA,CAACP,WAAW;UAACuE,KAAK,EAAEvD;QAAY,CAAE,CAAC;MAAA,CACpB,CAAC;IAAA,CACH,CAAC;EAAA,CACE,CAAC;AAE3B,CAAC,CAAC;AAEFN,UAAU,CAAC8D,WAAW,GAAG,YAAY;AAErC,eAAe9D,UAAU;AAEzB,MAAM6C,MAAM,GAAG/D,UAAU,CAACiF,MAAM,CAAC;EAC/BjB,OAAO,EAAE;IACPkB,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE;EACf;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KLabel, KColors } from '@droppii/libs';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const UnreadBadge = /*#__PURE__*/memo(({
|
|
8
|
+
count
|
|
9
|
+
}) => {
|
|
10
|
+
if (count <= 0) return null;
|
|
11
|
+
const label = count > 99 ? '99+' : String(count);
|
|
12
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
13
|
+
center: true,
|
|
14
|
+
marginL: "0.5rem",
|
|
15
|
+
style: styles.badge,
|
|
16
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
17
|
+
typo: "Text2XsBold",
|
|
18
|
+
color: KColors.white,
|
|
19
|
+
children: label
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
UnreadBadge.displayName = 'UnreadBadge';
|
|
24
|
+
const styles = StyleSheet.create({
|
|
25
|
+
badge: {
|
|
26
|
+
minWidth: 19,
|
|
27
|
+
height: 19,
|
|
28
|
+
borderRadius: 32,
|
|
29
|
+
paddingHorizontal: 3,
|
|
30
|
+
backgroundColor: KColors.palette.danger.w400,
|
|
31
|
+
borderWidth: 2,
|
|
32
|
+
borderColor: KColors.white
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=UnreadBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","StyleSheet","KContainer","KLabel","KColors","jsx","_jsx","UnreadBadge","count","label","String","View","center","marginL","style","styles","badge","children","Text","typo","color","white","displayName","create","minWidth","height","borderRadius","paddingHorizontal","backgroundColor","palette","danger","w400","borderWidth","borderColor"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/UnreadBadge.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM5D,OAAO,MAAMC,WAAW,gBAAGP,IAAI,CAAC,CAAC;EAAEQ;AAAwB,CAAC,KAAK;EAC/D,IAAIA,KAAK,IAAI,CAAC,EAAE,OAAO,IAAI;EAE3B,MAAMC,KAAK,GAAGD,KAAK,GAAG,EAAE,GAAG,KAAK,GAAGE,MAAM,CAACF,KAAK,CAAC;EAEhD,oBACEF,IAAA,CAACJ,UAAU,CAACS,IAAI;IAACC,MAAM;IAACC,OAAO,EAAC,QAAQ;IAACC,KAAK,EAAEC,MAAM,CAACC,KAAM;IAAAC,QAAA,eAC3DX,IAAA,CAACH,MAAM,CAACe,IAAI;MAACC,IAAI,EAAC,aAAa;MAACC,KAAK,EAAEhB,OAAO,CAACiB,KAAM;MAAAJ,QAAA,EAClDR;IAAK,CACK;EAAC,CACC,CAAC;AAEtB,CAAC,CAAC;AAEFF,WAAW,CAACe,WAAW,GAAG,aAAa;AAEvC,MAAMP,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,KAAK,EAAE;IACLQ,QAAQ,EAAE,EAAE;IACZC,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE,EAAE;IAChBC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAExB,OAAO,CAACyB,OAAO,CAACC,MAAM,CAACC,IAAI;IAC5CC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE7B,OAAO,CAACiB;EACvB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { default as ThreadCard } from "./ThreadCard.js";
|
|
4
|
+
export { AvatarSection } from "./AvatarSection.js";
|
|
5
|
+
export { NamePrefixIcon } from "./NamePrefixIcon.js";
|
|
6
|
+
export { UnreadBadge } from "./UnreadBadge.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["default","ThreadCard","AvatarSection","NamePrefixIcon","UnreadBadge"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/index.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,UAAU,QAAQ,iBAAc;AACpD,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,WAAW,QAAQ,kBAAe","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
const extractTextContent = message => {
|
|
5
|
+
if (message.textElem?.content) return message.textElem.content;
|
|
6
|
+
try {
|
|
7
|
+
const parsed = JSON.parse(message.content);
|
|
8
|
+
return parsed.content ?? '';
|
|
9
|
+
} catch {
|
|
10
|
+
return message.content ?? '';
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export const getLastMessageText = (message, currentUserId) => {
|
|
14
|
+
if (!message) return '';
|
|
15
|
+
if (message.contentType !== MessageType.TextMessage) return '';
|
|
16
|
+
const text = extractTextContent(message);
|
|
17
|
+
if (currentUserId && message.sendID === currentUserId) {
|
|
18
|
+
return `Bạn: ${text}`;
|
|
19
|
+
}
|
|
20
|
+
return text;
|
|
21
|
+
};
|
|
22
|
+
export const formatTimestamp = ts => {
|
|
23
|
+
if (!ts) return '';
|
|
24
|
+
try {
|
|
25
|
+
const date = new Date(ts);
|
|
26
|
+
if (isNaN(date.getTime())) return '';
|
|
27
|
+
const now = new Date();
|
|
28
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
29
|
+
const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
|
|
30
|
+
const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
31
|
+
if (dateOnly.getTime() === today.getTime()) {
|
|
32
|
+
const h = date.getHours().toString().padStart(2, '0');
|
|
33
|
+
const m = date.getMinutes().toString().padStart(2, '0');
|
|
34
|
+
return `${h}:${m}`;
|
|
35
|
+
}
|
|
36
|
+
if (dateOnly.getTime() === yesterday.getTime()) {
|
|
37
|
+
return 'Hôm qua';
|
|
38
|
+
}
|
|
39
|
+
const daysAgo = Math.floor((today.getTime() - dateOnly.getTime()) / (24 * 60 * 60 * 1000));
|
|
40
|
+
if (daysAgo > 0 && daysAgo < 7) {
|
|
41
|
+
const dayNames = ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'];
|
|
42
|
+
return dayNames[date.getDay()] ?? '';
|
|
43
|
+
}
|
|
44
|
+
const d = date.getDate().toString().padStart(2, '0');
|
|
45
|
+
const mo = (date.getMonth() + 1).toString().padStart(2, '0');
|
|
46
|
+
return `${d}/${mo}`;
|
|
47
|
+
} catch {
|
|
48
|
+
return '';
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=thread-card.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MessageType","extractTextContent","message","textElem","content","parsed","JSON","parse","getLastMessageText","currentUserId","contentType","TextMessage","text","sendID","formatTimestamp","ts","date","Date","isNaN","getTime","now","today","getFullYear","getMonth","getDate","yesterday","dateOnly","h","getHours","toString","padStart","m","getMinutes","daysAgo","Math","floor","dayNames","getDay","d","mo"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/thread-card.utils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import OpenIMSDK from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
import { useUserListener } from "./useUserListener.js";
|
|
5
|
+
import { useChatListener } from "./useChatListener.js";
|
|
6
|
+
export const initChatSdk = OpenIMSDK.initSDK.bind(OpenIMSDK);
|
|
7
|
+
export const useChatSdk = () => {
|
|
8
|
+
useUserListener();
|
|
9
|
+
useChatListener();
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","useUserListener","useChatListener","initChatSdk","initSDK","bind","useChatSdk"],"sourceRoot":"../../../src","sources":["core/index.ts"],"mappings":";;AAAA,OAAOA,SAAS,MAAM,+BAA+B;AACrD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,eAAe,QAAQ,sBAAmB;AAEnD,OAAO,MAAMC,WAAW,GAAGH,SAAS,CAACI,OAAO,CAACC,IAAI,CAACL,SAAS,CAAC;AAE5D,OAAO,MAAMM,UAAU,GAAGA,CAAA,KAAM;EAC9BL,eAAe,CAAC,CAAC;EACjBC,eAAe,CAAC,CAAC;AACnB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import OpenIMSDK, { OpenIMEvent } from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
import { useCallback, useEffect } from 'react';
|
|
5
|
+
import { useConversationStore } from "../store/conversation.js";
|
|
6
|
+
import { getConversationID } from "../utils/conversation.js";
|
|
7
|
+
export const useChatListener = () => {
|
|
8
|
+
const onRecvNewMessages = useCallback(messages => {
|
|
9
|
+
console.log('onRecvNewMessages', messages);
|
|
10
|
+
messages.map(message => {
|
|
11
|
+
const conversationID = getConversationID(message.sessionType, message.sendID, message.recvID);
|
|
12
|
+
useConversationStore.getState().updateLastMessage(conversationID, message);
|
|
13
|
+
});
|
|
14
|
+
}, []);
|
|
15
|
+
const onNewRecvMessageRevoked = useCallback(revokedInfo => {
|
|
16
|
+
console.log('onNewRecvMessageRevoked', revokedInfo);
|
|
17
|
+
}, []);
|
|
18
|
+
const onConversationChanged = useCallback(conversations => {
|
|
19
|
+
console.log('onConversationChanged', conversations);
|
|
20
|
+
useConversationStore.getState().mergeOpenIMConversations(conversations);
|
|
21
|
+
}, []);
|
|
22
|
+
const onNewConversation = useCallback(conversations => {
|
|
23
|
+
console.log('onNewConversation', conversations);
|
|
24
|
+
// mergeOpenIMConversations increments newConversationSignal when a conversation
|
|
25
|
+
// isn't in the store yet, which triggers a full refetch in useConversationList.
|
|
26
|
+
useConversationStore.getState().mergeOpenIMConversations(conversations);
|
|
27
|
+
}, []);
|
|
28
|
+
const onGroupMemberAdded = useCallback(member => {
|
|
29
|
+
console.log('onGroupMemberAdded', member);
|
|
30
|
+
}, []);
|
|
31
|
+
const onGroupMemberDeleted = useCallback(member => {
|
|
32
|
+
console.log('onGroupMemberDeleted', member);
|
|
33
|
+
}, []);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
// Message
|
|
36
|
+
OpenIMSDK.on(OpenIMEvent.OnRecvNewMessages, onRecvNewMessages);
|
|
37
|
+
OpenIMSDK.on(OpenIMEvent.OnNewRecvMessageRevoked, onNewRecvMessageRevoked);
|
|
38
|
+
|
|
39
|
+
// Conversation
|
|
40
|
+
OpenIMSDK.on(OpenIMEvent.OnConversationChanged, onConversationChanged);
|
|
41
|
+
OpenIMSDK.on(OpenIMEvent.OnNewConversation, onNewConversation);
|
|
42
|
+
|
|
43
|
+
// Group members
|
|
44
|
+
OpenIMSDK.on(OpenIMEvent.OnGroupMemberAdded, onGroupMemberAdded);
|
|
45
|
+
OpenIMSDK.on(OpenIMEvent.OnGroupMemberDeleted, onGroupMemberDeleted);
|
|
46
|
+
return () => {
|
|
47
|
+
// Message
|
|
48
|
+
OpenIMSDK.off(OpenIMEvent.OnRecvNewMessages, onRecvNewMessages);
|
|
49
|
+
OpenIMSDK.off(OpenIMEvent.OnNewRecvMessageRevoked, onNewRecvMessageRevoked);
|
|
50
|
+
|
|
51
|
+
// Conversation
|
|
52
|
+
OpenIMSDK.off(OpenIMEvent.OnConversationChanged, onConversationChanged);
|
|
53
|
+
OpenIMSDK.off(OpenIMEvent.OnNewConversation, onNewConversation);
|
|
54
|
+
|
|
55
|
+
// Group members
|
|
56
|
+
OpenIMSDK.off(OpenIMEvent.OnGroupMemberAdded, onGroupMemberAdded);
|
|
57
|
+
OpenIMSDK.off(OpenIMEvent.OnGroupMemberDeleted, onGroupMemberDeleted);
|
|
58
|
+
};
|
|
59
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
60
|
+
}, []);
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=useChatListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","OpenIMEvent","useCallback","useEffect","useConversationStore","getConversationID","useChatListener","onRecvNewMessages","messages","console","log","map","message","conversationID","sessionType","sendID","recvID","getState","updateLastMessage","onNewRecvMessageRevoked","revokedInfo","onConversationChanged","conversations","mergeOpenIMConversations","onNewConversation","onGroupMemberAdded","member","onGroupMemberDeleted","on","OnRecvNewMessages","OnNewRecvMessageRevoked","OnConversationChanged","OnNewConversation","OnGroupMemberAdded","OnGroupMemberDeleted","off"],"sourceRoot":"../../../src","sources":["core/useChatListener.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import OpenIMSDK, { LoginStatus, OpenIMEvent } from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
import { useCallback, useEffect } from 'react';
|
|
5
|
+
import { useUserStore } from "../store/index.js";
|
|
6
|
+
import { SyncStatus } from "../types/auth.js";
|
|
7
|
+
import { ChatAPI } from "../services/index.js";
|
|
8
|
+
export const useUserListener = () => {
|
|
9
|
+
const isLoggedIn = useUserStore(state => state.connectStatus === LoginStatus.Logged);
|
|
10
|
+
const fetchAndUpdateUser = useCallback(async () => {
|
|
11
|
+
try {
|
|
12
|
+
const user = await ChatAPI.getUser();
|
|
13
|
+
useUserStore.getState().setUser(user);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
console.error('OpenIM get user failed', error);
|
|
16
|
+
}
|
|
17
|
+
}, []);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
ChatAPI.getLoginStatus().then(value => {
|
|
20
|
+
if (value) {
|
|
21
|
+
useUserStore.getState().updateConnectStatus(LoginStatus.Logged);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}, []);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (isLoggedIn) {
|
|
27
|
+
fetchAndUpdateUser();
|
|
28
|
+
}
|
|
29
|
+
}, [isLoggedIn, fetchAndUpdateUser]);
|
|
30
|
+
const onConnecting = useCallback(() => {
|
|
31
|
+
useUserStore.getState().updateConnectStatus(LoginStatus.Logging);
|
|
32
|
+
}, []);
|
|
33
|
+
const onConnectSuccess = useCallback(() => {
|
|
34
|
+
useUserStore.getState().updateConnectStatus(LoginStatus.Logged);
|
|
35
|
+
}, []);
|
|
36
|
+
const onConnectFailed = useCallback(() => {
|
|
37
|
+
useUserStore.getState().updateConnectStatus(LoginStatus.Logout);
|
|
38
|
+
}, []);
|
|
39
|
+
const onSyncServerStart = useCallback(() => {
|
|
40
|
+
useUserStore.getState().updateSyncStatus(SyncStatus.Loading);
|
|
41
|
+
}, []);
|
|
42
|
+
const onSyncServerFinish = useCallback(() => {
|
|
43
|
+
useUserStore.getState().updateSyncStatus(SyncStatus.Success);
|
|
44
|
+
}, []);
|
|
45
|
+
const onSyncServerFailed = useCallback(() => {
|
|
46
|
+
useUserStore.getState().updateSyncStatus(SyncStatus.Failed);
|
|
47
|
+
}, []);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
// User
|
|
50
|
+
OpenIMSDK.on(OpenIMEvent.OnConnecting, onConnecting);
|
|
51
|
+
OpenIMSDK.on(OpenIMEvent.OnConnectSuccess, onConnectSuccess);
|
|
52
|
+
OpenIMSDK.on(OpenIMEvent.OnConnectFailed, onConnectFailed);
|
|
53
|
+
|
|
54
|
+
// Sync
|
|
55
|
+
OpenIMSDK.on(OpenIMEvent.OnSyncServerStart, onSyncServerStart);
|
|
56
|
+
OpenIMSDK.on(OpenIMEvent.OnSyncServerFinish, onSyncServerFinish);
|
|
57
|
+
OpenIMSDK.on(OpenIMEvent.OnSyncServerFailed, onSyncServerFailed);
|
|
58
|
+
return () => {
|
|
59
|
+
// User
|
|
60
|
+
OpenIMSDK.off(OpenIMEvent.OnConnecting, onConnecting);
|
|
61
|
+
OpenIMSDK.off(OpenIMEvent.OnConnectSuccess, onConnectSuccess);
|
|
62
|
+
OpenIMSDK.off(OpenIMEvent.OnConnectFailed, onConnectFailed);
|
|
63
|
+
|
|
64
|
+
// Sync
|
|
65
|
+
OpenIMSDK.off(OpenIMEvent.OnSyncServerStart, onSyncServerStart);
|
|
66
|
+
OpenIMSDK.off(OpenIMEvent.OnSyncServerFinish, onSyncServerFinish);
|
|
67
|
+
OpenIMSDK.off(OpenIMEvent.OnSyncServerFailed, onSyncServerFailed);
|
|
68
|
+
};
|
|
69
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
|
+
}, []);
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=useUserListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","LoginStatus","OpenIMEvent","useCallback","useEffect","useUserStore","SyncStatus","ChatAPI","useUserListener","isLoggedIn","state","connectStatus","Logged","fetchAndUpdateUser","user","getUser","getState","setUser","error","console","getLoginStatus","then","value","updateConnectStatus","onConnecting","Logging","onConnectSuccess","onConnectFailed","Logout","onSyncServerStart","updateSyncStatus","Loading","onSyncServerFinish","Success","onSyncServerFailed","Failed","on","OnConnecting","OnConnectSuccess","OnConnectFailed","OnSyncServerStart","OnSyncServerFinish","OnSyncServerFailed","off"],"sourceRoot":"../../../src","sources":["core/useUserListener.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export const conversationQueryKeys = {
|
|
4
|
+
all: ['conversations'],
|
|
5
|
+
lists: () => [...conversationQueryKeys.all, 'list'],
|
|
6
|
+
list: applicationType => [...conversationQueryKeys.lists(), applicationType],
|
|
7
|
+
details: () => [...conversationQueryKeys.all, 'detail'],
|
|
8
|
+
detail: conversationId => [...conversationQueryKeys.details(), conversationId]
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=query-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["conversationQueryKeys","all","lists","list","applicationType","details","detail","conversationId"],"sourceRoot":"../../../src","sources":["hooks/query-keys.ts"],"mappings":";;AAAA,OAAO,MAAMA,qBAAqB,GAAG;EACnCC,GAAG,EAAE,CAAC,eAAe,CAAU;EAC/BC,KAAK,EAAEA,CAAA,KAAM,CAAC,GAAGF,qBAAqB,CAACC,GAAG,EAAE,MAAM,CAAU;EAC5DE,IAAI,EAAGC,eAAuB,IAC5B,CAAC,GAAGJ,qBAAqB,CAACE,KAAK,CAAC,CAAC,EAAEE,eAAe,CAAU;EAC9DC,OAAO,EAAEA,CAAA,KAAM,CAAC,GAAGL,qBAAqB,CAACC,GAAG,EAAE,QAAQ,CAAU;EAChEK,MAAM,EAAGC,cAAsB,IAC7B,CAAC,GAAGP,qBAAqB,CAACK,OAAO,CAAC,CAAC,EAAEE,cAAc;AACvD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import OpenIMSDK, { OpenIMEvent } from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { ChatMessageAPI } from "../services/message.js";
|
|
6
|
+
import { belongsToConversation, getHistoryPaginationAnchor, hasNewHistoryMessages, mergeMessages } from "../utils/message.js";
|
|
7
|
+
export function useChatMessages({
|
|
8
|
+
conversationId,
|
|
9
|
+
recvID = '',
|
|
10
|
+
groupID = '',
|
|
11
|
+
enabled = true,
|
|
12
|
+
pageSize = 20
|
|
13
|
+
}) {
|
|
14
|
+
const [messages, setMessages] = useState([]);
|
|
15
|
+
const [currentUserId, setCurrentUserId] = useState();
|
|
16
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
17
|
+
const [isLoadingEarlier, setIsLoadingEarlier] = useState(false);
|
|
18
|
+
const [hasMoreEarlier, setHasMoreEarlier] = useState(false);
|
|
19
|
+
const [error, setError] = useState(null);
|
|
20
|
+
const conversationIdRef = useRef(conversationId);
|
|
21
|
+
conversationIdRef.current = conversationId;
|
|
22
|
+
const isLoadingEarlierRef = useRef(false);
|
|
23
|
+
const messagesRef = useRef(messages);
|
|
24
|
+
const hasMoreEarlierRef = useRef(hasMoreEarlier);
|
|
25
|
+
const historyAnchorRef = useRef(null);
|
|
26
|
+
messagesRef.current = messages;
|
|
27
|
+
hasMoreEarlierRef.current = hasMoreEarlier;
|
|
28
|
+
const resetState = useCallback(() => {
|
|
29
|
+
setMessages([]);
|
|
30
|
+
setHasMoreEarlier(false);
|
|
31
|
+
setError(null);
|
|
32
|
+
isLoadingEarlierRef.current = false;
|
|
33
|
+
historyAnchorRef.current = null;
|
|
34
|
+
}, []);
|
|
35
|
+
const loadInitialMessages = useCallback(async () => {
|
|
36
|
+
if (!conversationId) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setIsLoading(true);
|
|
40
|
+
setError(null);
|
|
41
|
+
try {
|
|
42
|
+
const [history, userId] = await Promise.all([ChatMessageAPI.fetchHistoryMessages(conversationId, {
|
|
43
|
+
count: pageSize
|
|
44
|
+
}), ChatMessageAPI.getCurrentUserId()]);
|
|
45
|
+
const initialMessages = history.messageList;
|
|
46
|
+
const oldestAnchor = getHistoryPaginationAnchor(initialMessages);
|
|
47
|
+
setCurrentUserId(userId);
|
|
48
|
+
setMessages(mergeMessages([], initialMessages));
|
|
49
|
+
historyAnchorRef.current = oldestAnchor ? {
|
|
50
|
+
clientMsgID: oldestAnchor.clientMsgID
|
|
51
|
+
// lastMinSeq: resolveHistoryLastMinSeq(
|
|
52
|
+
// history,
|
|
53
|
+
// initialMessages.find(
|
|
54
|
+
// (message) => message.clientMsgID === oldestAnchor.clientMsgID
|
|
55
|
+
// )
|
|
56
|
+
// ),
|
|
57
|
+
} : null;
|
|
58
|
+
setHasMoreEarlier(!history.isEnd && !!oldestAnchor);
|
|
59
|
+
ChatMessageAPI.markConversationAsRead(conversationId).catch(() => undefined);
|
|
60
|
+
} catch (err) {
|
|
61
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
62
|
+
} finally {
|
|
63
|
+
setIsLoading(false);
|
|
64
|
+
}
|
|
65
|
+
}, [conversationId, pageSize]);
|
|
66
|
+
const onLoadEarlier = useCallback(async () => {
|
|
67
|
+
if (!conversationId || isLoadingEarlierRef.current || !hasMoreEarlierRef.current || !messagesRef.current.length) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
isLoadingEarlierRef.current = true;
|
|
71
|
+
setIsLoadingEarlier(true);
|
|
72
|
+
setError(null);
|
|
73
|
+
const anchor = historyAnchorRef.current;
|
|
74
|
+
if (!anchor?.clientMsgID) {
|
|
75
|
+
isLoadingEarlierRef.current = false;
|
|
76
|
+
setIsLoadingEarlier(false);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const history = await ChatMessageAPI.fetchHistoryMessages(conversationId, {
|
|
81
|
+
count: pageSize,
|
|
82
|
+
startClientMsgID: anchor.clientMsgID
|
|
83
|
+
});
|
|
84
|
+
const incoming = history.messageList;
|
|
85
|
+
const hasNewMessages = hasNewHistoryMessages(messagesRef.current, incoming);
|
|
86
|
+
if (hasNewMessages) {
|
|
87
|
+
setMessages(current => mergeMessages(current, incoming));
|
|
88
|
+
}
|
|
89
|
+
const nextAnchor = getHistoryPaginationAnchor(incoming);
|
|
90
|
+
historyAnchorRef.current = nextAnchor ? {
|
|
91
|
+
clientMsgID: nextAnchor.clientMsgID
|
|
92
|
+
// lastMinSeq: resolveHistoryLastMinSeq(
|
|
93
|
+
// history,
|
|
94
|
+
// incoming.find(
|
|
95
|
+
// (message) => message.clientMsgID === nextAnchor.clientMsgID
|
|
96
|
+
// )
|
|
97
|
+
// ),
|
|
98
|
+
} : null;
|
|
99
|
+
setHasMoreEarlier(!history.isEnd && hasNewMessages && !!nextAnchor);
|
|
100
|
+
} catch (err) {
|
|
101
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
102
|
+
} finally {
|
|
103
|
+
isLoadingEarlierRef.current = false;
|
|
104
|
+
setIsLoadingEarlier(false);
|
|
105
|
+
}
|
|
106
|
+
}, [conversationId, pageSize]);
|
|
107
|
+
const sendTextMessage = useCallback(async text => {
|
|
108
|
+
const trimmed = text.trim();
|
|
109
|
+
if (!trimmed) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const sentMessage = await ChatMessageAPI.sendTextMessage({
|
|
113
|
+
text: trimmed,
|
|
114
|
+
recvID,
|
|
115
|
+
groupID
|
|
116
|
+
});
|
|
117
|
+
setMessages(current => mergeMessages(current, [sentMessage]));
|
|
118
|
+
}, [groupID, recvID]);
|
|
119
|
+
const appendIncomingMessages = useCallback(incoming => {
|
|
120
|
+
const relevant = incoming.filter(message => belongsToConversation(message, conversationIdRef.current, groupID));
|
|
121
|
+
if (!relevant.length) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
setMessages(current => mergeMessages(current, relevant));
|
|
125
|
+
ChatMessageAPI.markConversationAsRead(conversationIdRef.current).catch(() => undefined);
|
|
126
|
+
}, [groupID]);
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
resetState();
|
|
129
|
+
if (!enabled || !conversationId) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
loadInitialMessages();
|
|
133
|
+
}, [conversationId, enabled, loadInitialMessages, resetState]);
|
|
134
|
+
useEffect(() => {
|
|
135
|
+
if (!enabled || !conversationId) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const handleNewMessages = incoming => {
|
|
139
|
+
appendIncomingMessages(incoming);
|
|
140
|
+
};
|
|
141
|
+
const handleNewMessage = incoming => {
|
|
142
|
+
appendIncomingMessages([incoming]);
|
|
143
|
+
};
|
|
144
|
+
OpenIMSDK.on(OpenIMEvent.OnRecvNewMessages, handleNewMessages);
|
|
145
|
+
OpenIMSDK.on(OpenIMEvent.OnRecvNewMessage, handleNewMessage);
|
|
146
|
+
return () => {
|
|
147
|
+
OpenIMSDK.off(OpenIMEvent.OnRecvNewMessages, handleNewMessages);
|
|
148
|
+
OpenIMSDK.off(OpenIMEvent.OnRecvNewMessage, handleNewMessage);
|
|
149
|
+
};
|
|
150
|
+
}, [appendIncomingMessages, conversationId, enabled]);
|
|
151
|
+
return {
|
|
152
|
+
messages,
|
|
153
|
+
currentUserId,
|
|
154
|
+
isLoading,
|
|
155
|
+
isLoadingEarlier,
|
|
156
|
+
hasMoreEarlier,
|
|
157
|
+
error,
|
|
158
|
+
onLoadEarlier,
|
|
159
|
+
sendTextMessage,
|
|
160
|
+
refresh: loadInitialMessages
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=useChatMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","OpenIMEvent","useCallback","useEffect","useRef","useState","ChatMessageAPI","belongsToConversation","getHistoryPaginationAnchor","hasNewHistoryMessages","mergeMessages","useChatMessages","conversationId","recvID","groupID","enabled","pageSize","messages","setMessages","currentUserId","setCurrentUserId","isLoading","setIsLoading","isLoadingEarlier","setIsLoadingEarlier","hasMoreEarlier","setHasMoreEarlier","error","setError","conversationIdRef","current","isLoadingEarlierRef","messagesRef","hasMoreEarlierRef","historyAnchorRef","resetState","loadInitialMessages","history","userId","Promise","all","fetchHistoryMessages","count","getCurrentUserId","initialMessages","messageList","oldestAnchor","clientMsgID","isEnd","markConversationAsRead","catch","undefined","err","Error","String","onLoadEarlier","length","anchor","startClientMsgID","incoming","hasNewMessages","nextAnchor","sendTextMessage","text","trimmed","trim","sentMessage","appendIncomingMessages","relevant","filter","message","handleNewMessages","handleNewMessage","on","OnRecvNewMessages","OnRecvNewMessage","off","refresh"],"sourceRoot":"../../../src","sources":["hooks/useChatMessages.ts"],"mappings":"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","ignoreList":[]}
|