@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
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 droppii
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# @droppii/chat-mobile
|
|
2
|
+
|
|
3
|
+
Droppii chat mobile
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm install @droppii/chat-mobile
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
### Installation dependencies
|
|
16
|
+
|
|
17
|
+
`@droppii/chat-mobile` requires the following peer dependencies:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
npm install react-native-fs
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
> `react-native-fs` is used to resolve the local path for `dataDir` and `logFilePath`.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
### `initChatSdk(options)`
|
|
28
|
+
|
|
29
|
+
Khởi tạo Chat SDK. Gọi hàm này **một lần duy nhất** khi ứng dụng khởi động, **trước khi** render bất kỳ component nào sử dụng tính năng chat.
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import { initChatSdk } from '@droppii/chat-mobile';
|
|
33
|
+
import RNFS from 'react-native-fs';
|
|
34
|
+
|
|
35
|
+
initChatSdk({
|
|
36
|
+
apiAddr: 'https://your-api-server.com', // REST API endpoint
|
|
37
|
+
wsAddr: 'wss://your-ws-server.com', // WebSocket endpoint
|
|
38
|
+
dataDir: RNFS.DocumentDirectoryPath + '/chat', // Thư mục lưu trữ dữ liệu SDK
|
|
39
|
+
logFilePath: RNFS.DocumentDirectoryPath + '/chat', // Thư mục lưu file log
|
|
40
|
+
logLevel: 5, // LogLevel.Debug (xem bảng bên dưới)
|
|
41
|
+
isLogStandardOutput: true, // In log ra console (nên bật khi develop)
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### Tham số `InitOptions`
|
|
46
|
+
|
|
47
|
+
| Tham số | Kiểu | Bắt buộc | Mô tả |
|
|
48
|
+
| --------------------- | ---------- | :------: | --------------------------------------------------------- |
|
|
49
|
+
| `apiAddr` | `string` | ✅ | URL của REST API server |
|
|
50
|
+
| `wsAddr` | `string` | ✅ | URL của WebSocket server |
|
|
51
|
+
| `dataDir` | `string` | ✅ | Đường dẫn thư mục lưu dữ liệu cục bộ (SQLite, cache...) |
|
|
52
|
+
| `logFilePath` | `string` | ✅ | Đường dẫn thư mục lưu file log |
|
|
53
|
+
| `logLevel` | `LogLevel` | ✅ | Mức độ log (xem bảng `LogLevel` bên dưới) |
|
|
54
|
+
| `isLogStandardOutput` | `boolean` | ✅ | `true` để in log ra stdout (hữu ích khi debug) |
|
|
55
|
+
|
|
56
|
+
#### `LogLevel`
|
|
57
|
+
|
|
58
|
+
| Giá trị | Hằng số | Mô tả |
|
|
59
|
+
| :-----: | -------------- | ------------------------------ |
|
|
60
|
+
| `5` | `Debug` | Tất cả log (verbose) |
|
|
61
|
+
| `4` | `Info` | Thông tin chung |
|
|
62
|
+
| `3` | `Warn` | Cảnh báo |
|
|
63
|
+
| `2` | `Error` | Chỉ lỗi |
|
|
64
|
+
| `1` | `Fatal` | Lỗi nghiêm trọng |
|
|
65
|
+
| `0` | `Panic` | Lỗi làm crash ứng dụng |
|
|
66
|
+
|
|
67
|
+
#### Ví dụ thực tế (trong `App.tsx`)
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
import { initChatSdk } from '@droppii/chat-mobile';
|
|
71
|
+
import RNFS from 'react-native-fs';
|
|
72
|
+
|
|
73
|
+
// Gọi ở top-level module, trước khi App render
|
|
74
|
+
initChatSdk({
|
|
75
|
+
apiAddr: process.env.CHAT_API_URL!,
|
|
76
|
+
wsAddr: process.env.CHAT_WS_URL!,
|
|
77
|
+
dataDir: RNFS.DocumentDirectoryPath + '/chat',
|
|
78
|
+
logFilePath: RNFS.DocumentDirectoryPath + '/chat',
|
|
79
|
+
logLevel: __DEV__ ? 5 : 2, // Debug khi dev, Error khi production
|
|
80
|
+
isLogStandardOutput: __DEV__,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export default function App() {
|
|
84
|
+
// ...
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## Contributing
|
|
90
|
+
|
|
91
|
+
- [Development workflow](CONTRIBUTING.md#development-workflow)
|
|
92
|
+
- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)
|
|
93
|
+
- [Code of conduct](CODE_OF_CONDUCT.md)
|
|
94
|
+
|
|
95
|
+
## License
|
|
96
|
+
|
|
97
|
+
MIT
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Images","ICON_BOT","require","TAG_BOT","TAG_MALL"],"sourceRoot":"../../../../src","sources":["assets/images/index.ts"],"mappings":";;AAAA,MAAMA,MAAM,GAAG;EACbC,QAAQ,EAAEC,OAAO,CAAC,gBAAgB,CAAC;EACnCC,OAAO,EAAED,OAAO,CAAC,eAAe,CAAC;EACjCE,QAAQ,EAAEF,OAAO,CAAC,gBAAgB;AACpC,CAAC;AAED,eAAeF,MAAM","ignoreList":[]}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["build-ignore.d.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useMemo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KColors } from '@droppii/libs';
|
|
6
|
+
import { SingleAvatar } from "./SingleAvatar.js";
|
|
7
|
+
import { DoubleAvatar } from "./DoubleAvatar.js";
|
|
8
|
+
import { AvatarBadge } from "./AvatarBadge.js";
|
|
9
|
+
import { SIZE_MAP } from "./Avatar.utils.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
const Avatar = /*#__PURE__*/memo(({
|
|
12
|
+
source,
|
|
13
|
+
size = 'md',
|
|
14
|
+
type = 'single',
|
|
15
|
+
secondarySource,
|
|
16
|
+
badge,
|
|
17
|
+
fullName,
|
|
18
|
+
borderColor = KColors.white,
|
|
19
|
+
borderWidth = 1,
|
|
20
|
+
placeholderColor = KColors.palette.gray.w400,
|
|
21
|
+
onPress
|
|
22
|
+
}) => {
|
|
23
|
+
const sizeValue = useMemo(() => SIZE_MAP[size], [size]);
|
|
24
|
+
const content = useMemo(() => {
|
|
25
|
+
if (type === 'double') {
|
|
26
|
+
return /*#__PURE__*/_jsx(DoubleAvatar, {
|
|
27
|
+
primarySource: source,
|
|
28
|
+
secondarySource: secondarySource,
|
|
29
|
+
size: sizeValue,
|
|
30
|
+
borderColor: borderColor,
|
|
31
|
+
borderWidth: borderWidth,
|
|
32
|
+
placeholderColor: placeholderColor
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return /*#__PURE__*/_jsx(SingleAvatar, {
|
|
36
|
+
source: source,
|
|
37
|
+
size: sizeValue,
|
|
38
|
+
borderColor: borderColor,
|
|
39
|
+
borderWidth: borderWidth,
|
|
40
|
+
placeholderColor: placeholderColor,
|
|
41
|
+
backgroundColor: KColors.palette.gray.w300,
|
|
42
|
+
fullName: fullName
|
|
43
|
+
});
|
|
44
|
+
}, [type, source, secondarySource, sizeValue, borderColor, borderWidth, placeholderColor, fullName]);
|
|
45
|
+
const containerStyle = useMemo(() => ({
|
|
46
|
+
width: sizeValue,
|
|
47
|
+
height: sizeValue
|
|
48
|
+
}), [sizeValue]);
|
|
49
|
+
if (onPress) {
|
|
50
|
+
return /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
51
|
+
style: [styles.container, containerStyle],
|
|
52
|
+
onPress: onPress,
|
|
53
|
+
activeOpacity: 0.7,
|
|
54
|
+
children: [content, badge && /*#__PURE__*/_jsx(AvatarBadge, {
|
|
55
|
+
variant: badge.variant,
|
|
56
|
+
size: sizeValue
|
|
57
|
+
})]
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
61
|
+
style: [styles.container, containerStyle],
|
|
62
|
+
children: [content, badge && /*#__PURE__*/_jsx(AvatarBadge, {
|
|
63
|
+
variant: badge.variant,
|
|
64
|
+
size: sizeValue
|
|
65
|
+
})]
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
Avatar.displayName = 'Avatar';
|
|
69
|
+
export default Avatar;
|
|
70
|
+
const styles = StyleSheet.create({
|
|
71
|
+
container: {
|
|
72
|
+
position: 'relative',
|
|
73
|
+
justifyContent: 'center',
|
|
74
|
+
alignItems: 'center'
|
|
75
|
+
},
|
|
76
|
+
badge: {
|
|
77
|
+
position: 'absolute',
|
|
78
|
+
overflow: 'hidden'
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useMemo","StyleSheet","KContainer","KColors","SingleAvatar","DoubleAvatar","AvatarBadge","SIZE_MAP","jsx","_jsx","jsxs","_jsxs","Avatar","source","size","type","secondarySource","badge","fullName","borderColor","white","borderWidth","placeholderColor","palette","gray","w400","onPress","sizeValue","content","primarySource","backgroundColor","w300","containerStyle","width","height","Touchable","style","styles","container","activeOpacity","children","variant","View","displayName","create","position","justifyContent","alignItems","overflow"],"sourceRoot":"../../../../src","sources":["components/Avatar/Avatar.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,OAAO,QAAQ,eAAe;AACnD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,QAAQ,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG1C,MAAMC,MAAM,gBAAGb,IAAI,CACjB,CAAC;EACCc,MAAM;EACNC,IAAI,GAAG,IAAI;EACXC,IAAI,GAAG,QAAQ;EACfC,eAAe;EACfC,KAAK;EACLC,QAAQ;EACRC,WAAW,GAAGhB,OAAO,CAACiB,KAAK;EAC3BC,WAAW,GAAG,CAAC;EACfC,gBAAgB,GAAGnB,OAAO,CAACoB,OAAO,CAACC,IAAI,CAACC,IAAI;EAC5CC;AACW,CAAC,KAAK;EACjB,MAAMC,SAAS,GAAG3B,OAAO,CAAC,MAAMO,QAAQ,CAACO,IAAI,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEvD,MAAMc,OAAO,GAAG5B,OAAO,CAAC,MAAM;IAC5B,IAAIe,IAAI,KAAK,QAAQ,EAAE;MACrB,oBACEN,IAAA,CAACJ,YAAY;QACXwB,aAAa,EAAEhB,MAAO;QACtBG,eAAe,EAAEA,eAAgB;QACjCF,IAAI,EAAEa,SAAU;QAChBR,WAAW,EAAEA,WAAY;QACzBE,WAAW,EAAEA,WAAY;QACzBC,gBAAgB,EAAEA;MAAiB,CACpC,CAAC;IAEN;IAEA,oBACEb,IAAA,CAACL,YAAY;MACXS,MAAM,EAAEA,MAAO;MACfC,IAAI,EAAEa,SAAU;MAChBR,WAAW,EAAEA,WAAY;MACzBE,WAAW,EAAEA,WAAY;MACzBC,gBAAgB,EAAEA,gBAAiB;MACnCQ,eAAe,EAAE3B,OAAO,CAACoB,OAAO,CAACC,IAAI,CAACO,IAAK;MAC3Cb,QAAQ,EAAEA;IAAS,CACpB,CAAC;EAEN,CAAC,EAAE,CACDH,IAAI,EACJF,MAAM,EACNG,eAAe,EACfW,SAAS,EACTR,WAAW,EACXE,WAAW,EACXC,gBAAgB,EAChBJ,QAAQ,CACT,CAAC;EAEF,MAAMc,cAAc,GAAGhC,OAAO,CAC5B,OAAO;IACLiC,KAAK,EAAEN,SAAS;IAChBO,MAAM,EAAEP;EACV,CAAC,CAAC,EACF,CAACA,SAAS,CACZ,CAAC;EAED,IAAID,OAAO,EAAE;IACX,oBACEf,KAAA,CAACT,UAAU,CAACiC,SAAS;MACnBC,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEN,cAAc,CAAE;MAC1CN,OAAO,EAAEA,OAAQ;MACjBa,aAAa,EAAE,GAAI;MAAAC,QAAA,GAElBZ,OAAO,EACPX,KAAK,iBAAIR,IAAA,CAACH,WAAW;QAACmC,OAAO,EAAExB,KAAK,CAACwB,OAAQ;QAAC3B,IAAI,EAAEa;MAAU,CAAE,CAAC;IAAA,CAC9C,CAAC;EAE3B;EAEA,oBACEhB,KAAA,CAACT,UAAU,CAACwC,IAAI;IAACN,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEN,cAAc,CAAE;IAAAQ,QAAA,GACxDZ,OAAO,EACPX,KAAK,iBAAIR,IAAA,CAACH,WAAW;MAACmC,OAAO,EAAExB,KAAK,CAACwB,OAAQ;MAAC3B,IAAI,EAAEa;IAAU,CAAE,CAAC;EAAA,CACnD,CAAC;AAEtB,CACF,CAAC;AAEDf,MAAM,CAAC+B,WAAW,GAAG,QAAQ;AAE7B,eAAe/B,MAAM;AAErB,MAAMyB,MAAM,GAAGpC,UAAU,CAAC2C,MAAM,CAAC;EAC/BN,SAAS,EAAE;IACTO,QAAQ,EAAE,UAAU;IACpBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACD9B,KAAK,EAAE;IACL4B,QAAQ,EAAE,UAAU;IACpBG,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/Avatar/Avatar.types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const SIZE_MAP = {
|
|
4
|
+
sm: 24,
|
|
5
|
+
md: 48,
|
|
6
|
+
lg: 64
|
|
7
|
+
};
|
|
8
|
+
const TYPO_MAP = {
|
|
9
|
+
24: 'TextXsBold',
|
|
10
|
+
48: 'TextNmBold',
|
|
11
|
+
64: 'TextLgBold'
|
|
12
|
+
};
|
|
13
|
+
export const getInitials = fullName => {
|
|
14
|
+
if (!fullName) return '?';
|
|
15
|
+
|
|
16
|
+
// Remove emoji, numbers, and special characters, keep only letters and spaces
|
|
17
|
+
const cleaned = fullName.replace(/[^\p{L}\s]/gu, '') // Remove non-letter, non-space chars (Unicode-safe)
|
|
18
|
+
.trim();
|
|
19
|
+
if (!cleaned) return '?';
|
|
20
|
+
const parts = cleaned.split(/\s+/).filter(Boolean);
|
|
21
|
+
if (parts.length === 1) {
|
|
22
|
+
// Single name: use first character
|
|
23
|
+
return parts[0][0]?.toUpperCase() ?? '?';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Multiple names: use first letter of first and last name
|
|
27
|
+
const firstInitial = parts[0][0]?.toUpperCase() ?? '';
|
|
28
|
+
const lastInitial = parts[parts.length - 1][0]?.toUpperCase() ?? '';
|
|
29
|
+
return firstInitial + lastInitial || '?';
|
|
30
|
+
};
|
|
31
|
+
export const getBadgeImage = variant => {
|
|
32
|
+
const Images = require('../../assets/images').default;
|
|
33
|
+
switch (variant) {
|
|
34
|
+
case 'mall':
|
|
35
|
+
return Images.TAG_MALL;
|
|
36
|
+
case 'bot':
|
|
37
|
+
case 'support':
|
|
38
|
+
return Images.TAG_BOT;
|
|
39
|
+
default:
|
|
40
|
+
return Images.TAG_BOT;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export { SIZE_MAP, TYPO_MAP };
|
|
44
|
+
//# sourceMappingURL=Avatar.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SIZE_MAP","sm","md","lg","TYPO_MAP","getInitials","fullName","cleaned","replace","trim","parts","split","filter","Boolean","length","toUpperCase","firstInitial","lastInitial","getBadgeImage","variant","Images","require","default","TAG_MALL","TAG_BOT"],"sourceRoot":"../../../../src","sources":["components/Avatar/Avatar.utils.ts"],"mappings":";;AAAA,MAAMA,QAAQ,GAAG;EACfC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE;AACN,CAAU;AAEV,MAAMC,QAAQ,GAAG;EACf,EAAE,EAAE,YAAY;EAChB,EAAE,EAAE,YAAY;EAChB,EAAE,EAAE;AACN,CAAU;AAEV,OAAO,MAAMC,WAAW,GAAIC,QAAiB,IAAa;EACxD,IAAI,CAACA,QAAQ,EAAE,OAAO,GAAG;;EAEzB;EACA,MAAMC,OAAO,GAAGD,QAAQ,CACrBE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;EAAA,CAC5BC,IAAI,CAAC,CAAC;EAET,IAAI,CAACF,OAAO,EAAE,OAAO,GAAG;EAExB,MAAMG,KAAK,GAAGH,OAAO,CAACI,KAAK,CAAC,KAAK,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC;EAElD,IAAIH,KAAK,CAACI,MAAM,KAAK,CAAC,EAAE;IACtB;IACA,OAAOJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEK,WAAW,CAAC,CAAC,IAAI,GAAG;EAC1C;;EAEA;EACA,MAAMC,YAAY,GAAGN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEK,WAAW,CAAC,CAAC,IAAI,EAAE;EACrD,MAAME,WAAW,GAAGP,KAAK,CAACA,KAAK,CAACI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,IAAI,EAAE;EACnE,OAAOC,YAAY,GAAGC,WAAW,IAAI,GAAG;AAC1C,CAAC;AAED,OAAO,MAAMC,aAAa,GAAIC,OAAgB,IAAK;EACjD,MAAMC,MAAM,GAAGC,OAAO,CAAC,qBAAqB,CAAC,CAACC,OAAO;EACrD,QAAQH,OAAO;IACb,KAAK,MAAM;MACT,OAAOC,MAAM,CAACG,QAAQ;IACxB,KAAK,KAAK;IACV,KAAK,SAAS;MACZ,OAAOH,MAAM,CAACI,OAAO;IACvB;MACE,OAAOJ,MAAM,CAACI,OAAO;EACzB;AACF,CAAC;AAED,SAASxB,QAAQ,EAAEI,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { Image as RNImage, StyleSheet } from 'react-native';
|
|
5
|
+
import { getBadgeImage } from "./Avatar.utils.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const AvatarBadge = /*#__PURE__*/memo(({
|
|
8
|
+
variant,
|
|
9
|
+
size: _size
|
|
10
|
+
}) => {
|
|
11
|
+
const badgeImage = getBadgeImage(variant);
|
|
12
|
+
return /*#__PURE__*/_jsx(RNImage, {
|
|
13
|
+
source: badgeImage,
|
|
14
|
+
style: styles.badgeImage
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
AvatarBadge.displayName = 'AvatarBadge';
|
|
18
|
+
const styles = StyleSheet.create({
|
|
19
|
+
badgeImage: {
|
|
20
|
+
position: 'absolute',
|
|
21
|
+
bottom: 0,
|
|
22
|
+
right: 0,
|
|
23
|
+
width: 28,
|
|
24
|
+
height: 17,
|
|
25
|
+
resizeMode: 'contain'
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=AvatarBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","Image","RNImage","StyleSheet","getBadgeImage","jsx","_jsx","AvatarBadge","variant","size","_size","badgeImage","source","style","styles","displayName","create","position","bottom","right","width","height","resizeMode"],"sourceRoot":"../../../../src","sources":["components/Avatar/AvatarBadge.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,KAAK,IAAIC,OAAO,EAAEC,UAAU,QAAQ,cAAc;AAC3D,SAASC,aAAa,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO/C,OAAO,MAAMC,WAAW,gBAAGP,IAAI,CAC7B,CAAC;EAAEQ,OAAO;EAAEC,IAAI,EAAEC;AAAwB,CAAC,KAAK;EAC9C,MAAMC,UAAU,GAAGP,aAAa,CAACI,OAAO,CAAC;EAEzC,oBAAOF,IAAA,CAACJ,OAAO;IAACU,MAAM,EAAED,UAAW;IAACE,KAAK,EAAEC,MAAM,CAACH;EAAW,CAAE,CAAC;AAClE,CACF,CAAC;AAEDJ,WAAW,CAACQ,WAAW,GAAG,aAAa;AAEvC,MAAMD,MAAM,GAAGX,UAAU,CAACa,MAAM,CAAC;EAC/BL,UAAU,EAAE;IACVM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,KAAK,EAAE,CAAC;IACRC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KColors } from '@droppii/libs';
|
|
6
|
+
import { SingleAvatar } from "./SingleAvatar.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export const DoubleAvatar = /*#__PURE__*/memo(({
|
|
9
|
+
primarySource,
|
|
10
|
+
secondarySource,
|
|
11
|
+
size,
|
|
12
|
+
borderColor,
|
|
13
|
+
borderWidth,
|
|
14
|
+
placeholderColor,
|
|
15
|
+
primaryFullName,
|
|
16
|
+
secondaryFullName
|
|
17
|
+
}) => {
|
|
18
|
+
const innerSize = Math.round(size * 0.6875); // 33/48 ratio
|
|
19
|
+
const offset = Math.round(size * 0.3125); // 15/48 ratio
|
|
20
|
+
|
|
21
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
22
|
+
style: [styles.doubleAvatarContainer, {
|
|
23
|
+
width: size,
|
|
24
|
+
height: size
|
|
25
|
+
}],
|
|
26
|
+
children: [/*#__PURE__*/_jsx(KContainer.View, {
|
|
27
|
+
style: [styles.doubleAvatarChild, styles.doubleAvatarTop, {
|
|
28
|
+
width: innerSize,
|
|
29
|
+
height: innerSize,
|
|
30
|
+
right: offset
|
|
31
|
+
}],
|
|
32
|
+
children: /*#__PURE__*/_jsx(SingleAvatar, {
|
|
33
|
+
source: primarySource,
|
|
34
|
+
size: innerSize,
|
|
35
|
+
borderColor: borderColor,
|
|
36
|
+
borderWidth: borderWidth,
|
|
37
|
+
placeholderColor: placeholderColor,
|
|
38
|
+
backgroundColor: KColors.palette.gray.w300,
|
|
39
|
+
fullName: primaryFullName
|
|
40
|
+
})
|
|
41
|
+
}), /*#__PURE__*/_jsx(KContainer.View, {
|
|
42
|
+
style: [styles.doubleAvatarChild, styles.doubleAvatarBottom, {
|
|
43
|
+
width: innerSize,
|
|
44
|
+
height: innerSize,
|
|
45
|
+
left: offset
|
|
46
|
+
}],
|
|
47
|
+
children: /*#__PURE__*/_jsx(SingleAvatar, {
|
|
48
|
+
source: secondarySource,
|
|
49
|
+
size: innerSize,
|
|
50
|
+
borderColor: borderColor,
|
|
51
|
+
borderWidth: borderWidth,
|
|
52
|
+
placeholderColor: placeholderColor,
|
|
53
|
+
backgroundColor: KColors.palette.gray.w300,
|
|
54
|
+
fullName: secondaryFullName
|
|
55
|
+
})
|
|
56
|
+
})]
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
DoubleAvatar.displayName = 'DoubleAvatar';
|
|
60
|
+
const styles = StyleSheet.create({
|
|
61
|
+
doubleAvatarContainer: {
|
|
62
|
+
position: 'relative'
|
|
63
|
+
},
|
|
64
|
+
doubleAvatarChild: {
|
|
65
|
+
position: 'absolute'
|
|
66
|
+
},
|
|
67
|
+
doubleAvatarTop: {
|
|
68
|
+
top: 0
|
|
69
|
+
},
|
|
70
|
+
doubleAvatarBottom: {
|
|
71
|
+
bottom: 0
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=DoubleAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","StyleSheet","KContainer","KColors","SingleAvatar","jsx","_jsx","jsxs","_jsxs","DoubleAvatar","primarySource","secondarySource","size","borderColor","borderWidth","placeholderColor","primaryFullName","secondaryFullName","innerSize","Math","round","offset","View","style","styles","doubleAvatarContainer","width","height","children","doubleAvatarChild","doubleAvatarTop","right","source","backgroundColor","palette","gray","w300","fullName","doubleAvatarBottom","left","displayName","create","position","top","bottom"],"sourceRoot":"../../../../src","sources":["components/Avatar/DoubleAvatar.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,OAAO,QAAQ,eAAe;AACnD,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAa9C,OAAO,MAAMC,YAAY,gBAAGT,IAAI,CAC9B,CAAC;EACCU,aAAa;EACbC,eAAe;EACfC,IAAI;EACJC,WAAW;EACXC,WAAW;EACXC,gBAAgB;EAChBC,eAAe;EACfC;AACiB,CAAC,KAAK;EACvB,MAAMC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACR,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;EAC7C,MAAMS,MAAM,GAAGF,IAAI,CAACC,KAAK,CAACR,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;;EAE1C,oBACEJ,KAAA,CAACN,UAAU,CAACoB,IAAI;IACdC,KAAK,EAAE,CAACC,MAAM,CAACC,qBAAqB,EAAE;MAAEC,KAAK,EAAEd,IAAI;MAAEe,MAAM,EAAEf;IAAK,CAAC,CAAE;IAAAgB,QAAA,gBAErEtB,IAAA,CAACJ,UAAU,CAACoB,IAAI;MACdC,KAAK,EAAE,CACLC,MAAM,CAACK,iBAAiB,EACxBL,MAAM,CAACM,eAAe,EACtB;QAAEJ,KAAK,EAAER,SAAS;QAAES,MAAM,EAAET,SAAS;QAAEa,KAAK,EAAEV;MAAO,CAAC,CACtD;MAAAO,QAAA,eAEFtB,IAAA,CAACF,YAAY;QACX4B,MAAM,EAAEtB,aAAc;QACtBE,IAAI,EAAEM,SAAU;QAChBL,WAAW,EAAEA,WAAY;QACzBC,WAAW,EAAEA,WAAY;QACzBC,gBAAgB,EAAEA,gBAAiB;QACnCkB,eAAe,EAAE9B,OAAO,CAAC+B,OAAO,CAACC,IAAI,CAACC,IAAK;QAC3CC,QAAQ,EAAErB;MAAgB,CAC3B;IAAC,CACa,CAAC,eAClBV,IAAA,CAACJ,UAAU,CAACoB,IAAI;MACdC,KAAK,EAAE,CACLC,MAAM,CAACK,iBAAiB,EACxBL,MAAM,CAACc,kBAAkB,EACzB;QAAEZ,KAAK,EAAER,SAAS;QAAES,MAAM,EAAET,SAAS;QAAEqB,IAAI,EAAElB;MAAO,CAAC,CACrD;MAAAO,QAAA,eAEFtB,IAAA,CAACF,YAAY;QACX4B,MAAM,EAAErB,eAAgB;QACxBC,IAAI,EAAEM,SAAU;QAChBL,WAAW,EAAEA,WAAY;QACzBC,WAAW,EAAEA,WAAY;QACzBC,gBAAgB,EAAEA,gBAAiB;QACnCkB,eAAe,EAAE9B,OAAO,CAAC+B,OAAO,CAACC,IAAI,CAACC,IAAK;QAC3CC,QAAQ,EAAEpB;MAAkB,CAC7B;IAAC,CACa,CAAC;EAAA,CACH,CAAC;AAEtB,CACF,CAAC;AAEDR,YAAY,CAAC+B,WAAW,GAAG,cAAc;AAEzC,MAAMhB,MAAM,GAAGvB,UAAU,CAACwC,MAAM,CAAC;EAC/BhB,qBAAqB,EAAE;IACrBiB,QAAQ,EAAE;EACZ,CAAC;EACDb,iBAAiB,EAAE;IACjBa,QAAQ,EAAE;EACZ,CAAC;EACDZ,eAAe,EAAE;IACfa,GAAG,EAAE;EACP,CAAC;EACDL,kBAAkB,EAAE;IAClBM,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
|
|
6
|
+
import { getInitials, TYPO_MAP } from "./Avatar.utils.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const SingleAvatar = /*#__PURE__*/memo(({
|
|
9
|
+
source,
|
|
10
|
+
size,
|
|
11
|
+
borderColor,
|
|
12
|
+
borderWidth,
|
|
13
|
+
placeholderColor,
|
|
14
|
+
backgroundColor,
|
|
15
|
+
fullName
|
|
16
|
+
}) => {
|
|
17
|
+
if (source) {
|
|
18
|
+
return /*#__PURE__*/_jsx(KImage.Avatar, {
|
|
19
|
+
uri: source,
|
|
20
|
+
size: size === 24 ? 'sm' : size === 48 ? 'md' : 'lg',
|
|
21
|
+
style: {
|
|
22
|
+
borderWidth,
|
|
23
|
+
borderColor,
|
|
24
|
+
width: size,
|
|
25
|
+
height: size
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
30
|
+
center: true,
|
|
31
|
+
style: [styles.placeholderAvatar, {
|
|
32
|
+
width: size,
|
|
33
|
+
height: size,
|
|
34
|
+
borderRadius: size / 2,
|
|
35
|
+
borderWidth,
|
|
36
|
+
borderColor,
|
|
37
|
+
backgroundColor: backgroundColor || placeholderColor
|
|
38
|
+
}],
|
|
39
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
40
|
+
typo: TYPO_MAP[size] || 'TextNmBold',
|
|
41
|
+
color: KColors.palette.primary.w400,
|
|
42
|
+
children: getInitials(fullName)
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
SingleAvatar.displayName = 'SingleAvatar';
|
|
47
|
+
const styles = StyleSheet.create({
|
|
48
|
+
placeholderAvatar: {
|
|
49
|
+
justifyContent: 'center',
|
|
50
|
+
alignItems: 'center'
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=SingleAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","StyleSheet","KContainer","KImage","KLabel","KColors","getInitials","TYPO_MAP","jsx","_jsx","SingleAvatar","source","size","borderColor","borderWidth","placeholderColor","backgroundColor","fullName","Avatar","uri","style","width","height","View","center","styles","placeholderAvatar","borderRadius","children","Text","typo","color","palette","primary","w400","displayName","create","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["components/Avatar/SingleAvatar.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AACnE,SAASC,WAAW,EAAEC,QAAQ,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAYvD,OAAO,MAAMC,YAAY,gBAAGV,IAAI,CAC9B,CAAC;EACCW,MAAM;EACNC,IAAI;EACJC,WAAW;EACXC,WAAW;EACXC,gBAAgB;EAChBC,eAAe;EACfC;AACiB,CAAC,KAAK;EACvB,IAAIN,MAAM,EAAE;IACV,oBACEF,IAAA,CAACN,MAAM,CAACe,MAAM;MACZC,GAAG,EAAER,MAAO;MACZC,IAAI,EAAEA,IAAI,KAAK,EAAE,GAAG,IAAI,GAAGA,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,IAAK;MACrDQ,KAAK,EAAE;QACLN,WAAW;QACXD,WAAW;QACXQ,KAAK,EAAET,IAAI;QACXU,MAAM,EAAEV;MACV;IAAE,CACH,CAAC;EAEN;EAEA,oBACEH,IAAA,CAACP,UAAU,CAACqB,IAAI;IACdC,MAAM;IACNJ,KAAK,EAAE,CACLK,MAAM,CAACC,iBAAiB,EACxB;MACEL,KAAK,EAAET,IAAI;MACXU,MAAM,EAAEV,IAAI;MACZe,YAAY,EAAEf,IAAI,GAAG,CAAC;MACtBE,WAAW;MACXD,WAAW;MACXG,eAAe,EAAEA,eAAe,IAAID;IACtC,CAAC,CACD;IAAAa,QAAA,eAEFnB,IAAA,CAACL,MAAM,CAACyB,IAAI;MACVC,IAAI,EAAEvB,QAAQ,CAACK,IAAI,CAA0B,IAAI,YAAa;MAC9DmB,KAAK,EAAE1B,OAAO,CAAC2B,OAAO,CAACC,OAAO,CAACC,IAAK;MAAAN,QAAA,EAEnCtB,WAAW,CAACW,QAAQ;IAAC,CACX;EAAC,CACC,CAAC;AAEtB,CACF,CAAC;AAEDP,YAAY,CAACyB,WAAW,GAAG,cAAc;AAEzC,MAAMV,MAAM,GAAGxB,UAAU,CAACmC,MAAM,CAAC;EAC/BV,iBAAiB,EAAE;IACjBW,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["default","Avatar","SingleAvatar","DoubleAvatar","AvatarBadge"],"sourceRoot":"../../../../src","sources":["components/Avatar/index.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,MAAM,QAAQ,aAAU;AAC5C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,WAAW,QAAQ,kBAAe","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { Avatar } from "../Avatar/index.js";
|
|
5
|
+
import { DChatCategory } from "../../types/chat.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const AvatarSection = /*#__PURE__*/memo(({
|
|
8
|
+
avatar,
|
|
9
|
+
fullName,
|
|
10
|
+
chatCategory,
|
|
11
|
+
applicationType
|
|
12
|
+
}) => {
|
|
13
|
+
if (chatCategory === DChatCategory.BIZ_BOT_CRM || chatCategory === DChatCategory.BIZ_BOT_PDP) {
|
|
14
|
+
return /*#__PURE__*/_jsx(Avatar, {
|
|
15
|
+
source: avatar,
|
|
16
|
+
fullName: fullName,
|
|
17
|
+
badge: {
|
|
18
|
+
variant: 'bot'
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (applicationType === 'MALL') {
|
|
23
|
+
return /*#__PURE__*/_jsx(Avatar, {
|
|
24
|
+
source: avatar,
|
|
25
|
+
fullName: fullName,
|
|
26
|
+
badge: {
|
|
27
|
+
variant: 'mall'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return /*#__PURE__*/_jsx(Avatar, {
|
|
32
|
+
source: avatar,
|
|
33
|
+
fullName: fullName
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
AvatarSection.displayName = 'AvatarSection';
|
|
37
|
+
//# sourceMappingURL=AvatarSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","Avatar","DChatCategory","jsx","_jsx","AvatarSection","avatar","fullName","chatCategory","applicationType","BIZ_BOT_CRM","BIZ_BOT_PDP","source","badge","variant","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/AvatarSection.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,MAAM,QAAQ,oBAAW;AAClC,SAASC,aAAa,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUjD,OAAO,MAAMC,aAAa,gBAAGL,IAAI,CAC/B,CAAC;EAAEM,MAAM;EAAEC,QAAQ;EAAEC,YAAY;EAAEC;AAAoC,CAAC,KAAK;EAC3E,IACED,YAAY,KAAKN,aAAa,CAACQ,WAAW,IAC1CF,YAAY,KAAKN,aAAa,CAACS,WAAW,EAC1C;IACA,oBACEP,IAAA,CAACH,MAAM;MACLW,MAAM,EAAEN,MAAO;MACfC,QAAQ,EAAEA,QAAS;MACnBM,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAM;IAAE,CAC3B,CAAC;EAEN;EAEA,IAAIL,eAAe,KAAK,MAAM,EAAE;IAC9B,oBACEL,IAAA,CAACH,MAAM;MACLW,MAAM,EAAEN,MAAO;MACfC,QAAQ,EAAEA,QAAS;MACnBM,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO;IAAE,CAC5B,CAAC;EAEN;EAEA,oBAAOV,IAAA,CAACH,MAAM;IAACW,MAAM,EAAEN,MAAO;IAACC,QAAQ,EAAEA;EAAS,CAAE,CAAC;AACvD,CACF,CAAC;AAEDF,aAAa,CAACU,WAAW,GAAG,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { KContainer, KImage, KColors } from '@droppii/libs';
|
|
5
|
+
import { DChatCategory, DChatType } from "../../types/chat.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const NamePrefixIcon = /*#__PURE__*/memo(({
|
|
8
|
+
chatCategory,
|
|
9
|
+
chatType
|
|
10
|
+
}) => {
|
|
11
|
+
if (chatCategory === DChatCategory.BIZ_BOT_CRM || chatCategory === DChatCategory.BIZ_BOT_PDP) {
|
|
12
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
13
|
+
marginR: "0.25rem",
|
|
14
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
15
|
+
name: "robot-outline",
|
|
16
|
+
provider: "MaterialCommunityIcons",
|
|
17
|
+
size: 14,
|
|
18
|
+
color: KColors.palette.primary.w400
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (chatType === DChatType.GROUP) {
|
|
23
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
24
|
+
marginR: "0.25rem",
|
|
25
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
26
|
+
name: "account-multiple-outline",
|
|
27
|
+
provider: "MaterialCommunityIcons",
|
|
28
|
+
size: 14,
|
|
29
|
+
color: KColors.palette.gray.w500
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
});
|
|
35
|
+
NamePrefixIcon.displayName = 'NamePrefixIcon';
|
|
36
|
+
//# sourceMappingURL=NamePrefixIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","KContainer","KImage","KColors","DChatCategory","DChatType","jsx","_jsx","NamePrefixIcon","chatCategory","chatType","BIZ_BOT_CRM","BIZ_BOT_PDP","View","marginR","children","VectorIcons","name","provider","size","color","palette","primary","w400","GROUP","gray","w500","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/NamePrefixIcon.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AAC3D,SAASC,aAAa,EAAEC,SAAS,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO5D,OAAO,MAAMC,cAAc,gBAAGR,IAAI,CAChC,CAAC;EAAES,YAAY;EAAEC;AAA8B,CAAC,KAAK;EACnD,IACED,YAAY,KAAKL,aAAa,CAACO,WAAW,IAC1CF,YAAY,KAAKL,aAAa,CAACQ,WAAW,EAC1C;IACA,oBACEL,IAAA,CAACN,UAAU,CAACY,IAAI;MAACC,OAAO,EAAC,SAAS;MAAAC,QAAA,eAChCR,IAAA,CAACL,MAAM,CAACc,WAAW;QACjBC,IAAI,EAAC,eAAe;QACpBC,QAAQ,EAAC,wBAAwB;QACjCC,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEjB,OAAO,CAACkB,OAAO,CAACC,OAAO,CAACC;MAAK,CACrC;IAAC,CACa,CAAC;EAEtB;EAEA,IAAIb,QAAQ,KAAKL,SAAS,CAACmB,KAAK,EAAE;IAChC,oBACEjB,IAAA,CAACN,UAAU,CAACY,IAAI;MAACC,OAAO,EAAC,SAAS;MAAAC,QAAA,eAChCR,IAAA,CAACL,MAAM,CAACc,WAAW;QACjBC,IAAI,EAAC,0BAA0B;QAC/BC,QAAQ,EAAC,wBAAwB;QACjCC,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEjB,OAAO,CAACkB,OAAO,CAACI,IAAI,CAACC;MAAK,CAClC;IAAC,CACa,CAAC;EAEtB;EAEA,OAAO,IAAI;AACb,CACF,CAAC;AAEDlB,cAAc,CAACmB,WAAW,GAAG,gBAAgB","ignoreList":[]}
|