@droppii-org/chat-mobile 0.2.7 → 0.2.8

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 (323) hide show
  1. package/lib/module/components/AttachmentPreview.js +250 -0
  2. package/lib/module/components/AttachmentPreview.js.map +1 -0
  3. package/lib/module/components/MediaViewer/index.js +2 -0
  4. package/lib/module/components/MediaViewer/index.js.map +1 -0
  5. package/lib/module/components/MediaViewerModal.js +57 -0
  6. package/lib/module/components/MediaViewerModal.js.map +1 -0
  7. package/lib/module/components/MergedImageGrid.js +173 -0
  8. package/lib/module/components/MergedImageGrid.js.map +1 -0
  9. package/lib/module/components/ThreadCard/thread-card.utils.js +80 -4
  10. package/lib/module/components/ThreadCard/thread-card.utils.js.map +1 -1
  11. package/lib/module/components/messages/fileMessage/index.js +26 -0
  12. package/lib/module/components/messages/fileMessage/index.js.map +1 -0
  13. package/lib/module/components/messages/imageMessage/index.js +118 -0
  14. package/lib/module/components/messages/imageMessage/index.js.map +1 -0
  15. package/lib/module/components/messages/linkMessage/index.js +122 -0
  16. package/lib/module/components/messages/linkMessage/index.js.map +1 -0
  17. package/lib/module/components/messages/mergedMessage/index.js +37 -0
  18. package/lib/module/components/messages/mergedMessage/index.js.map +1 -0
  19. package/lib/module/components/messages/styles.js +41 -0
  20. package/lib/module/components/messages/styles.js.map +1 -0
  21. package/lib/module/components/messages/textMessage/index.js +38 -0
  22. package/lib/module/components/messages/textMessage/index.js.map +1 -0
  23. package/lib/module/components/messages/types.js +14 -0
  24. package/lib/module/components/messages/types.js.map +1 -0
  25. package/lib/module/components/messages/videoMessage/index.js +110 -0
  26. package/lib/module/components/messages/videoMessage/index.js.map +1 -0
  27. package/lib/module/config/api-endpoints.js +66 -0
  28. package/lib/module/config/api-endpoints.js.map +1 -0
  29. package/lib/module/config/attachment-priority.js +81 -0
  30. package/lib/module/config/attachment-priority.js.map +1 -0
  31. package/lib/module/config/configuration.js +50 -0
  32. package/lib/module/config/configuration.js.map +1 -0
  33. package/lib/module/config/index.js +22 -0
  34. package/lib/module/config/index.js.map +1 -0
  35. package/lib/module/core/index.js +19 -1
  36. package/lib/module/core/index.js.map +1 -1
  37. package/lib/module/core/useChatListener.js +0 -14
  38. package/lib/module/core/useChatListener.js.map +1 -1
  39. package/lib/module/hooks/message/useSendMessage.js +10 -5
  40. package/lib/module/hooks/message/useSendMessage.js.map +1 -1
  41. package/lib/module/hooks/useChatMessages.js +0 -3
  42. package/lib/module/hooks/useChatMessages.js.map +1 -1
  43. package/lib/module/hooks/useImageAttachment.js +263 -0
  44. package/lib/module/hooks/useImageAttachment.js.map +1 -0
  45. package/lib/module/hooks/useMediaViewer.js +24 -0
  46. package/lib/module/hooks/useMediaViewer.js.map +1 -0
  47. package/lib/module/hooks/useSendAttachment.js +182 -0
  48. package/lib/module/hooks/useSendAttachment.js.map +1 -0
  49. package/lib/module/hooks/useVideoAttachment.js +251 -0
  50. package/lib/module/hooks/useVideoAttachment.js.map +1 -0
  51. package/lib/module/index.js +13 -1
  52. package/lib/module/index.js.map +1 -1
  53. package/lib/module/screens/MediaView/VideoPlayer.js +177 -0
  54. package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -0
  55. package/lib/module/screens/MediaView/index.js +264 -0
  56. package/lib/module/screens/MediaView/index.js.map +1 -0
  57. package/lib/module/screens/chat-detail/ChatComposer.js +190 -196
  58. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
  59. package/lib/module/screens/chat-detail/ChatDetail.js +94 -63
  60. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  61. package/lib/module/screens/chat-detail/ChatListLegend.js +5 -13
  62. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  63. package/lib/module/screens/chat-detail/components/ChatInputActions.js +51 -0
  64. package/lib/module/screens/chat-detail/components/ChatInputActions.js.map +1 -0
  65. package/lib/module/screens/chat-detail/components/ChatMessageInput.js +93 -0
  66. package/lib/module/screens/chat-detail/components/ChatMessageInput.js.map +1 -0
  67. package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +221 -0
  68. package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -0
  69. package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js +114 -0
  70. package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js.map +1 -0
  71. package/lib/module/screens/chat-detail/hooks/useChatComposerState.js +26 -0
  72. package/lib/module/screens/chat-detail/hooks/useChatComposerState.js.map +1 -0
  73. package/lib/module/screens/chat-detail/index.js +0 -1
  74. package/lib/module/screens/chat-detail/index.js.map +1 -1
  75. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +33 -13
  76. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  77. package/lib/module/screens/chat-detail/legend/messageTypes.js +15 -0
  78. package/lib/module/screens/chat-detail/legend/messageTypes.js.map +1 -0
  79. package/lib/module/screens/inbox/MessagesTab.js.map +1 -1
  80. package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +61 -0
  81. package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -0
  82. package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js +54 -0
  83. package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js.map +1 -0
  84. package/lib/module/services/attachmentHandlers/index.js +12 -0
  85. package/lib/module/services/attachmentHandlers/index.js.map +1 -0
  86. package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js +85 -0
  87. package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js.map +1 -0
  88. package/lib/module/services/attachmentOrchestrator.js +225 -0
  89. package/lib/module/services/attachmentOrchestrator.js.map +1 -0
  90. package/lib/module/services/auth.js +35 -0
  91. package/lib/module/services/auth.js.map +1 -0
  92. package/lib/module/services/endpoints.js +20 -1
  93. package/lib/module/services/endpoints.js.map +1 -1
  94. package/lib/module/services/imageUpload.js +126 -0
  95. package/lib/module/services/imageUpload.js.map +1 -0
  96. package/lib/module/translation/resources/i18n.js +22 -8
  97. package/lib/module/translation/resources/i18n.js.map +1 -1
  98. package/lib/module/types/attachment.js +2 -0
  99. package/lib/module/types/attachment.js.map +1 -0
  100. package/lib/module/types/attachmentHandler.js +20 -0
  101. package/lib/module/types/attachmentHandler.js.map +1 -0
  102. package/lib/module/types/imageUpload.js +2 -0
  103. package/lib/module/types/imageUpload.js.map +1 -0
  104. package/lib/module/types/message.js +1 -0
  105. package/lib/module/types/message.js.map +1 -1
  106. package/lib/module/utils/chatImageDimens.js +148 -0
  107. package/lib/module/utils/chatImageDimens.js.map +1 -0
  108. package/lib/module/utils/device.js +65 -0
  109. package/lib/module/utils/device.js.map +1 -0
  110. package/lib/module/utils/imageUrlOptimizer.js +41 -0
  111. package/lib/module/utils/imageUrlOptimizer.js.map +1 -0
  112. package/lib/module/utils/imageUtils.js +69 -0
  113. package/lib/module/utils/imageUtils.js.map +1 -0
  114. package/lib/module/utils/resolveMessageType.js +3 -0
  115. package/lib/module/utils/resolveMessageType.js.map +1 -1
  116. package/lib/module/utils/ui.js +17 -0
  117. package/lib/module/utils/ui.js.map +1 -0
  118. package/lib/module/utils/url.js +1 -1
  119. package/lib/module/utils/url.js.map +1 -1
  120. package/lib/module/utils/videoThumbnail.js +62 -0
  121. package/lib/module/utils/videoThumbnail.js.map +1 -0
  122. package/lib/typescript/src/components/AttachmentPreview.d.ts +28 -0
  123. package/lib/typescript/src/components/AttachmentPreview.d.ts.map +1 -0
  124. package/lib/typescript/src/components/MediaViewer/index.d.ts +1 -0
  125. package/lib/typescript/src/components/MediaViewer/index.d.ts.map +1 -0
  126. package/lib/typescript/src/components/MediaViewerModal.d.ts +10 -0
  127. package/lib/typescript/src/components/MediaViewerModal.d.ts.map +1 -0
  128. package/lib/typescript/src/components/MergedImageGrid.d.ts +16 -0
  129. package/lib/typescript/src/components/MergedImageGrid.d.ts.map +1 -0
  130. package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts.map +1 -1
  131. package/lib/typescript/src/components/messages/fileMessage/index.d.ts +3 -0
  132. package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -0
  133. package/lib/typescript/src/components/messages/imageMessage/index.d.ts +3 -0
  134. package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -0
  135. package/lib/typescript/src/components/messages/linkMessage/index.d.ts +9 -0
  136. package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -0
  137. package/lib/typescript/src/components/messages/mergedMessage/index.d.ts +3 -0
  138. package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -0
  139. package/lib/typescript/src/components/messages/styles.d.ts +36 -0
  140. package/lib/typescript/src/components/messages/styles.d.ts.map +1 -0
  141. package/lib/typescript/src/components/messages/textMessage/index.d.ts +9 -0
  142. package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -0
  143. package/lib/typescript/src/components/messages/types.d.ts +10 -0
  144. package/lib/typescript/src/components/messages/types.d.ts.map +1 -0
  145. package/lib/typescript/src/components/messages/videoMessage/index.d.ts +3 -0
  146. package/lib/typescript/src/components/messages/videoMessage/index.d.ts.map +1 -0
  147. package/lib/typescript/src/config/api-endpoints.d.ts +40 -0
  148. package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -0
  149. package/lib/typescript/src/config/attachment-priority.d.ts +31 -0
  150. package/lib/typescript/src/config/attachment-priority.d.ts.map +1 -0
  151. package/lib/typescript/src/config/configuration.d.ts +30 -0
  152. package/lib/typescript/src/config/configuration.d.ts.map +1 -0
  153. package/lib/typescript/src/config/index.d.ts +15 -0
  154. package/lib/typescript/src/config/index.d.ts.map +1 -0
  155. package/lib/typescript/src/core/index.d.ts +13 -1
  156. package/lib/typescript/src/core/index.d.ts.map +1 -1
  157. package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
  158. package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
  159. package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -1
  160. package/lib/typescript/src/hooks/useImageAttachment.d.ts +20 -0
  161. package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -0
  162. package/lib/typescript/src/hooks/useMediaViewer.d.ts +13 -0
  163. package/lib/typescript/src/hooks/useMediaViewer.d.ts.map +1 -0
  164. package/lib/typescript/src/hooks/useSendAttachment.d.ts +59 -0
  165. package/lib/typescript/src/hooks/useSendAttachment.d.ts.map +1 -0
  166. package/lib/typescript/src/hooks/useVideoAttachment.d.ts +29 -0
  167. package/lib/typescript/src/hooks/useVideoAttachment.d.ts.map +1 -0
  168. package/lib/typescript/src/index.d.ts +14 -1
  169. package/lib/typescript/src/index.d.ts.map +1 -1
  170. package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts +12 -0
  171. package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -0
  172. package/lib/typescript/src/screens/MediaView/index.d.ts +11 -0
  173. package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -0
  174. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +1 -1
  175. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
  176. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
  177. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  178. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts +1 -1
  179. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  180. package/lib/typescript/src/screens/chat-detail/components/ChatInputActions.d.ts +8 -0
  181. package/lib/typescript/src/screens/chat-detail/components/ChatInputActions.d.ts.map +1 -0
  182. package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts +15 -0
  183. package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts.map +1 -0
  184. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +23 -0
  185. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -0
  186. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts +15 -0
  187. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts.map +1 -0
  188. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts +13 -0
  189. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts.map +1 -0
  190. package/lib/typescript/src/screens/chat-detail/index.d.ts +0 -2
  191. package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -1
  192. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +3 -1
  193. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  194. package/lib/typescript/src/screens/chat-detail/legend/messageTypes.d.ts +13 -0
  195. package/lib/typescript/src/screens/chat-detail/legend/messageTypes.d.ts.map +1 -0
  196. package/lib/typescript/src/screens/chat-detail/types.d.ts +4 -1
  197. package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
  198. package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts +22 -0
  199. package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -0
  200. package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts +3 -0
  201. package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts.map +1 -0
  202. package/lib/typescript/src/services/attachmentHandlers/index.d.ts +5 -0
  203. package/lib/typescript/src/services/attachmentHandlers/index.d.ts.map +1 -0
  204. package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts +31 -0
  205. package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts.map +1 -0
  206. package/lib/typescript/src/services/attachmentOrchestrator.d.ts +5 -0
  207. package/lib/typescript/src/services/attachmentOrchestrator.d.ts.map +1 -0
  208. package/lib/typescript/src/services/auth.d.ts +19 -0
  209. package/lib/typescript/src/services/auth.d.ts.map +1 -0
  210. package/lib/typescript/src/services/endpoints.d.ts +11 -1
  211. package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
  212. package/lib/typescript/src/services/imageUpload.d.ts +7 -0
  213. package/lib/typescript/src/services/imageUpload.d.ts.map +1 -0
  214. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  215. package/lib/typescript/src/types/attachment.d.ts +72 -0
  216. package/lib/typescript/src/types/attachment.d.ts.map +1 -0
  217. package/lib/typescript/src/types/attachmentHandler.d.ts +13 -0
  218. package/lib/typescript/src/types/attachmentHandler.d.ts.map +1 -0
  219. package/lib/typescript/src/types/imageUpload.d.ts +26 -0
  220. package/lib/typescript/src/types/imageUpload.d.ts.map +1 -0
  221. package/lib/typescript/src/types/message.d.ts +1 -0
  222. package/lib/typescript/src/types/message.d.ts.map +1 -1
  223. package/lib/typescript/src/utils/chatImageDimens.d.ts +34 -0
  224. package/lib/typescript/src/utils/chatImageDimens.d.ts.map +1 -0
  225. package/lib/typescript/src/utils/device.d.ts +7 -0
  226. package/lib/typescript/src/utils/device.d.ts.map +1 -0
  227. package/lib/typescript/src/utils/imageUrlOptimizer.d.ts +12 -0
  228. package/lib/typescript/src/utils/imageUrlOptimizer.d.ts.map +1 -0
  229. package/lib/typescript/src/utils/imageUtils.d.ts +9 -0
  230. package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -0
  231. package/lib/typescript/src/utils/resolveMessageType.d.ts.map +1 -1
  232. package/lib/typescript/src/utils/ui.d.ts +13 -0
  233. package/lib/typescript/src/utils/ui.d.ts.map +1 -0
  234. package/lib/typescript/src/utils/videoThumbnail.d.ts +16 -0
  235. package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -0
  236. package/package.json +15 -3
  237. package/src/components/AttachmentPreview.tsx +304 -0
  238. package/src/components/MediaViewer/index.tsx +0 -0
  239. package/src/components/MediaViewerModal.tsx +70 -0
  240. package/src/components/MergedImageGrid.tsx +238 -0
  241. package/src/components/ThreadCard/thread-card.utils.ts +95 -4
  242. package/src/components/messages/fileMessage/index.tsx +30 -0
  243. package/src/components/messages/imageMessage/index.tsx +137 -0
  244. package/src/components/messages/linkMessage/index.tsx +162 -0
  245. package/src/components/messages/mergedMessage/index.tsx +45 -0
  246. package/src/components/messages/styles.ts +39 -0
  247. package/src/components/messages/textMessage/index.tsx +53 -0
  248. package/src/components/messages/types.ts +22 -0
  249. package/src/components/messages/videoMessage/index.tsx +120 -0
  250. package/src/config/api-endpoints.ts +72 -0
  251. package/src/config/attachment-priority.ts +93 -0
  252. package/src/config/configuration.ts +50 -0
  253. package/src/config/index.ts +19 -0
  254. package/src/core/index.ts +25 -1
  255. package/src/core/useChatListener.ts +0 -21
  256. package/src/hooks/message/useSendMessage.ts +12 -5
  257. package/src/hooks/useChatMessages.ts +0 -4
  258. package/src/hooks/useImageAttachment.ts +348 -0
  259. package/src/hooks/useMediaViewer.ts +32 -0
  260. package/src/hooks/useSendAttachment.ts +295 -0
  261. package/src/hooks/useVideoAttachment.ts +334 -0
  262. package/src/index.tsx +13 -1
  263. package/src/screens/MediaView/VideoPlayer.tsx +211 -0
  264. package/src/screens/MediaView/index.tsx +327 -0
  265. package/src/screens/chat-detail/ChatComposer.tsx +206 -271
  266. package/src/screens/chat-detail/ChatDetail.tsx +142 -89
  267. package/src/screens/chat-detail/ChatListLegend.tsx +9 -11
  268. package/src/screens/chat-detail/components/ChatInputActions.tsx +71 -0
  269. package/src/screens/chat-detail/components/ChatMessageInput.tsx +127 -0
  270. package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +291 -0
  271. package/src/screens/chat-detail/hooks/useChatComposerAnimation.ts +184 -0
  272. package/src/screens/chat-detail/hooks/useChatComposerState.ts +40 -0
  273. package/src/screens/chat-detail/index.ts +0 -2
  274. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +47 -24
  275. package/src/screens/chat-detail/legend/messageTypes.tsx +13 -0
  276. package/src/screens/chat-detail/types.ts +5 -1
  277. package/src/screens/inbox/MessagesTab.tsx +1 -1
  278. package/src/services/attachmentHandlers/fileAttachmentHandler.ts +78 -0
  279. package/src/services/attachmentHandlers/imageAttachmentHandler.ts +54 -0
  280. package/src/services/attachmentHandlers/index.ts +10 -0
  281. package/src/services/attachmentHandlers/videoAttachmentHandler.ts +114 -0
  282. package/src/services/attachmentOrchestrator.ts +300 -0
  283. package/src/services/auth.ts +34 -0
  284. package/src/services/endpoints.ts +24 -1
  285. package/src/services/imageUpload.ts +162 -0
  286. package/src/translation/resources/i18n.ts +22 -8
  287. package/src/types/attachment.ts +85 -0
  288. package/src/types/attachmentHandler.ts +31 -0
  289. package/src/types/imageUpload.ts +28 -0
  290. package/src/types/message.ts +1 -0
  291. package/src/utils/chatImageDimens.ts +178 -0
  292. package/src/utils/device.ts +73 -0
  293. package/src/utils/imageUrlOptimizer.ts +56 -0
  294. package/src/utils/imageUtils.ts +76 -0
  295. package/src/utils/resolveMessageType.ts +2 -0
  296. package/src/utils/ui.ts +19 -0
  297. package/src/utils/url.ts +1 -1
  298. package/src/utils/videoThumbnail.ts +85 -0
  299. package/lib/module/screens/chat-detail/ChatList.js +0 -147
  300. package/lib/module/screens/chat-detail/ChatList.js.map +0 -1
  301. package/lib/module/screens/chat-detail/ChatTextBubble.js +0 -62
  302. package/lib/module/screens/chat-detail/ChatTextBubble.js.map +0 -1
  303. package/lib/module/screens/chat-detail/legend/message-types.js +0 -244
  304. package/lib/module/screens/chat-detail/legend/message-types.js.map +0 -1
  305. package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js +0 -24
  306. package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js.map +0 -1
  307. package/lib/module/screens/chat-detail/messages/types.js +0 -4
  308. package/lib/module/screens/chat-detail/messages/types.js.map +0 -1
  309. package/lib/typescript/src/screens/chat-detail/ChatList.d.ts +0 -3
  310. package/lib/typescript/src/screens/chat-detail/ChatList.d.ts.map +0 -1
  311. package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts +0 -3
  312. package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts.map +0 -1
  313. package/lib/typescript/src/screens/chat-detail/legend/message-types.d.ts +0 -13
  314. package/lib/typescript/src/screens/chat-detail/legend/message-types.d.ts.map +0 -1
  315. package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts +0 -3
  316. package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts.map +0 -1
  317. package/lib/typescript/src/screens/chat-detail/messages/types.d.ts +0 -13
  318. package/lib/typescript/src/screens/chat-detail/messages/types.d.ts.map +0 -1
  319. package/src/screens/chat-detail/ChatList.tsx +0 -190
  320. package/src/screens/chat-detail/ChatTextBubble.tsx +0 -73
  321. package/src/screens/chat-detail/legend/message-types.tsx +0 -304
  322. package/src/screens/chat-detail/messages/ChatMessageBubble.tsx +0 -23
  323. package/src/screens/chat-detail/messages/types.ts +0 -14
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { KContainer, KLabel } from '@droppii/libs';
5
+ import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
6
+ import { messageStyles } from "../styles.js";
7
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
8
+ export const FileMessage = /*#__PURE__*/memo(({
9
+ message,
10
+ isOutgoing
11
+ }) => {
12
+ const fileName = message.fileElem?.fileName || message.content || '[File]';
13
+ return /*#__PURE__*/_jsx(KContainer.View, {
14
+ style: messageStyles.wrapper,
15
+ children: /*#__PURE__*/_jsx(KContainer.View, {
16
+ style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
17
+ children: /*#__PURE__*/_jsxs(KLabel.Text, {
18
+ typo: "TextSmNormal",
19
+ color: CHAT_BUBBLE_COLORS.text,
20
+ children: ["\uD83D\uDCCE ", fileName]
21
+ })
22
+ })
23
+ });
24
+ });
25
+ FileMessage.displayName = 'FileMessage';
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","KContainer","KLabel","CHAT_BUBBLE_COLORS","messageStyles","jsxs","_jsxs","jsx","_jsx","FileMessage","message","isOutgoing","fileName","fileElem","content","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","Text","typo","color","text","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/fileMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,WAAW,gBAAGT,IAAI,CAC7B,CAAC;EAAEU,OAAO;EAAEC;AAAmC,CAAC,KAAK;EACnD,MAAMC,QAAQ,GAAGF,OAAO,CAACG,QAAQ,EAAED,QAAQ,IAAIF,OAAO,CAACI,OAAO,IAAI,QAAQ;EAE1E,oBACEN,IAAA,CAACP,UAAU,CAACc,IAAI;IAACC,KAAK,EAAEZ,aAAa,CAACa,OAAQ;IAAAC,QAAA,eAC5CV,IAAA,CAACP,UAAU,CAACc,IAAI;MACdC,KAAK,EAAE,CACLZ,aAAa,CAACe,MAAM,EACpBR,UAAU,GACNP,aAAa,CAACgB,UAAU,GACxBhB,aAAa,CAACiB,cAAc,CAChC;MAAAH,QAAA,eAEFZ,KAAA,CAACJ,MAAM,CAACoB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAErB,kBAAkB,CAACsB,IAAK;QAAAP,QAAA,GAAC,eAC5D,EAACN,QAAQ;MAAA,CACD;IAAC,CACC;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,WAAW,CAACiB,WAAW,GAAG,aAAa","ignoreList":[]}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ import { memo, useState, useCallback, useMemo } from 'react';
4
+ import { StyleSheet, Image, useWindowDimensions } from 'react-native';
5
+ import { KContainer, KImage } from '@droppii/libs';
6
+ import ChatImageDimens from "../../../utils/chatImageDimens.js";
7
+ import { messageStyles } from "../styles.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export const ImageMessage = /*#__PURE__*/memo(({
10
+ message,
11
+ onMediaPress
12
+ }) => {
13
+ const windowWidth = useWindowDimensions().width;
14
+ const [isLoading, setIsLoading] = useState(true);
15
+ const pictureElem = message.pictureElem;
16
+ const rawImageUrl = pictureElem?.snapshotPicture?.url || pictureElem?.bigPicture?.url || pictureElem?.sourcePicture?.url;
17
+
18
+ // Calculate dimensions respecting aspect ratio and 80% device width
19
+ const imageDimensions = useMemo(() => {
20
+ if (!rawImageUrl) return {
21
+ width: 250,
22
+ height: 250
23
+ };
24
+ const responseWidth = pictureElem?.width || pictureElem?.bigPicture?.width || pictureElem?.snapshotPicture?.width;
25
+ const responseHeight = pictureElem?.height || pictureElem?.bigPicture?.height || pictureElem?.snapshotPicture?.height;
26
+ let imgWidth = responseWidth;
27
+ let imgHeight = responseHeight;
28
+
29
+ // If no dimensions in response, try to resolve from image source
30
+ if (!imgWidth || !imgHeight) {
31
+ try {
32
+ const source = Image.resolveAssetSource({
33
+ uri: rawImageUrl
34
+ });
35
+ imgWidth = source?.width || 300;
36
+ imgHeight = source?.height || 300;
37
+ } catch {
38
+ // Fallback to default if resolution fails
39
+ imgWidth = 300;
40
+ imgHeight = 300;
41
+ }
42
+ }
43
+ const aspectRatio = imgWidth / imgHeight;
44
+ // Account for all margins/padding: use 75% of window width with buffer
45
+ const horizontalBuffer = 16; // Left and right combined buffer
46
+ const maxWidth = Math.floor(windowWidth * 0.75 - horizontalBuffer);
47
+
48
+ // Calculate final dimensions
49
+ let finalWidth = maxWidth;
50
+ let finalHeight = maxWidth / aspectRatio;
51
+
52
+ // Cap maximum height to avoid overly tall images
53
+ const maxHeight = 500;
54
+ if (finalHeight > maxHeight) {
55
+ finalHeight = maxHeight;
56
+ finalWidth = finalHeight * aspectRatio;
57
+ }
58
+ return {
59
+ width: Math.round(finalWidth),
60
+ height: Math.round(finalHeight)
61
+ };
62
+ }, [pictureElem, rawImageUrl, windowWidth]);
63
+ const handleLoadEnd = useCallback(() => {
64
+ setIsLoading(false);
65
+ }, []);
66
+ const handlePress = useCallback(() => {
67
+ onMediaPress?.([{
68
+ url: rawImageUrl
69
+ }], 0);
70
+ }, [onMediaPress, rawImageUrl]);
71
+ if (!rawImageUrl) {
72
+ return null;
73
+ }
74
+
75
+ // Use dynamic optimization matching calculated dimensions
76
+ const optimizedUrl = ChatImageDimens.getOptimizedImageUrlWithDimensions(rawImageUrl, imageDimensions.width, imageDimensions.height);
77
+ return /*#__PURE__*/_jsx(KContainer.View, {
78
+ style: [messageStyles.wrapper, styles.wrapper],
79
+ children: /*#__PURE__*/_jsxs(KContainer.Touchable, {
80
+ onPress: handlePress,
81
+ style: [messageStyles.imageBubble, styles.imageContainer, {
82
+ width: imageDimensions.width,
83
+ height: imageDimensions.height
84
+ }],
85
+ children: [/*#__PURE__*/_jsx(KImage.Base, {
86
+ uri: optimizedUrl,
87
+ width: imageDimensions.width,
88
+ height: imageDimensions.height,
89
+ style: [messageStyles.imageBubble],
90
+ onLoadEnd: handleLoadEnd
91
+ }), isLoading && /*#__PURE__*/_jsx(KContainer.View, {
92
+ style: styles.skeleton
93
+ })]
94
+ })
95
+ });
96
+ });
97
+ ImageMessage.displayName = 'ImageMessage';
98
+ const styles = StyleSheet.create({
99
+ wrapper: {
100
+ // paddingRight: 8,
101
+ overflow: 'hidden'
102
+ },
103
+ skeleton: {
104
+ position: 'absolute',
105
+ top: 0,
106
+ left: 0,
107
+ right: 0,
108
+ bottom: 0,
109
+ backgroundColor: '#f0f0f0',
110
+ borderRadius: 8
111
+ },
112
+ imageContainer: {
113
+ position: 'relative',
114
+ overflow: 'hidden',
115
+ borderRadius: 8
116
+ }
117
+ });
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useState","useCallback","useMemo","StyleSheet","Image","useWindowDimensions","KContainer","KImage","ChatImageDimens","messageStyles","jsx","_jsx","jsxs","_jsxs","ImageMessage","message","onMediaPress","windowWidth","width","isLoading","setIsLoading","pictureElem","rawImageUrl","snapshotPicture","url","bigPicture","sourcePicture","imageDimensions","height","responseWidth","responseHeight","imgWidth","imgHeight","source","resolveAssetSource","uri","aspectRatio","horizontalBuffer","maxWidth","Math","floor","finalWidth","finalHeight","maxHeight","round","handleLoadEnd","handlePress","optimizedUrl","getOptimizedImageUrlWithDimensions","View","style","wrapper","styles","children","Touchable","onPress","imageBubble","imageContainer","Base","onLoadEnd","skeleton","displayName","create","overflow","position","top","left","right","bottom","backgroundColor","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/messages/imageMessage/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { Linking, StyleSheet } from 'react-native';
5
+ import { KContainer, KImage, KLabel, KColors, KSpacingValue } from '@droppii/libs';
6
+ import { formatMessageTime } from "../types.js";
7
+ import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const parseUrlMetadata = ex => {
10
+ if (!ex) return undefined;
11
+ try {
12
+ const parsed = JSON.parse(ex);
13
+ // Handle nested urlMetadata structure
14
+ return parsed.urlMetadata || parsed;
15
+ } catch {
16
+ return undefined;
17
+ }
18
+ };
19
+ const renderTextWithLinks = (content, urls) => {
20
+ if (!urls.length) {
21
+ return /*#__PURE__*/_jsx(KLabel.Text, {
22
+ typo: "TextMdNormal",
23
+ children: content
24
+ });
25
+ }
26
+ return /*#__PURE__*/_jsx(KLabel.Text, {
27
+ typo: "TextMdNormal",
28
+ color: CHAT_BUBBLE_COLORS.text,
29
+ children: content
30
+ });
31
+ };
32
+ export const LinkMessage = /*#__PURE__*/memo(({
33
+ message,
34
+ isOutgoing,
35
+ createdAtTime
36
+ }) => {
37
+ const content = message?.urlTextElem?.content;
38
+ const urls = message?.urlTextElem?.urls ?? [];
39
+ const metadata = parseUrlMetadata(message.ex);
40
+ const timeLabel = formatMessageTime(createdAtTime);
41
+ return /*#__PURE__*/_jsxs(KContainer.View, {
42
+ style: styles.wrapper,
43
+ children: [/*#__PURE__*/_jsxs(KContainer.View, {
44
+ style: [styles.bubble, isOutgoing ? styles.bubbleSent : styles.bubbleReceived],
45
+ children: [!!content?.trim() && /*#__PURE__*/_jsx(KContainer.View, {
46
+ style: styles.textRow,
47
+ children: renderTextWithLinks(content, urls)
48
+ }), metadata && /*#__PURE__*/_jsxs(KContainer.Touchable, {
49
+ style: styles.card,
50
+ onPress: () => metadata.url && Linking.openURL(metadata.url),
51
+ children: [!!metadata.image && /*#__PURE__*/_jsx(KContainer.View, {
52
+ style: styles.cardThumb,
53
+ children: /*#__PURE__*/_jsx(KImage.Base, {
54
+ uri: metadata.image,
55
+ style: StyleSheet.absoluteFill,
56
+ resizeMode: "cover"
57
+ })
58
+ }), /*#__PURE__*/_jsxs(KContainer.View, {
59
+ style: styles.cardBody,
60
+ children: [!!metadata.title && /*#__PURE__*/_jsx(KLabel.Text, {
61
+ typo: "TextNmMedium",
62
+ color: KColors.palette.gray.w900,
63
+ numberOfLines: 1,
64
+ children: metadata.title
65
+ }), !!metadata.url && /*#__PURE__*/_jsx(KLabel.Text, {
66
+ typo: "TextXsMedium",
67
+ color: KColors.palette.primary.w400,
68
+ numberOfLines: 1,
69
+ children: metadata.url
70
+ }), !!metadata.description && /*#__PURE__*/_jsx(KLabel.Text, {
71
+ typo: "TextXsNormal",
72
+ color: KColors.gray.normal,
73
+ numberOfLines: 2,
74
+ children: metadata.description
75
+ })]
76
+ })]
77
+ })]
78
+ }), !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
79
+ typo: "TextXsNormal",
80
+ color: CHAT_BUBBLE_COLORS.timestamp,
81
+ marginL: "0.25rem",
82
+ children: timeLabel
83
+ }) : null]
84
+ });
85
+ });
86
+ LinkMessage.displayName = 'LinkMessage';
87
+ const styles = StyleSheet.create({
88
+ wrapper: {
89
+ maxWidth: '80%'
90
+ },
91
+ bubble: {
92
+ paddingHorizontal: KSpacingValue['0.75rem'],
93
+ paddingVertical: KSpacingValue['0.5rem'],
94
+ borderRadius: KSpacingValue['1.25rem']
95
+ },
96
+ bubbleReceived: {
97
+ backgroundColor: CHAT_BUBBLE_COLORS.received
98
+ },
99
+ bubbleSent: {
100
+ backgroundColor: CHAT_BUBBLE_COLORS.sent
101
+ },
102
+ textRow: {
103
+ paddingHorizontal: KSpacingValue['0.25rem']
104
+ },
105
+ card: {
106
+ borderRadius: KSpacingValue['0.75rem'],
107
+ borderWidth: 1,
108
+ borderColor: 'rgba(57,62,64,0.1)',
109
+ backgroundColor: KColors.white,
110
+ overflow: 'hidden'
111
+ },
112
+ cardThumb: {
113
+ width: '100%',
114
+ aspectRatio: 16 / 9
115
+ },
116
+ cardBody: {
117
+ paddingHorizontal: KSpacingValue['0.75rem'],
118
+ paddingVertical: KSpacingValue['0.5rem'],
119
+ gap: 2
120
+ }
121
+ });
122
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","Linking","StyleSheet","KContainer","KImage","KLabel","KColors","KSpacingValue","formatMessageTime","CHAT_BUBBLE_COLORS","jsx","_jsx","jsxs","_jsxs","parseUrlMetadata","ex","undefined","parsed","JSON","parse","urlMetadata","renderTextWithLinks","content","urls","length","Text","typo","children","color","text","LinkMessage","message","isOutgoing","createdAtTime","urlTextElem","metadata","timeLabel","View","style","styles","wrapper","bubble","bubbleSent","bubbleReceived","trim","textRow","Touchable","card","onPress","url","openURL","image","cardThumb","Base","uri","absoluteFill","resizeMode","cardBody","title","palette","gray","w900","numberOfLines","primary","w400","description","normal","timestamp","marginL","displayName","create","maxWidth","paddingHorizontal","paddingVertical","borderRadius","backgroundColor","received","sent","borderWidth","borderColor","white","overflow","width","aspectRatio","gap"],"sourceRoot":"../../../../../src","sources":["components/messages/linkMessage/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { KContainer } from '@droppii/libs';
5
+ import { MergedImageGrid } from "../../MergedImageGrid.js";
6
+ import { messageStyles } from "../styles.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const MergedMessage = /*#__PURE__*/memo(({
9
+ message,
10
+ isOutgoing,
11
+ onMediaPress
12
+ }) => {
13
+ const mergeElem = message.mergeElem;
14
+ if (!mergeElem?.multiMessage) {
15
+ return null;
16
+ }
17
+ const {
18
+ multiMessage
19
+ } = mergeElem;
20
+ const imageMessages = multiMessage.filter(msg => msg.contentType === 102);
21
+ return /*#__PURE__*/_jsx(KContainer.View, {
22
+ style: messageStyles.wrapper,
23
+ children: /*#__PURE__*/_jsx(KContainer.View, {
24
+ style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
25
+ children: imageMessages.length > 0 && /*#__PURE__*/_jsx(KContainer.View, {
26
+ marginB: "0.5rem",
27
+ children: /*#__PURE__*/_jsx(MergedImageGrid, {
28
+ images: imageMessages,
29
+ maxDisplay: 4,
30
+ onMediaPress: onMediaPress
31
+ })
32
+ })
33
+ })
34
+ });
35
+ });
36
+ MergedMessage.displayName = 'MergedMessage';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","KContainer","MergedImageGrid","messageStyles","jsx","_jsx","MergedMessage","message","isOutgoing","onMediaPress","mergeElem","multiMessage","imageMessages","filter","msg","contentType","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","length","marginB","images","maxDisplay","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/mergedMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,eAAe,QAAQ,0BAAuB;AACvD,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,aAAa,gBAAGN,IAAI,CAC/B,CAAC;EAAEO,OAAO;EAAEC,UAAU;EAAEC;AAAqC,CAAC,KAAK;EACjE,MAAMC,SAAS,GAAIH,OAAO,CAASG,SAAS;EAE5C,IAAI,CAACA,SAAS,EAAEC,YAAY,EAAE;IAC5B,OAAO,IAAI;EACb;EAEA,MAAM;IAAEA;EAAa,CAAC,GAAGD,SAAS;EAClC,MAAME,aAAa,GAAGD,YAAY,CAACE,MAAM,CACtCC,GAAQ,IAAKA,GAAG,CAACC,WAAW,KAAK,GACpC,CAAC;EAED,oBACEV,IAAA,CAACJ,UAAU,CAACe,IAAI;IAACC,KAAK,EAAEd,aAAa,CAACe,OAAQ;IAAAC,QAAA,eAC5Cd,IAAA,CAACJ,UAAU,CAACe,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACiB,MAAM,EACpBZ,UAAU,GACNL,aAAa,CAACkB,UAAU,GACxBlB,aAAa,CAACmB,cAAc,CAChC;MAAAH,QAAA,EAEDP,aAAa,CAACW,MAAM,GAAG,CAAC,iBACvBlB,IAAA,CAACJ,UAAU,CAACe,IAAI;QAACQ,OAAO,EAAC,QAAQ;QAAAL,QAAA,eAC/Bd,IAAA,CAACH,eAAe;UACduB,MAAM,EAAEb,aAAc;UACtBc,UAAU,EAAE,CAAE;UACdjB,YAAY,EAAEA;QAAa,CAC5B;MAAC,CACa;IAClB,CACc;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,aAAa,CAACqB,WAAW,GAAG,eAAe","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet } from 'react-native';
4
+ import { KSpacingValue } from '@droppii/libs';
5
+ import { CHAT_BUBBLE_COLORS } from "../../screens/chat-detail/constants.js";
6
+ export const messageStyles = StyleSheet.create({
7
+ wrapper: {
8
+ maxWidth: '80%'
9
+ },
10
+ bubble: {
11
+ paddingHorizontal: KSpacingValue['0.75rem'],
12
+ paddingVertical: KSpacingValue['0.5rem'],
13
+ borderRadius: KSpacingValue['1.25rem']
14
+ },
15
+ bubbleReceived: {
16
+ backgroundColor: CHAT_BUBBLE_COLORS.received
17
+ },
18
+ bubbleSent: {
19
+ backgroundColor: CHAT_BUBBLE_COLORS.sent
20
+ },
21
+ imageBubble: {
22
+ borderRadius: KSpacingValue['0.75rem']
23
+ },
24
+ videoPlaceholder: {
25
+ backgroundColor: CHAT_BUBBLE_COLORS.received
26
+ },
27
+ videoContainer: {
28
+ position: 'relative',
29
+ overflow: 'hidden',
30
+ borderRadius: KSpacingValue['0.75rem']
31
+ },
32
+ playButtonOverlay: {
33
+ position: 'absolute',
34
+ top: 0,
35
+ left: 0,
36
+ right: 0,
37
+ bottom: 0,
38
+ backgroundColor: 'rgba(0, 0, 0, 0.3)'
39
+ }
40
+ });
41
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","KSpacingValue","CHAT_BUBBLE_COLORS","messageStyles","create","wrapper","maxWidth","bubble","paddingHorizontal","paddingVertical","borderRadius","bubbleReceived","backgroundColor","received","bubbleSent","sent","imageBubble","videoPlaceholder","videoContainer","position","overflow","playButtonOverlay","top","left","right","bottom"],"sourceRoot":"../../../../src","sources":["components/messages/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,kBAAkB,QAAQ,wCAAqC;AAExE,OAAO,MAAMC,aAAa,GAAGH,UAAU,CAACI,MAAM,CAAC;EAC7CC,OAAO,EAAE;IACPC,QAAQ,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE;IACNC,iBAAiB,EAAEP,aAAa,CAAC,SAAS,CAAC;IAC3CQ,eAAe,EAAER,aAAa,CAAC,QAAQ,CAAC;IACxCS,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDU,cAAc,EAAE;IACdC,eAAe,EAAEV,kBAAkB,CAACW;EACtC,CAAC;EACDC,UAAU,EAAE;IACVF,eAAe,EAAEV,kBAAkB,CAACa;EACtC,CAAC;EACDC,WAAW,EAAE;IACXN,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDgB,gBAAgB,EAAE;IAChBL,eAAe,EAAEV,kBAAkB,CAACW;EACtC,CAAC;EACDK,cAAc,EAAE;IACdC,QAAQ,EAAE,UAAU;IACpBC,QAAQ,EAAE,QAAQ;IAClBV,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDoB,iBAAiB,EAAE;IACjBF,QAAQ,EAAE,UAAU;IACpBG,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTb,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { KContainer, KLabel } from '@droppii/libs';
5
+ import { getMessageText } from "../../../utils/legendListMessage.js";
6
+ import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
7
+ import { messageStyles } from "../styles.js";
8
+ import { formatMessageTime } from "../types.js";
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ export const TextMessage = /*#__PURE__*/memo(({
11
+ message,
12
+ isOutgoing,
13
+ createdAtTime
14
+ }) => {
15
+ const messageText = getMessageText(message);
16
+ const timeLabel = formatMessageTime(createdAtTime);
17
+ if (!messageText?.trim()) {
18
+ return null;
19
+ }
20
+ return /*#__PURE__*/_jsxs(KContainer.View, {
21
+ style: messageStyles.wrapper,
22
+ children: [/*#__PURE__*/_jsx(KContainer.View, {
23
+ style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
24
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
25
+ typo: "TextMdNormal",
26
+ color: CHAT_BUBBLE_COLORS.text,
27
+ children: messageText
28
+ })
29
+ }), !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
30
+ typo: "TextXsNormal",
31
+ color: CHAT_BUBBLE_COLORS.timestamp,
32
+ marginL: '0.25rem',
33
+ children: timeLabel
34
+ }) : null]
35
+ });
36
+ });
37
+ TextMessage.displayName = 'TextMessage';
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","KContainer","KLabel","getMessageText","CHAT_BUBBLE_COLORS","messageStyles","formatMessageTime","jsx","_jsx","jsxs","_jsxs","TextMessage","message","isOutgoing","createdAtTime","messageText","timeLabel","trim","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","Text","typo","color","text","timestamp","marginL","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/textMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,cAAc,QAAQ,qCAAkC;AAEjE,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AACzC,SAASC,iBAAiB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ7C,OAAO,MAAMC,WAAW,gBAAGX,IAAI,CAC7B,CAAC;EAAEY,OAAO;EAAEC,UAAU;EAAEC;AAAgC,CAAC,KAAK;EAC5D,MAAMC,WAAW,GAAGZ,cAAc,CAACS,OAAO,CAAC;EAC3C,MAAMI,SAAS,GAAGV,iBAAiB,CAACQ,aAAa,CAAC;EAElD,IAAI,CAACC,WAAW,EAAEE,IAAI,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,oBACEP,KAAA,CAACT,UAAU,CAACiB,IAAI;IAACC,KAAK,EAAEd,aAAa,CAACe,OAAQ;IAAAC,QAAA,gBAC5Cb,IAAA,CAACP,UAAU,CAACiB,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACiB,MAAM,EACpBT,UAAU,GACNR,aAAa,CAACkB,UAAU,GACxBlB,aAAa,CAACmB,cAAc,CAChC;MAAAH,QAAA,eAEFb,IAAA,CAACN,MAAM,CAACuB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAEvB,kBAAkB,CAACwB,IAAK;QAAAP,QAAA,EAC7DN;MAAW,CACD;IAAC,CACC,CAAC,EAEjB,CAACF,UAAU,IAAIG,SAAS,gBACvBR,IAAA,CAACN,MAAM,CAACuB,IAAI;MACVC,IAAI,EAAC,cAAc;MACnBC,KAAK,EAAEvB,kBAAkB,CAACyB,SAAU;MACpCC,OAAO,EAAE,SAAU;MAAAT,QAAA,EAElBL;IAAS,CACC,CAAC,GACZ,IAAI;EAAA,CACO,CAAC;AAEtB,CACF,CAAC;AAEDL,WAAW,CAACoB,WAAW,GAAG,aAAa","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ export const formatMessageTime = createdAt => {
4
+ const date = new Date(createdAt);
5
+ if (Number.isNaN(date.getTime())) {
6
+ return '';
7
+ }
8
+ return date.toLocaleTimeString('vi-VN', {
9
+ hour: '2-digit',
10
+ minute: '2-digit',
11
+ hour12: false
12
+ });
13
+ };
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatMessageTime","createdAt","date","Date","Number","isNaN","getTime","toLocaleTimeString","hour","minute","hour12"],"sourceRoot":"../../../../src","sources":["components/messages/types.ts"],"mappings":";;AAUA,OAAO,MAAMA,iBAAiB,GAAIC,SAAiB,IAAK;EACtD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAChC,IAAIG,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,EAAE;IAChC,OAAO,EAAE;EACX;EAEA,OAAOJ,IAAI,CAACK,kBAAkB,CAAC,OAAO,EAAE;IACtCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import { KContainer, KImage, KLabel } from '@droppii/libs';
6
+ import ChatImageDimens, { CHAT_IMAGE_VIEW_SOURCE } from "../../../utils/chatImageDimens.js";
7
+ import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
8
+ import { messageStyles } from "../styles.js";
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ const formatDuration = durationMs => {
11
+ const totalSeconds = Math.floor(durationMs / 1000);
12
+ const minutes = Math.floor(totalSeconds / 60);
13
+ const seconds = totalSeconds % 60;
14
+ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
15
+ };
16
+ export const VideoMessage = /*#__PURE__*/memo(({
17
+ message,
18
+ onMediaPress
19
+ }) => {
20
+ const videoElem = message?.videoElem;
21
+ const videoUrl = videoElem?.videoUrl;
22
+ const duration = videoElem?.duration;
23
+ const thumbnail = videoElem?.snapshotUrl;
24
+ const handlePress = useCallback(() => {
25
+ if (videoUrl && onMediaPress) {
26
+ onMediaPress([{
27
+ url: videoUrl,
28
+ isVideo: true
29
+ }], 0);
30
+ }
31
+ }, [videoUrl, onMediaPress]);
32
+ if (!videoUrl) {
33
+ return /*#__PURE__*/_jsx(KContainer.View, {
34
+ style: messageStyles.wrapper,
35
+ children: /*#__PURE__*/_jsx(KContainer.View, {
36
+ style: [messageStyles.bubble, messageStyles.videoPlaceholder],
37
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
38
+ typo: "TextSmNormal",
39
+ color: CHAT_BUBBLE_COLORS.text,
40
+ children: "\uD83D\uDCF9 [Video unavailable]"
41
+ })
42
+ })
43
+ });
44
+ }
45
+ const dimen = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail);
46
+ return /*#__PURE__*/_jsx(KContainer.View, {
47
+ style: messageStyles.wrapper,
48
+ children: /*#__PURE__*/_jsxs(KContainer.Touchable, {
49
+ onPress: handlePress,
50
+ style: [styles.videoContainer, {
51
+ width: dimen.width,
52
+ height: dimen.height
53
+ }],
54
+ children: [thumbnail ? /*#__PURE__*/_jsx(KImage.Base, {
55
+ uri: thumbnail,
56
+ width: dimen.width,
57
+ height: dimen.height,
58
+ resizeMode: "cover"
59
+ }) : /*#__PURE__*/_jsx(KContainer.View, {
60
+ style: styles.videoBg
61
+ }), /*#__PURE__*/_jsx(KContainer.View, {
62
+ style: styles.playOverlay,
63
+ center: true,
64
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
65
+ name: "play-circle",
66
+ provider: "MaterialCommunityIcons",
67
+ size: 48,
68
+ color: "white"
69
+ })
70
+ }), duration && /*#__PURE__*/_jsx(KContainer.View, {
71
+ style: styles.durationBadge,
72
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
73
+ typo: "TextXsNormal",
74
+ color: "white",
75
+ children: formatDuration(duration)
76
+ })
77
+ })]
78
+ })
79
+ });
80
+ });
81
+ VideoMessage.displayName = 'VideoMessage';
82
+ const styles = StyleSheet.create({
83
+ videoContainer: {
84
+ overflow: 'hidden',
85
+ borderRadius: 8,
86
+ backgroundColor: '#000'
87
+ },
88
+ videoBg: {
89
+ flex: 1,
90
+ backgroundColor: '#000'
91
+ },
92
+ playOverlay: {
93
+ position: 'absolute',
94
+ top: 0,
95
+ left: 0,
96
+ right: 0,
97
+ bottom: 0,
98
+ backgroundColor: 'rgba(0, 0, 0, 0.3)'
99
+ },
100
+ durationBadge: {
101
+ position: 'absolute',
102
+ bottom: 8,
103
+ right: 8,
104
+ backgroundColor: 'rgba(0, 0, 0, 0.7)',
105
+ paddingHorizontal: 6,
106
+ paddingVertical: 3,
107
+ borderRadius: 4
108
+ }
109
+ });
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","StyleSheet","KContainer","KImage","KLabel","ChatImageDimens","CHAT_IMAGE_VIEW_SOURCE","CHAT_BUBBLE_COLORS","messageStyles","jsx","_jsx","jsxs","_jsxs","formatDuration","durationMs","totalSeconds","Math","floor","minutes","seconds","String","padStart","VideoMessage","message","onMediaPress","videoElem","videoUrl","duration","thumbnail","snapshotUrl","handlePress","url","isVideo","View","style","wrapper","children","bubble","videoPlaceholder","Text","typo","color","text","dimen","getDimensions","MessageListThumbnail","Touchable","onPress","styles","videoContainer","width","height","Base","uri","resizeMode","videoBg","playOverlay","center","VectorIcons","name","provider","size","durationBadge","displayName","create","overflow","borderRadius","backgroundColor","flex","position","top","left","right","bottom","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../../src","sources":["components/messages/videoMessage/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * API Endpoints Configuration
5
+ *
6
+ * Centralized endpoint management for all API calls.
7
+ * Can be overridden per environment or feature flag.
8
+ *
9
+ * Note: imageUpload is a relative path because ReactNativeBlobUtil.fetch()
10
+ * is used for image uploads (not axios). The full URL is constructed
11
+ * in the imageUpload service using the base URL from environment/config.
12
+ */
13
+
14
+ const DEFAULT_ENDPOINTS = {
15
+ urlMetadata: '/chat-service/v1/utils/url-metadata',
16
+ imageUpload: '/uploader-service/v1/uploader/permanently'
17
+ };
18
+ let endpoints = {
19
+ ...DEFAULT_ENDPOINTS
20
+ };
21
+
22
+ /**
23
+ * Get a specific API endpoint
24
+ * @param key - Endpoint key
25
+ * @returns Full endpoint URL
26
+ */
27
+ export const getApiEndpoint = key => {
28
+ return endpoints[key];
29
+ };
30
+
31
+ /**
32
+ * Set a specific API endpoint (useful for testing/override)
33
+ * @param key - Endpoint key
34
+ * @param value - New endpoint URL
35
+ */
36
+ export const setApiEndpoint = (key, value) => {
37
+ endpoints[key] = value;
38
+ };
39
+
40
+ /**
41
+ * Set all endpoints at once
42
+ * @param newEndpoints - New endpoints object
43
+ */
44
+ export const setAllApiEndpoints = newEndpoints => {
45
+ endpoints = {
46
+ ...endpoints,
47
+ ...newEndpoints
48
+ };
49
+ };
50
+
51
+ /**
52
+ * Reset to default endpoints
53
+ */
54
+ export const resetApiEndpoints = () => {
55
+ endpoints = {
56
+ ...DEFAULT_ENDPOINTS
57
+ };
58
+ };
59
+
60
+ /**
61
+ * Get all endpoints (returns copy)
62
+ */
63
+ export const getAllApiEndpoints = () => ({
64
+ ...endpoints
65
+ });
66
+ //# sourceMappingURL=api-endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_ENDPOINTS","urlMetadata","imageUpload","endpoints","getApiEndpoint","key","setApiEndpoint","value","setAllApiEndpoints","newEndpoints","resetApiEndpoints","getAllApiEndpoints"],"sourceRoot":"../../../src","sources":["config/api-endpoints.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,MAAMA,iBAA+B,GAAG;EACtCC,WAAW,EAAE,qCAAqC;EAClDC,WAAW,EAAE;AACf,CAAC;AAED,IAAIC,SAAuB,GAAG;EAAE,GAAGH;AAAkB,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,cAAc,GACzBC,GAAM,IACc;EACpB,OAAOF,SAAS,CAACE,GAAG,CAAC;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAC5BD,GAAM,EACNE,KAAsB,KACnB;EACHJ,SAAS,CAACE,GAAG,CAAC,GAAGE,KAAK;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAIC,YAAmC,IAAK;EACzEN,SAAS,GAAG;IACV,GAAGA,SAAS;IACZ,GAAGM;EACL,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACrCP,SAAS,GAAG;IAAE,GAAGH;EAAkB,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMW,kBAAkB,GAAGA,CAAA,MAAqB;EACrD,GAAGR;AACL,CAAC,CAAC","ignoreList":[]}