@droppii-org/chat-mobile 0.2.17 → 0.2.19

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.
Files changed (199) hide show
  1. package/lib/module/assets/images/icon_excel.png +0 -0
  2. package/lib/module/assets/images/icon_img.png +0 -0
  3. package/lib/module/assets/images/icon_pdf.png +0 -0
  4. package/lib/module/assets/images/icon_txt.png +0 -0
  5. package/lib/module/assets/images/icon_word.png +0 -0
  6. package/lib/module/assets/images/index.js +5 -0
  7. package/lib/module/assets/images/index.js.map +1 -1
  8. package/lib/module/components/AttachmentPreview/FilePreview.js +107 -0
  9. package/lib/module/components/AttachmentPreview/FilePreview.js.map +1 -0
  10. package/lib/module/components/AttachmentPreview/MediaPreview.js +212 -0
  11. package/lib/module/components/AttachmentPreview/MediaPreview.js.map +1 -0
  12. package/lib/module/components/AttachmentPreview/index.js +49 -0
  13. package/lib/module/components/AttachmentPreview/index.js.map +1 -0
  14. package/lib/module/components/ThreadCard/AvatarSection.js.map +1 -1
  15. package/lib/module/components/ThreadCard/ThreadCard.js +17 -9
  16. package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
  17. package/lib/module/components/flows/inputButtons/index.js +7 -3
  18. package/lib/module/components/flows/inputButtons/index.js.map +1 -1
  19. package/lib/module/components/messages/fileMessage/index.js +122 -12
  20. package/lib/module/components/messages/fileMessage/index.js.map +1 -1
  21. package/lib/module/context/ChatContext.js +27 -4
  22. package/lib/module/context/ChatContext.js.map +1 -1
  23. package/lib/module/context/ChatDetailContext.js.map +1 -1
  24. package/lib/module/core/useChatListener.js +2 -4
  25. package/lib/module/core/useChatListener.js.map +1 -1
  26. package/lib/module/core/useUserListener.js +0 -7
  27. package/lib/module/core/useUserListener.js.map +1 -1
  28. package/lib/module/hooks/flows/useFlow.js +14 -3
  29. package/lib/module/hooks/flows/useFlow.js.map +1 -1
  30. package/lib/module/hooks/message/useSendMessage.js +1 -1
  31. package/lib/module/hooks/message/useSendMessage.js.map +1 -1
  32. package/lib/module/hooks/useConversationList.js +3 -27
  33. package/lib/module/hooks/useConversationList.js.map +1 -1
  34. package/lib/module/hooks/useFileAttachment.js +116 -0
  35. package/lib/module/hooks/useFileAttachment.js.map +1 -0
  36. package/lib/module/hooks/useFileDownload.js +175 -0
  37. package/lib/module/hooks/useFileDownload.js.map +1 -0
  38. package/lib/module/hooks/useLinkPreview/useLinkPreview.js +1 -1
  39. package/lib/module/hooks/useLinkPreview/useLinkPreview.js.map +1 -1
  40. package/lib/module/index.js +1 -1
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/screens/chat-detail/ChatComposer.js +44 -36
  43. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
  44. package/lib/module/screens/chat-detail/ChatDetail.js +1 -6
  45. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  46. package/lib/module/screens/chat-detail/ChatDetailHeader.js +6 -6
  47. package/lib/module/screens/chat-detail/ChatDetailHeader.js.map +1 -1
  48. package/lib/module/screens/chat-detail/ChatLinkPreview.js +3 -1
  49. package/lib/module/screens/chat-detail/ChatLinkPreview.js.map +1 -1
  50. package/lib/module/screens/chat-detail/ChatListLegend.js +2 -2
  51. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  52. package/lib/module/screens/chat-detail/conversationHeader.utils.js +9 -0
  53. package/lib/module/screens/chat-detail/conversationHeader.utils.js.map +1 -1
  54. package/lib/module/screens/chat-detail/hooks/useAttachmentMapping.js +51 -0
  55. package/lib/module/screens/chat-detail/hooks/useAttachmentMapping.js.map +1 -0
  56. package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +39 -13
  57. package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -1
  58. package/lib/module/screens/inbox/Inbox.js +5 -1
  59. package/lib/module/screens/inbox/Inbox.js.map +1 -1
  60. package/lib/module/services/apis.js +0 -20
  61. package/lib/module/services/apis.js.map +1 -1
  62. package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +6 -6
  63. package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -1
  64. package/lib/module/services/attachmentHandlers/index.js +1 -1
  65. package/lib/module/services/attachmentHandlers/index.js.map +1 -1
  66. package/lib/module/store/conversation.js +1 -38
  67. package/lib/module/store/conversation.js.map +1 -1
  68. package/lib/module/translation/resources/i18n.js +9 -0
  69. package/lib/module/translation/resources/i18n.js.map +1 -1
  70. package/lib/module/types/auth.js.map +1 -1
  71. package/lib/module/types/chat.js.map +1 -1
  72. package/lib/module/utils/conversation.js +1 -28
  73. package/lib/module/utils/conversation.js.map +1 -1
  74. package/lib/module/utils/device.js +32 -0
  75. package/lib/module/utils/device.js.map +1 -1
  76. package/lib/module/utils/imageUtils.js +44 -28
  77. package/lib/module/utils/imageUtils.js.map +1 -1
  78. package/lib/module/utils/message.js.map +1 -1
  79. package/lib/module/utils/messageUtils.js +5 -3
  80. package/lib/module/utils/messageUtils.js.map +1 -1
  81. package/lib/typescript/src/assets/images/index.d.ts +5 -0
  82. package/lib/typescript/src/assets/images/index.d.ts.map +1 -1
  83. package/lib/typescript/src/components/AttachmentPreview/FilePreview.d.ts +6 -0
  84. package/lib/typescript/src/components/AttachmentPreview/FilePreview.d.ts.map +1 -0
  85. package/lib/typescript/src/components/AttachmentPreview/MediaPreview.d.ts +9 -0
  86. package/lib/typescript/src/components/AttachmentPreview/MediaPreview.d.ts.map +1 -0
  87. package/lib/typescript/src/components/AttachmentPreview/index.d.ts +9 -0
  88. package/lib/typescript/src/components/AttachmentPreview/index.d.ts.map +1 -0
  89. package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts +2 -2
  90. package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts.map +1 -1
  91. package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
  92. package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -1
  93. package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
  94. package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
  95. package/lib/typescript/src/core/useUserListener.d.ts.map +1 -1
  96. package/lib/typescript/src/hooks/flows/useFlow.d.ts.map +1 -1
  97. package/lib/typescript/src/hooks/useConversationList.d.ts +2 -2
  98. package/lib/typescript/src/hooks/useConversationList.d.ts.map +1 -1
  99. package/lib/typescript/src/hooks/useFileAttachment.d.ts +20 -0
  100. package/lib/typescript/src/hooks/useFileAttachment.d.ts.map +1 -0
  101. package/lib/typescript/src/hooks/useFileDownload.d.ts +15 -0
  102. package/lib/typescript/src/hooks/useFileDownload.d.ts.map +1 -0
  103. package/lib/typescript/src/hooks/useImageAttachment.d.ts +1 -2
  104. package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -1
  105. package/lib/typescript/src/hooks/useLinkPreview/useLinkPreview.d.ts.map +1 -1
  106. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
  107. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
  108. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  109. package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts +1 -1
  110. package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts.map +1 -1
  111. package/lib/typescript/src/screens/chat-detail/ChatLinkPreview.d.ts.map +1 -1
  112. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  113. package/lib/typescript/src/screens/chat-detail/conversationHeader.utils.d.ts +7 -5
  114. package/lib/typescript/src/screens/chat-detail/conversationHeader.utils.d.ts.map +1 -1
  115. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentMapping.d.ts +10 -0
  116. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentMapping.d.ts.map +1 -0
  117. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +4 -1
  118. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -1
  119. package/lib/typescript/src/screens/chat-detail/types.d.ts +6 -9
  120. package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
  121. package/lib/typescript/src/screens/inbox/Inbox.d.ts.map +1 -1
  122. package/lib/typescript/src/services/apis.d.ts +0 -4
  123. package/lib/typescript/src/services/apis.d.ts.map +1 -1
  124. package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts +2 -2
  125. package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -1
  126. package/lib/typescript/src/services/attachmentHandlers/index.d.ts +1 -1
  127. package/lib/typescript/src/services/attachmentHandlers/index.d.ts.map +1 -1
  128. package/lib/typescript/src/store/conversation.d.ts +5 -8
  129. package/lib/typescript/src/store/conversation.d.ts.map +1 -1
  130. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  131. package/lib/typescript/src/types/attachment.d.ts +22 -1
  132. package/lib/typescript/src/types/attachment.d.ts.map +1 -1
  133. package/lib/typescript/src/types/auth.d.ts +1 -0
  134. package/lib/typescript/src/types/auth.d.ts.map +1 -1
  135. package/lib/typescript/src/types/chat.d.ts +15 -13
  136. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  137. package/lib/typescript/src/utils/conversation.d.ts +2 -5
  138. package/lib/typescript/src/utils/conversation.d.ts.map +1 -1
  139. package/lib/typescript/src/utils/device.d.ts +7 -0
  140. package/lib/typescript/src/utils/device.d.ts.map +1 -1
  141. package/lib/typescript/src/utils/imageUtils.d.ts +1 -0
  142. package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -1
  143. package/lib/typescript/src/utils/message.d.ts +3 -3
  144. package/lib/typescript/src/utils/message.d.ts.map +1 -1
  145. package/lib/typescript/src/utils/messageUtils.d.ts +2 -1
  146. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  147. package/package.json +6 -2
  148. package/src/assets/images/icon_excel.png +0 -0
  149. package/src/assets/images/icon_img.png +0 -0
  150. package/src/assets/images/icon_pdf.png +0 -0
  151. package/src/assets/images/icon_txt.png +0 -0
  152. package/src/assets/images/icon_word.png +0 -0
  153. package/src/assets/images/index.ts +5 -0
  154. package/src/components/AttachmentPreview/FilePreview.tsx +137 -0
  155. package/src/components/AttachmentPreview/MediaPreview.tsx +238 -0
  156. package/src/components/AttachmentPreview/index.tsx +68 -0
  157. package/src/components/ThreadCard/AvatarSection.tsx +2 -3
  158. package/src/components/ThreadCard/ThreadCard.tsx +22 -15
  159. package/src/components/flows/inputButtons/index.tsx +4 -1
  160. package/src/components/messages/fileMessage/index.tsx +156 -13
  161. package/src/context/ChatContext.tsx +35 -3
  162. package/src/context/ChatDetailContext.tsx +1 -1
  163. package/src/core/useChatListener.ts +2 -4
  164. package/src/core/useUserListener.ts +0 -8
  165. package/src/hooks/flows/useFlow.ts +12 -3
  166. package/src/hooks/message/useSendMessage.ts +1 -1
  167. package/src/hooks/useConversationList.ts +6 -40
  168. package/src/hooks/useFileAttachment.ts +163 -0
  169. package/src/hooks/useFileDownload.ts +200 -0
  170. package/src/hooks/useImageAttachment.ts +1 -1
  171. package/src/hooks/useLinkPreview/useLinkPreview.ts +6 -1
  172. package/src/screens/chat-detail/ChatComposer.tsx +61 -30
  173. package/src/screens/chat-detail/ChatDetail.tsx +1 -7
  174. package/src/screens/chat-detail/ChatDetailHeader.tsx +6 -7
  175. package/src/screens/chat-detail/ChatLinkPreview.tsx +16 -12
  176. package/src/screens/chat-detail/ChatListLegend.tsx +2 -6
  177. package/src/screens/chat-detail/conversationHeader.utils.ts +16 -6
  178. package/src/screens/chat-detail/hooks/useAttachmentMapping.ts +58 -0
  179. package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +50 -11
  180. package/src/screens/chat-detail/types.ts +6 -13
  181. package/src/screens/inbox/Inbox.tsx +5 -1
  182. package/src/services/apis.ts +0 -38
  183. package/src/services/attachmentHandlers/fileAttachmentHandler.ts +8 -7
  184. package/src/services/attachmentHandlers/index.ts +4 -1
  185. package/src/store/conversation.ts +6 -55
  186. package/src/translation/resources/i18n.ts +9 -0
  187. package/src/types/attachment.ts +23 -1
  188. package/src/types/auth.ts +1 -0
  189. package/src/types/chat.ts +16 -20
  190. package/src/utils/conversation.ts +2 -40
  191. package/src/utils/device.ts +58 -0
  192. package/src/utils/imageUtils.ts +50 -28
  193. package/src/utils/message.ts +3 -2
  194. package/src/utils/messageUtils.ts +11 -3
  195. package/lib/module/components/AttachmentPreview.js +0 -252
  196. package/lib/module/components/AttachmentPreview.js.map +0 -1
  197. package/lib/typescript/src/components/AttachmentPreview.d.ts +0 -28
  198. package/lib/typescript/src/components/AttachmentPreview.d.ts.map +0 -1
  199. package/src/components/AttachmentPreview.tsx +0 -310
@@ -1,4 +1,5 @@
1
1
  import type { ImageFile } from '../types/imageUpload';
2
+ import Images from '../assets/images';
2
3
 
3
4
  export const generateUUID = (): string => {
4
5
  return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
@@ -17,39 +18,60 @@ export const isVideoFromPicker = (pickedItem: any): boolean => {
17
18
  return mime.startsWith('video/');
18
19
  };
19
20
 
21
+ const mimeMap: Record<string, string> = {
22
+ jpg: 'image/jpeg',
23
+ jpeg: 'image/jpeg',
24
+ png: 'image/png',
25
+ webp: 'image/webp',
26
+ heic: 'image/heic',
27
+ heif: 'image/heif',
28
+ mp4: 'video/mp4',
29
+ mov: 'video/quicktime',
30
+ avi: 'video/x-msvideo',
31
+ mkv: 'video/x-matroska',
32
+ webm: 'video/webm',
33
+ m4v: 'video/mp4',
34
+ flv: 'video/x-flv',
35
+ wmv: 'video/x-ms-wmv',
36
+ mp3: 'audio/mpeg',
37
+ wav: 'audio/wav',
38
+ m4a: 'audio/mp4',
39
+ aac: 'audio/aac',
40
+ flac: 'audio/flac',
41
+ ogg: 'audio/ogg',
42
+ pdf: 'application/pdf',
43
+ doc: 'application/msword',
44
+ docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
45
+ xls: 'application/vnd.ms-excel',
46
+ xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
47
+ zip: 'application/zip',
48
+ };
49
+
20
50
  export const getMimeType = (fileName: string): string => {
21
51
  const ext = fileName.split('.').pop()?.toLowerCase();
22
- const mimeMap: Record<string, string> = {
23
- jpg: 'image/jpeg',
24
- jpeg: 'image/jpeg',
25
- png: 'image/png',
26
- webp: 'image/webp',
27
- heic: 'image/heic',
28
- heif: 'image/heif',
29
- mp4: 'video/mp4',
30
- mov: 'video/quicktime',
31
- avi: 'video/x-msvideo',
32
- mkv: 'video/x-matroska',
33
- webm: 'video/webm',
34
- m4v: 'video/mp4',
35
- flv: 'video/x-flv',
36
- wmv: 'video/x-ms-wmv',
37
- mp3: 'audio/mpeg',
38
- wav: 'audio/wav',
39
- m4a: 'audio/mp4',
40
- aac: 'audio/aac',
41
- flac: 'audio/flac',
42
- ogg: 'audio/ogg',
43
- pdf: 'application/pdf',
44
- doc: 'application/msword',
45
- docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
46
- xls: 'application/vnd.ms-excel',
47
- xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
48
- zip: 'application/zip',
49
- };
50
52
  return mimeMap[ext || ''] || 'application/octet-stream';
51
53
  };
52
54
 
55
+ export const getFileIcon = (mimeType?: string): number => {
56
+ if (mimeType?.startsWith('image/')) return Images.ICON_IMG;
57
+
58
+ switch (mimeType) {
59
+ case mimeMap.pdf:
60
+ return Images.ICON_PDF;
61
+
62
+ case mimeMap.doc:
63
+ case mimeMap.docx:
64
+ return Images.ICON_WORD;
65
+
66
+ case mimeMap.xls:
67
+ case mimeMap.xlsx:
68
+ return Images.ICON_EXCEL;
69
+
70
+ default:
71
+ return Images.ICON_TXT;
72
+ }
73
+ };
74
+
53
75
  export const formatFileSize = (bytes: number): string => {
54
76
  if (bytes === 0) return '0 Bytes';
55
77
  const k = 1024;
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  PeerType,
3
3
  SessionType,
4
+ type ConversationItem,
4
5
  type MessageItem,
5
6
  } from '@droppii/openim-rn-client-sdk';
6
- import { type DConversationItem, type DMessageItem } from '../types/chat';
7
+ import { type DMessageItem } from '../types/chat';
7
8
  import { getConversationID } from './conversation';
8
9
 
9
10
  const getMessageTime = (message: DMessageItem) =>
@@ -126,7 +127,7 @@ export const belongsToConversation = (
126
127
  }
127
128
  };
128
129
 
129
- export const getReceiverId = (conversation?: DConversationItem) => {
130
+ export const getReceiverId = (conversation?: ConversationItem) => {
130
131
  if (conversation == null) return { groupID: '', recvID: '' };
131
132
 
132
133
  if (conversation.peerType === PeerType.Group) {
@@ -2,7 +2,11 @@
2
2
  * Message formatting and preview utilities
3
3
  */
4
4
 
5
- import { MessageType } from '@droppii/openim-rn-client-sdk';
5
+ import {
6
+ MessageType,
7
+ PeerType,
8
+ type ConversationItem,
9
+ } from '@droppii/openim-rn-client-sdk';
6
10
  import type { DMessageItem } from '../types/chat';
7
11
  import { DChatMessageType } from '../types/message';
8
12
  import { formatDuration } from './dateTimeUtils';
@@ -86,7 +90,6 @@ export const getMessagePreview = (message: DMessageItem): string => {
86
90
  // Preview link message - show with [Link] prefix
87
91
  const urlText =
88
92
  message?.urlTextElem?.content || message?.urlTextElem?.urls?.[0] || '';
89
- console.log('message', urlText);
90
93
  return urlText ? `[Link] ${urlText}` : '[Link]';
91
94
 
92
95
  case MessageType.AtTextMessage:
@@ -100,7 +103,8 @@ export const getMessagePreview = (message: DMessageItem): string => {
100
103
 
101
104
  export const getLastMessageText = (
102
105
  message: DMessageItem | undefined,
103
- currentUserId?: string
106
+ currentUserId?: string,
107
+ conversation?: ConversationItem
104
108
  ): string => {
105
109
  if (!message) return '';
106
110
 
@@ -117,5 +121,9 @@ export const getLastMessageText = (
117
121
  return `${message.senderNickname}: ${preview}`;
118
122
  }
119
123
 
124
+ if (conversation?.peerType === PeerType.Bot) {
125
+ return `${conversation?.showName || ''}: ${preview}`;
126
+ }
127
+
120
128
  return preview;
121
129
  };
@@ -1,252 +0,0 @@
1
- "use strict";
2
-
3
- import { memo } from 'react';
4
- import { ScrollView, StyleSheet } from 'react-native';
5
- import { KContainer, KImage, KColors, KLabel } from '@droppii/libs';
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- const formatDuration = seconds => {
8
- const totalSecs = Math.floor(seconds);
9
- const mins = Math.floor(totalSecs / 60);
10
- const secs = totalSecs % 60;
11
- return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
12
- };
13
- const getAttachmentIcon = type => {
14
- switch (type) {
15
- case 'image':
16
- return 'image';
17
- case 'video':
18
- return 'play-circle';
19
- case 'audio':
20
- return 'music';
21
- case 'document':
22
- return 'file-document';
23
- case 'file':
24
- default:
25
- return 'file';
26
- }
27
- };
28
- export const AttachmentPreview = /*#__PURE__*/memo(({
29
- visible,
30
- attachments,
31
- onRemove
32
- }) => {
33
- if (!visible || !attachments?.length) {
34
- return null;
35
- }
36
- return /*#__PURE__*/_jsx(KContainer.View, {
37
- paddingH: "0.75rem"
38
- // paddingV="0.75rem"
39
- ,
40
- brW: 1,
41
- brC: KColors.palette.gray.w100,
42
- background: KColors.white,
43
- style: styles.container,
44
- children: /*#__PURE__*/_jsx(KContainer.View, {
45
- row: true,
46
- alignItems: true,
47
- minH: 70,
48
- children: /*#__PURE__*/_jsx(KContainer.View, {
49
- flex: true,
50
- children: /*#__PURE__*/_jsx(ScrollView, {
51
- horizontal: true,
52
- showsHorizontalScrollIndicator: false,
53
- scrollEventThrottle: 16,
54
- contentContainerStyle: styles.scrollContent,
55
- children: attachments.map((item, index) => {
56
- const {
57
- type,
58
- metadata,
59
- uploadProgress,
60
- error,
61
- isUploading,
62
- thumbnailUrl
63
- } = item;
64
- const isImage = type === 'image';
65
- const isVideo = type === 'video';
66
- const hasPreview = isImage || isVideo;
67
- return /*#__PURE__*/_jsxs(KContainer.View, {
68
- children: [/*#__PURE__*/_jsxs(KContainer.View, {
69
- style: styles.thumbnail,
70
- center: true,
71
- children: [isVideo && thumbnailUrl && /*#__PURE__*/_jsx(KImage.Base, {
72
- uri: thumbnailUrl,
73
- width: 48,
74
- height: 48,
75
- resizeMode: "cover"
76
- }), isVideo && !thumbnailUrl && /*#__PURE__*/_jsx(KContainer.View, {
77
- style: [styles.videoBg, styles.videoThumbnail]
78
- }), isImage && /*#__PURE__*/_jsx(KImage.Base, {
79
- uri: `file://${metadata.path}`,
80
- width: 48,
81
- height: 48
82
- }), !hasPreview && /*#__PURE__*/_jsx(KContainer.View, {
83
- style: styles.iconOverlay,
84
- center: true,
85
- background: KColors.palette.gray.w100,
86
- children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
87
- name: getAttachmentIcon(type),
88
- provider: "MaterialCommunityIcons",
89
- size: 24,
90
- color: KColors.palette.primary.w400
91
- })
92
- }), isVideo && !!metadata.duration && /*#__PURE__*/_jsx(KContainer.View, {
93
- style: styles.durationBadge,
94
- center: true,
95
- children: /*#__PURE__*/_jsx(KLabel.Text, {
96
- typo: "TextXsNormal",
97
- color: KColors.white,
98
- style: styles.durationText,
99
- children: formatDuration(metadata.duration / 1000)
100
- })
101
- }), !hasPreview && /*#__PURE__*/_jsx(KContainer.View, {
102
- style: styles.typeIcon,
103
- center: true,
104
- children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
105
- name: getAttachmentIcon(type),
106
- provider: "MaterialCommunityIcons",
107
- size: 14,
108
- color: KColors.white
109
- })
110
- }), error && /*#__PURE__*/_jsx(KContainer.View, {
111
- style: styles.errorOverlay,
112
- center: true,
113
- children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
114
- name: "close-circle",
115
- provider: "MaterialCommunityIcons",
116
- size: 28,
117
- color: KColors.white
118
- })
119
- }), isUploading && /*#__PURE__*/_jsx(KContainer.View, {
120
- style: styles.progressOverlay,
121
- center: true,
122
- children: /*#__PURE__*/_jsxs(KLabel.Text, {
123
- typo: "TextSmNormal",
124
- color: KColors.white,
125
- children: [uploadProgress, "%"]
126
- })
127
- })]
128
- }), /*#__PURE__*/_jsx(KContainer.Touchable, {
129
- style: styles.removeButton,
130
- center: true,
131
- br: "round",
132
- background: KColors.black,
133
- onPress: () => onRemove(type, index),
134
- disabled: isUploading,
135
- hitSlop: {
136
- top: 10,
137
- bottom: 10,
138
- left: 10,
139
- right: 10
140
- },
141
- children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
142
- name: "close",
143
- provider: "MaterialCommunityIcons",
144
- size: 14,
145
- color: KColors.white
146
- })
147
- })]
148
- }, `${type}-${index}`);
149
- })
150
- })
151
- })
152
- })
153
- });
154
- });
155
- AttachmentPreview.displayName = 'AttachmentPreview';
156
- const styles = StyleSheet.create({
157
- container: {
158
- // minHeight: 80,
159
- },
160
- scrollContent: {
161
- alignItems: 'center'
162
- },
163
- thumbnail: {
164
- position: 'relative',
165
- width: 48,
166
- height: 48,
167
- borderRadius: 4,
168
- overflow: 'hidden',
169
- marginRight: 8,
170
- backgroundColor: KColors.palette.gray.w50
171
- },
172
- durationBadge: {
173
- position: 'absolute',
174
- bottom: 4,
175
- right: 4,
176
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
177
- borderRadius: 3,
178
- paddingVertical: 2,
179
- paddingHorizontal: 4
180
- },
181
- durationText: {
182
- fontSize: 11,
183
- fontWeight: '600'
184
- },
185
- iconOverlay: {
186
- width: 48,
187
- height: 48,
188
- borderRadius: 4
189
- },
190
- videoIcon: {
191
- position: 'absolute',
192
- top: 2,
193
- right: 2,
194
- backgroundColor: 'rgba(0, 0, 0, 0.6)',
195
- borderRadius: 8,
196
- width: 20,
197
- height: 20
198
- },
199
- typeIcon: {
200
- position: 'absolute',
201
- bottom: 2,
202
- right: 2,
203
- backgroundColor: 'rgba(0, 0, 0, 0.7)',
204
- borderRadius: 6,
205
- width: 16,
206
- height: 16
207
- },
208
- videoBg: {
209
- width: 48,
210
- height: 48,
211
- borderRadius: 4
212
- },
213
- videoThumbnail: {
214
- backgroundColor: KColors.black
215
- },
216
- progressOverlay: {
217
- position: 'absolute',
218
- top: 0,
219
- left: 0,
220
- right: 0,
221
- bottom: 0,
222
- backgroundColor: 'rgba(0, 0, 0, 0.6)'
223
- },
224
- errorOverlay: {
225
- position: 'absolute',
226
- top: 0,
227
- left: 0,
228
- right: 0,
229
- bottom: 0,
230
- backgroundColor: 'rgba(255, 59, 48, 0.8)'
231
- },
232
- removeButton: {
233
- position: 'absolute',
234
- top: -8,
235
- right: 2,
236
- width: 22,
237
- height: 22,
238
- shadowColor: '#000',
239
- shadowOffset: {
240
- width: 0,
241
- height: 1
242
- },
243
- shadowOpacity: 0.2,
244
- shadowRadius: 2,
245
- elevation: 3
246
- },
247
- sendButton: {
248
- width: 48,
249
- height: 48
250
- }
251
- });
252
- //# sourceMappingURL=AttachmentPreview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["memo","ScrollView","StyleSheet","KContainer","KImage","KColors","KLabel","jsx","_jsx","jsxs","_jsxs","formatDuration","seconds","totalSecs","Math","floor","mins","secs","toString","padStart","getAttachmentIcon","type","AttachmentPreview","visible","attachments","onRemove","length","View","paddingH","brW","brC","palette","gray","w100","background","white","style","styles","container","children","row","alignItems","minH","flex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","contentContainerStyle","scrollContent","map","item","index","metadata","uploadProgress","error","isUploading","thumbnailUrl","isImage","isVideo","hasPreview","thumbnail","center","Base","uri","width","height","resizeMode","videoBg","videoThumbnail","path","iconOverlay","VectorIcons","name","provider","size","color","primary","w400","duration","durationBadge","Text","typo","durationText","typeIcon","errorOverlay","progressOverlay","Touchable","removeButton","br","black","onPress","disabled","hitSlop","top","bottom","left","right","displayName","create","position","borderRadius","overflow","marginRight","backgroundColor","w50","paddingVertical","paddingHorizontal","fontSize","fontWeight","videoIcon","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","sendButton"],"sourceRoot":"../../../src","sources":["components/AttachmentPreview.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,28 +0,0 @@
1
- type AttachmentType = 'image' | 'video' | 'audio' | 'document' | 'file';
2
- interface AttachmentMetadata {
3
- path: string;
4
- filename?: string;
5
- size?: number;
6
- duration?: number;
7
- mimeType?: string;
8
- width?: number;
9
- height?: number;
10
- }
11
- interface AttachmentItem {
12
- metadata: AttachmentMetadata;
13
- uploadProgress: number;
14
- error: string | null;
15
- isUploading: boolean;
16
- uploadedUrl?: string;
17
- thumbnailUrl?: string;
18
- }
19
- interface AttachmentPreviewProps {
20
- visible: boolean;
21
- attachments?: Array<AttachmentItem & {
22
- type: AttachmentType;
23
- }>;
24
- onRemove: (type: AttachmentType, index: number) => void;
25
- }
26
- export declare const AttachmentPreview: import("react").MemoExoticComponent<({ visible, attachments, onRemove }: AttachmentPreviewProps) => import("react").JSX.Element>;
27
- export {};
28
- //# sourceMappingURL=AttachmentPreview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AttachmentPreview.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentPreview.tsx"],"names":[],"mappings":"AAIA,KAAK,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAExE,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AA2BD,eAAO,MAAM,iBAAiB,2EACS,sBAAsB,iCA4J5D,CAAC"}