@sendbird/uikit-react-native 1.0.0 → 1.1.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.
Files changed (336) hide show
  1. package/README.md +7 -7
  2. package/lib/commonjs/InternalErrorBoundary.js.map +1 -1
  3. package/lib/commonjs/SendbirdUIKitContainer.js +6 -3
  4. package/lib/commonjs/SendbirdUIKitContainer.js.map +1 -1
  5. package/lib/commonjs/components/ChannelCover.js.map +1 -1
  6. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  7. package/lib/commonjs/components/FileViewer.js +326 -0
  8. package/lib/commonjs/components/FileViewer.js.map +1 -0
  9. package/lib/commonjs/components/GroupChannelPreviewContainer.js +180 -0
  10. package/lib/commonjs/components/GroupChannelPreviewContainer.js.map +1 -0
  11. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +1 -1
  12. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  13. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  14. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +116 -0
  15. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
  16. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +8 -0
  17. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
  18. package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +1 -1
  19. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +1 -1
  20. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  21. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  22. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +15 -24
  23. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  24. package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +1 -1
  25. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +1 -1
  26. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  27. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  28. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +1 -1
  29. package/lib/commonjs/components/NewMessagesButton.js.map +1 -1
  30. package/lib/commonjs/components/ProviderLayout.js.map +1 -1
  31. package/lib/commonjs/components/SBUPressable.js +45 -0
  32. package/lib/commonjs/components/SBUPressable.js.map +1 -0
  33. package/lib/commonjs/components/ScrollToBottomButton.js.map +1 -1
  34. package/lib/commonjs/components/TypedPlaceholder.js.map +1 -1
  35. package/lib/commonjs/components/UserActionBar.js +1 -3
  36. package/lib/commonjs/components/UserActionBar.js.map +1 -1
  37. package/lib/commonjs/components/UserSelectableBar.js +1 -3
  38. package/lib/commonjs/components/UserSelectableBar.js.map +1 -1
  39. package/lib/commonjs/constants.js +7 -1
  40. package/lib/commonjs/constants.js.map +1 -1
  41. package/lib/commonjs/contexts/Localization.js.map +1 -1
  42. package/lib/commonjs/contexts/PlatformService.js +4 -2
  43. package/lib/commonjs/contexts/PlatformService.js.map +1 -1
  44. package/lib/commonjs/contexts/SendbirdChat.js +6 -2
  45. package/lib/commonjs/contexts/SendbirdChat.js.map +1 -1
  46. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  47. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  48. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
  49. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  50. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  51. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +30 -7
  52. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  53. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +2 -3
  54. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  55. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  56. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListHeader.js +2 -5
  57. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListHeader.js.map +1 -1
  58. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  59. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  60. package/lib/commonjs/domain/groupChannelList/module/moduleContext.js.map +1 -1
  61. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  62. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js.map +1 -1
  63. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  64. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  65. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  66. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +1 -1
  67. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  68. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
  69. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
  70. package/lib/commonjs/domain/userList/module/moduleContext.js +2 -2
  71. package/lib/commonjs/domain/userList/module/moduleContext.js.map +1 -1
  72. package/lib/commonjs/domain/userList/types.js.map +1 -1
  73. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +3 -7
  74. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  75. package/lib/commonjs/fragments/createGroupChannelFragment.js +13 -11
  76. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  77. package/lib/commonjs/fragments/createGroupChannelListFragment.js +7 -37
  78. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  79. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +1 -1
  80. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
  81. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +2 -3
  82. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  83. package/lib/commonjs/hooks/useContext.js.map +1 -1
  84. package/lib/commonjs/index.js +29 -2
  85. package/lib/commonjs/index.js.map +1 -1
  86. package/lib/commonjs/localization/StringSet.type.js +8 -0
  87. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  88. package/lib/commonjs/platform/createFileService.expo.js +38 -20
  89. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  90. package/lib/commonjs/platform/createFileService.native.js +20 -3
  91. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  92. package/lib/commonjs/platform/createMediaService.expo.js +64 -0
  93. package/lib/commonjs/platform/createMediaService.expo.js.map +1 -0
  94. package/lib/commonjs/platform/createMediaService.native.js +67 -0
  95. package/lib/commonjs/platform/createMediaService.native.js.map +1 -0
  96. package/lib/commonjs/platform/createNotificationService.expo.js.map +1 -1
  97. package/lib/commonjs/platform/types.js.map +1 -1
  98. package/lib/commonjs/version.js +1 -1
  99. package/lib/commonjs/version.js.map +1 -1
  100. package/lib/module/InternalErrorBoundary.js.map +1 -1
  101. package/lib/module/SendbirdUIKitContainer.js +7 -4
  102. package/lib/module/SendbirdUIKitContainer.js.map +1 -1
  103. package/lib/module/components/ChannelCover.js.map +1 -1
  104. package/lib/module/components/ChatFlatList.js.map +1 -1
  105. package/lib/module/components/FileViewer.js +304 -0
  106. package/lib/module/components/FileViewer.js.map +1 -0
  107. package/lib/module/components/GroupChannelPreviewContainer.js +158 -0
  108. package/lib/module/components/GroupChannelPreviewContainer.js.map +1 -0
  109. package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +1 -1
  110. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  111. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  112. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +100 -0
  113. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
  114. package/lib/module/components/MessageRenderer/FileMessage/index.js +6 -0
  115. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
  116. package/lib/module/components/MessageRenderer/MessageContainer.js.map +1 -1
  117. package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +1 -1
  118. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  119. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  120. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +17 -26
  121. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  122. package/lib/module/components/MessageRenderer/MessageTime.js.map +1 -1
  123. package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +1 -1
  124. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  125. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  126. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +1 -1
  127. package/lib/module/components/NewMessagesButton.js.map +1 -1
  128. package/lib/module/components/ProviderLayout.js.map +1 -1
  129. package/lib/module/components/SBUPressable.js +33 -0
  130. package/lib/module/components/SBUPressable.js.map +1 -0
  131. package/lib/module/components/ScrollToBottomButton.js.map +1 -1
  132. package/lib/module/components/TypedPlaceholder.js.map +1 -1
  133. package/lib/module/components/UserActionBar.js +1 -1
  134. package/lib/module/components/UserActionBar.js.map +1 -1
  135. package/lib/module/components/UserSelectableBar.js +1 -1
  136. package/lib/module/components/UserSelectableBar.js.map +1 -1
  137. package/lib/module/constants.js +5 -0
  138. package/lib/module/constants.js.map +1 -1
  139. package/lib/module/contexts/Localization.js.map +1 -1
  140. package/lib/module/contexts/PlatformService.js +4 -2
  141. package/lib/module/contexts/PlatformService.js.map +1 -1
  142. package/lib/module/contexts/SendbirdChat.js +6 -2
  143. package/lib/module/contexts/SendbirdChat.js.map +1 -1
  144. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  145. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  146. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
  147. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  148. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  149. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -7
  150. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  151. package/lib/module/domain/groupChannel/module/moduleContext.js +2 -3
  152. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  153. package/lib/module/domain/groupChannel/types.js.map +1 -1
  154. package/lib/module/domain/groupChannelList/component/GroupChannelListHeader.js +2 -5
  155. package/lib/module/domain/groupChannelList/component/GroupChannelListHeader.js.map +1 -1
  156. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  157. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  158. package/lib/module/domain/groupChannelList/module/moduleContext.js.map +1 -1
  159. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  160. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js.map +1 -1
  161. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  162. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  163. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  164. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +1 -1
  165. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  166. package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
  167. package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
  168. package/lib/module/domain/userList/module/moduleContext.js +2 -2
  169. package/lib/module/domain/userList/module/moduleContext.js.map +1 -1
  170. package/lib/module/domain/userList/types.js.map +1 -1
  171. package/lib/module/fragments/createGroupChannelCreateFragment.js +4 -4
  172. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  173. package/lib/module/fragments/createGroupChannelFragment.js +15 -13
  174. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  175. package/lib/module/fragments/createGroupChannelListFragment.js +11 -38
  176. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  177. package/lib/module/fragments/createGroupChannelMembersFragment.js +1 -1
  178. package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
  179. package/lib/module/fragments/createGroupChannelSettingsFragment.js +2 -3
  180. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  181. package/lib/module/hooks/useContext.js.map +1 -1
  182. package/lib/module/index.js +4 -1
  183. package/lib/module/index.js.map +1 -1
  184. package/lib/module/localization/StringSet.type.js +8 -0
  185. package/lib/module/localization/StringSet.type.js.map +1 -1
  186. package/lib/module/platform/createFileService.expo.js +38 -20
  187. package/lib/module/platform/createFileService.expo.js.map +1 -1
  188. package/lib/module/platform/createFileService.native.js +20 -3
  189. package/lib/module/platform/createFileService.native.js.map +1 -1
  190. package/lib/module/platform/createMediaService.expo.js +54 -0
  191. package/lib/module/platform/createMediaService.expo.js.map +1 -0
  192. package/lib/module/platform/createMediaService.native.js +57 -0
  193. package/lib/module/platform/createMediaService.native.js.map +1 -0
  194. package/lib/module/platform/createNotificationService.expo.js.map +1 -1
  195. package/lib/module/platform/types.js.map +1 -1
  196. package/lib/module/version.js +1 -1
  197. package/lib/module/version.js.map +1 -1
  198. package/lib/typescript/__template__/component/__domain__Header.d.ts +1 -2
  199. package/lib/typescript/__template__/component/__domain__StatusEmpty.d.ts +0 -1
  200. package/lib/typescript/__template__/component/__domain__StatusLoading.d.ts +0 -1
  201. package/lib/typescript/__template__/component/__domain__View.d.ts +1 -2
  202. package/lib/typescript/__template__/module/moduleContext.d.ts +2 -3
  203. package/lib/typescript/__template__/types.d.ts +2 -2
  204. package/lib/typescript/src/InternalErrorBoundary.d.ts +1 -0
  205. package/lib/typescript/src/SendbirdUIKitContainer.d.ts +9 -6
  206. package/lib/typescript/src/components/ChannelCover.d.ts +1 -2
  207. package/lib/typescript/src/components/FileViewer.d.ts +12 -0
  208. package/lib/typescript/src/components/GroupChannelPreviewContainer.d.ts +8 -0
  209. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +1 -2
  210. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +3 -3
  211. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +1 -2
  212. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +3 -0
  213. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +1 -1
  214. package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +1 -1
  215. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +1 -2
  216. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +1 -2
  217. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +1 -2
  218. package/lib/typescript/src/components/MessageRenderer/MessageOutgoingStatus.d.ts +1 -1
  219. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +1 -2
  220. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +1 -2
  221. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +1 -2
  222. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +1 -2
  223. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +1 -1
  224. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  225. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  226. package/lib/typescript/src/components/SBUPressable.d.ts +18 -0
  227. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  228. package/lib/typescript/src/components/TypedPlaceholder.d.ts +1 -2
  229. package/lib/typescript/src/components/UserActionBar.d.ts +2 -3
  230. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -3
  231. package/lib/typescript/src/constants.d.ts +5 -0
  232. package/lib/typescript/src/contexts/Localization.d.ts +2 -3
  233. package/lib/typescript/src/contexts/PlatformService.d.ts +5 -4
  234. package/lib/typescript/src/contexts/SendbirdChat.d.ts +7 -3
  235. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +1 -2
  236. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +1 -2
  237. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +1 -2
  238. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +2 -2
  239. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +4 -3
  240. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +0 -1
  241. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +0 -1
  242. package/lib/typescript/src/domain/groupChannel/types.d.ts +8 -4
  243. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +1 -2
  244. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +1 -2
  245. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +0 -1
  246. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +0 -1
  247. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +1 -2
  248. package/lib/typescript/src/domain/groupChannelList/module/moduleContext.d.ts +2 -3
  249. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  250. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +1 -2
  251. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +1 -2
  252. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -2
  253. package/lib/typescript/src/domain/groupChannelSettings/module/moduleContext.d.ts +2 -3
  254. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +2 -2
  255. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +4 -4
  256. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +0 -1
  257. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +0 -1
  258. package/lib/typescript/src/domain/userList/module/moduleContext.d.ts +2 -3
  259. package/lib/typescript/src/domain/userList/types.d.ts +1 -1
  260. package/lib/typescript/src/hooks/useContext.d.ts +8 -4
  261. package/lib/typescript/src/index.d.ts +3 -0
  262. package/lib/typescript/src/localization/StringSet.type.d.ts +4 -0
  263. package/lib/typescript/src/platform/createFileService.expo.d.ts +4 -4
  264. package/lib/typescript/src/platform/createMediaService.expo.d.ts +9 -0
  265. package/lib/typescript/src/platform/createMediaService.native.d.ts +9 -0
  266. package/lib/typescript/src/platform/createNotificationService.expo.d.ts +1 -1
  267. package/lib/typescript/src/platform/types.d.ts +20 -1
  268. package/lib/typescript/src/version.d.ts +1 -1
  269. package/package.json +16 -7
  270. package/src/InternalErrorBoundary.tsx +1 -0
  271. package/src/SendbirdUIKitContainer.tsx +17 -6
  272. package/src/components/ChannelCover.tsx +1 -1
  273. package/src/components/ChatFlatList.tsx +1 -1
  274. package/src/components/FileViewer.tsx +284 -0
  275. package/src/components/GroupChannelPreviewContainer.tsx +134 -0
  276. package/src/components/MessageRenderer/AdminMessage/index.tsx +1 -1
  277. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +4 -6
  278. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +1 -1
  279. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +91 -0
  280. package/src/components/MessageRenderer/FileMessage/index.tsx +7 -1
  281. package/src/components/MessageRenderer/MessageContainer.tsx +1 -1
  282. package/src/components/MessageRenderer/MessageDateSeparator.tsx +1 -1
  283. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +5 -2
  284. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +5 -2
  285. package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +26 -33
  286. package/src/components/MessageRenderer/MessageTime.tsx +6 -2
  287. package/src/components/MessageRenderer/UnknownMessage/index.tsx +1 -1
  288. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +1 -1
  289. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +4 -2
  290. package/src/components/MessageRenderer/UserMessage/index.tsx +1 -1
  291. package/src/components/NewMessagesButton.tsx +1 -1
  292. package/src/components/ProviderLayout.tsx +1 -1
  293. package/src/components/SBUPressable.tsx +40 -0
  294. package/src/components/ScrollToBottomButton.tsx +1 -1
  295. package/src/components/TypedPlaceholder.tsx +1 -1
  296. package/src/components/UserActionBar.tsx +2 -2
  297. package/src/components/UserSelectableBar.tsx +2 -2
  298. package/src/constants.ts +5 -0
  299. package/src/contexts/Localization.tsx +2 -3
  300. package/src/contexts/PlatformService.tsx +13 -6
  301. package/src/contexts/SendbirdChat.tsx +15 -7
  302. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +1 -1
  303. package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +1 -1
  304. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +2 -2
  305. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +2 -2
  306. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +25 -8
  307. package/src/domain/groupChannel/module/moduleContext.tsx +6 -13
  308. package/src/domain/groupChannel/types.ts +10 -4
  309. package/src/domain/groupChannelList/component/GroupChannelListHeader.tsx +2 -4
  310. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +2 -2
  311. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +4 -4
  312. package/src/domain/groupChannelList/module/moduleContext.tsx +2 -2
  313. package/src/domain/groupChannelList/types.ts +3 -2
  314. package/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.tsx +1 -1
  315. package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +1 -1
  316. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +2 -2
  317. package/src/domain/groupChannelSettings/module/moduleContext.tsx +7 -15
  318. package/src/domain/groupChannelSettings/types.ts +2 -2
  319. package/src/domain/groupChannelUserList/types.ts +4 -5
  320. package/src/domain/userList/module/moduleContext.tsx +3 -7
  321. package/src/domain/userList/types.ts +1 -1
  322. package/src/fragments/createGroupChannelCreateFragment.tsx +38 -41
  323. package/src/fragments/createGroupChannelFragment.tsx +23 -33
  324. package/src/fragments/createGroupChannelListFragment.tsx +10 -32
  325. package/src/fragments/createGroupChannelMembersFragment.tsx +34 -39
  326. package/src/fragments/createGroupChannelSettingsFragment.tsx +1 -9
  327. package/src/hooks/useContext.ts +3 -5
  328. package/src/index.ts +5 -1
  329. package/src/localization/StringSet.type.ts +8 -0
  330. package/src/platform/createFileService.expo.ts +29 -16
  331. package/src/platform/createFileService.native.ts +16 -3
  332. package/src/platform/createMediaService.expo.tsx +30 -0
  333. package/src/platform/createMediaService.native.tsx +37 -0
  334. package/src/platform/createNotificationService.expo.ts +1 -1
  335. package/src/platform/types.ts +26 -1
  336. package/src/version.ts +1 -1
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
11
+
12
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
+
14
+ var _Icon = _interopRequireDefault(require("@sendbird/uikit-react-native-foundation/src/ui/Icon"));
15
+
16
+ var _uikitUtils = require("@sendbird/uikit-utils");
17
+
18
+ var _useContext = require("../hooks/useContext");
19
+
20
+ var _ChannelCover = _interopRequireDefault(require("./ChannelCover"));
21
+
22
+ var _SBUPressable = _interopRequireDefault(require("./SBUPressable"));
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ const iconMapper = {
31
+ audio: 'file-audio',
32
+ image: 'photo',
33
+ video: 'play',
34
+ file: 'file-document'
35
+ };
36
+
37
+ const GroupChannelPreviewContainer = _ref => {
38
+ let {
39
+ onPress,
40
+ onLongPress,
41
+ channel
42
+ } = _ref;
43
+ const {
44
+ currentUser,
45
+ sdk,
46
+ features
47
+ } = (0, _useContext.useSendbirdChat)();
48
+ const {
49
+ STRINGS
50
+ } = (0, _useContext.useLocalization)();
51
+ const {
52
+ colors
53
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
54
+ const [typingUsers, setTypingUsers] = (0, _react.useState)([]);
55
+ const forceUpdate = (0, _uikitUtils.useForceUpdate)();
56
+
57
+ if (features.channelListTypingIndicatorEnabled) {
58
+ const typingId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
59
+ (0, _uikitChatHooks.useChannelHandler)(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {
60
+ onTypingStatusUpdated(eventChannel) {
61
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
62
+ setTypingUsers(eventChannel.getTypingUsers());
63
+ }
64
+
65
+ });
66
+ }
67
+
68
+ if (features.channelListMessageReceiptStatusEnabled) {
69
+ const receiptId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
70
+ (0, _uikitChatHooks.useChannelHandler)(sdk, `GroupChannelPreviewContainer_ReceiptStatus_${receiptId}`, {
71
+ onDeliveryReceiptUpdated(eventChannel) {
72
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
73
+ if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;
74
+ if (!(0, _uikitUtils.isMyMessage)(eventChannel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
75
+ forceUpdate();
76
+ },
77
+
78
+ onReadReceiptUpdated(eventChannel) {
79
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
80
+ if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;
81
+ if (!(0, _uikitUtils.isMyMessage)(eventChannel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
82
+ forceUpdate();
83
+ }
84
+
85
+ });
86
+ }
87
+
88
+ const bodyText = (0, _uikitUtils.useIIFE)(() => {
89
+ if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);
90
+ });
91
+ const bodyIcon = (0, _uikitUtils.useIIFE)(() => {
92
+ var _channel$lastMessage;
93
+
94
+ if (!((_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage())) return undefined;
95
+ return iconMapper[(0, _uikitUtils.getFileType)(channel.lastMessage.type || (0, _uikitUtils.getFileExtension)(channel.lastMessage.name))];
96
+ });
97
+ const titleCaptionIcon = (0, _uikitUtils.useIIFE)(() => {
98
+ if (!channel.lastMessage) return undefined;
99
+ if (!features.channelListMessageReceiptStatusEnabled) return undefined;
100
+ if (!(0, _uikitUtils.isMyMessage)(channel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return undefined;
101
+
102
+ if (channel.lastMessage.sendingStatus === 'pending') {
103
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.LoadingSpinner, {
104
+ size: 16,
105
+ style: styles.titleCaptionIcon
106
+ });
107
+ }
108
+
109
+ if (channel.lastMessage.sendingStatus === 'failed') {
110
+ return /*#__PURE__*/_react.default.createElement(_Icon.default, {
111
+ icon: 'error',
112
+ size: 16,
113
+ color: colors.error,
114
+ style: styles.titleCaptionIcon
115
+ });
116
+ }
117
+
118
+ if (channel.getUnreadMemberCount(channel.lastMessage) === 0) {
119
+ return /*#__PURE__*/_react.default.createElement(_Icon.default, {
120
+ icon: 'done-all',
121
+ size: 16,
122
+ color: colors.secondary,
123
+ style: styles.titleCaptionIcon
124
+ });
125
+ }
126
+
127
+ if (features.deliveryReceiptEnabled) {
128
+ if (channel.getUndeliveredMemberCount(channel.lastMessage) === 0) {
129
+ return /*#__PURE__*/_react.default.createElement(_Icon.default, {
130
+ icon: 'done-all',
131
+ size: 16,
132
+ color: colors.onBackground03,
133
+ style: styles.titleCaptionIcon
134
+ });
135
+ }
136
+
137
+ return /*#__PURE__*/_react.default.createElement(_Icon.default, {
138
+ icon: 'done',
139
+ size: 16,
140
+ color: colors.onBackground03,
141
+ containerStyle: styles.titleCaptionIcon
142
+ });
143
+ }
144
+
145
+ return /*#__PURE__*/_react.default.createElement(_Icon.default, {
146
+ icon: 'done-all',
147
+ size: 16,
148
+ color: colors.onBackground03,
149
+ style: styles.titleCaptionIcon
150
+ });
151
+ });
152
+ return /*#__PURE__*/_react.default.createElement(_SBUPressable.default, {
153
+ onPress: onPress,
154
+ onLongPress: onLongPress
155
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.GroupChannelPreview, {
156
+ customCover: /*#__PURE__*/_react.default.createElement(_ChannelCover.default, {
157
+ channel: channel,
158
+ size: 56
159
+ }),
160
+ coverUrl: channel.coverUrl,
161
+ title: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '', channel),
162
+ titleCaptionLeft: titleCaptionIcon,
163
+ titleCaption: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel),
164
+ body: bodyText,
165
+ bodyIcon: bodyIcon,
166
+ badgeCount: channel.unreadMessageCount,
167
+ memberCount: channel.memberCount > 2 ? channel.memberCount : undefined,
168
+ frozen: channel.isFrozen,
169
+ notificationOff: channel.myPushTriggerOption === 'off'
170
+ }));
171
+ };
172
+
173
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
174
+ titleCaptionIcon: {
175
+ marginRight: 4
176
+ }
177
+ });
178
+ var _default = GroupChannelPreviewContainer;
179
+ exports.default = _default;
180
+ //# sourceMappingURL=GroupChannelPreviewContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","typingUsers","setTypingUsers","useState","forceUpdate","useForceUpdate","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","channelListMessageReceiptStatusEnabled","receiptId","onDeliveryReceiptUpdated","isGroupChannel","lastMessage","isMyMessage","userId","onReadReceiptUpdated","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","sendingStatus","styles","error","getUnreadMemberCount","secondary","deliveryReceiptEnabled","getUndeliveredMemberCount","onBackground03","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","createStyleSheet","marginRight"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport Icon from '@sendbird/uikit-react-native-foundation/src/ui/Icon';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useForceUpdate,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\nimport ChannelCover from './ChannelCover';\nimport SBUPressable from './SBUPressable';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const forceUpdate = useForceUpdate();\n\n if (features.channelListTypingIndicatorEnabled) {\n const typingId = useUniqId('GroupChannelPreviewContainer');\n useChannelHandler(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n }\n\n if (features.channelListMessageReceiptStatusEnabled) {\n const receiptId = useUniqId('GroupChannelPreviewContainer');\n useChannelHandler(sdk, `GroupChannelPreviewContainer_ReceiptStatus_${receiptId}`, {\n onDeliveryReceiptUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;\n if (!isMyMessage(eventChannel.lastMessage, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onReadReceiptUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;\n if (!isMyMessage(eventChannel.lastMessage, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n }\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const bodyIcon = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage) return undefined;\n if (!features.channelListMessageReceiptStatusEnabled) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (channel.lastMessage.sendingStatus === 'pending') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (channel.lastMessage.sendingStatus === 'failed') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (channel.getUnreadMemberCount(channel.lastMessage) === 0) {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(channel.lastMessage) === 0) {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n });\n\n return (\n <SBUPressable onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={bodyIcon}\n badgeCount={channel.unreadMessageCount}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </SBUPressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["AdminMessage","message","nextMessage","colors","useUIKitTheme","isNextAdmin","isAdminMessage","StyleSheet","flatten","styles","container","nextAdminType","next","onBackground02","text","createStyleSheet","width","alignSelf","alignItems","marginBottom","textAlign"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdAdminMessage } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\n\nexport type AdminMessageProps = MessageRendererInterface<SendbirdAdminMessage>;\nconst AdminMessage: React.FC<AdminMessageProps> = ({ message, nextMessage }) => {\n const { colors } = useUIKitTheme();\n\n const isNextAdmin = nextMessage?.isAdminMessage();\n return (\n <View style={StyleSheet.flatten([styles.container, isNextAdmin ? styles.nextAdminType : styles.next])}>\n <Text caption2 color={colors.onBackground02} style={styles.text}>\n {message.message}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 300,\n alignSelf: 'center',\n alignItems: 'center',\n },\n nextAdminType: {\n marginBottom: 8,\n },\n next: {\n marginBottom: 16,\n },\n text: {\n textAlign: 'center',\n },\n});\n\nexport default AdminMessage;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAMA,MAAMA,YAAyC,GAAG,QAA8B;EAAA,IAA7B;IAAEC,OAAF;IAAWC;EAAX,CAA6B;EAC9E,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,WAAW,GAAGH,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEI,cAAb,EAApB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,uBAAA,CAAWC,OAAX,CAAmB,CAACC,MAAM,CAACC,SAAR,EAAmBL,WAAW,GAAGI,MAAM,CAACE,aAAV,GAA0BF,MAAM,CAACG,IAA/D,CAAnB;EAAb,gBACE,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAET,MAAM,CAACU,cAA7B;IAA6C,KAAK,EAAEJ,MAAM,CAACK;EAA3D,GACGb,OAAO,CAACA,OADX,CADF,CADF;AAOD,CAXD;;AAaA,MAAMQ,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,SAAS,EAAE;IACTM,KAAK,EAAE,GADE;IAETC,SAAS,EAAE,QAFF;IAGTC,UAAU,EAAE;EAHH,CADmB;EAM9BP,aAAa,EAAE;IACbQ,YAAY,EAAE;EADD,CANe;EAS9BP,IAAI,EAAE;IACJO,YAAY,EAAE;EADV,CATwB;EAY9BL,IAAI,EAAE;IACJM,SAAS,EAAE;EADP;AAZwB,CAAjB,CAAf;eAiBepB,Y"}
1
+ {"version":3,"names":["AdminMessage","message","nextMessage","colors","useUIKitTheme","isNextAdmin","isAdminMessage","StyleSheet","flatten","styles","container","nextAdminType","next","onBackground02","text","createStyleSheet","width","alignSelf","alignItems","marginBottom","textAlign"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdAdminMessage } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\n\nexport type AdminMessageProps = MessageRendererInterface<SendbirdAdminMessage>;\nconst AdminMessage = ({ message, nextMessage }: AdminMessageProps) => {\n const { colors } = useUIKitTheme();\n\n const isNextAdmin = nextMessage?.isAdminMessage();\n return (\n <View style={StyleSheet.flatten([styles.container, isNextAdmin ? styles.nextAdminType : styles.next])}>\n <Text caption2 color={colors.onBackground02} style={styles.text}>\n {message.message}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 300,\n alignSelf: 'center',\n alignItems: 'center',\n },\n nextAdminType: {\n marginBottom: 8,\n },\n next: {\n marginBottom: 16,\n },\n text: {\n textAlign: 'center',\n },\n});\n\nexport default AdminMessage;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAMA,MAAMA,YAAY,GAAG,QAAiD;EAAA,IAAhD;IAAEC,OAAF;IAAWC;EAAX,CAAgD;EACpE,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,WAAW,GAAGH,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEI,cAAb,EAApB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,uBAAA,CAAWC,OAAX,CAAmB,CAACC,MAAM,CAACC,SAAR,EAAmBL,WAAW,GAAGI,MAAM,CAACE,aAAV,GAA0BF,MAAM,CAACG,IAA/D,CAAnB;EAAb,gBACE,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAET,MAAM,CAACU,cAA7B;IAA6C,KAAK,EAAEJ,MAAM,CAACK;EAA3D,GACGb,OAAO,CAACA,OADX,CADF,CADF;AAOD,CAXD;;AAaA,MAAMQ,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,SAAS,EAAE;IACTM,KAAK,EAAE,GADE;IAETC,SAAS,EAAE,QAFF;IAGTC,UAAU,EAAE;EAHH,CADmB;EAM9BP,aAAa,EAAE;IACbQ,YAAY,EAAE;EADD,CANe;EAS9BP,IAAI,EAAE;IACJO,YAAY,EAAE;EADV,CATwB;EAY9BL,IAAI,EAAE;IACJM,SAAS,EAAE;EADP;AAZwB,CAAjB,CAAf;eAiBepB,Y"}
@@ -1 +1 @@
1
- {"version":3,"names":["iconMapper","audio","image","video","file","BaseFileMessage","message","variant","pressed","type","STRINGS","useLocalization","colors","useUIKitTheme","color","ui","styles","container","backgroundColor","background","padding","borderRadius","marginRight","textMsg","name","GROUP_CHANNEL","MESSAGE_BUBBLE_FILE_TITLE","createStyleSheet","flexDirection","alignItems","justifyContent","paddingHorizontal","paddingVertical","flexShrink"],"sources":["BaseFileMessage.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\nconst BaseFileMessage: React.FC<FileMessageProps & { type: 'image' | 'audio' | 'video' | 'file' }> = ({\n message,\n variant,\n pressed,\n type,\n}) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n return (\n <View style={[styles.container, { backgroundColor: color.background }]}>\n <Icon\n icon={iconMapper[type]}\n size={24}\n containerStyle={{ backgroundColor: colors.background, padding: 2, borderRadius: 8, marginRight: 8 }}\n />\n <Text body3 ellipsizeMode={'middle'} numberOfLines={1} color={color.textMsg} style={styles.name}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message)}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 16,\n },\n name: {\n flexShrink: 1,\n },\n});\n\nexport default BaseFileMessage;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;;;AAGA,MAAMA,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAT;EAAuBC,KAAK,EAAE,OAA9B;EAAuCC,KAAK,EAAE,MAA9C;EAAsDC,IAAI,EAAE;AAA5D,CAAnB;;AAEA,MAAMC,eAA4F,GAAG,QAK/F;EAAA,IALgG;IACpGC,OADoG;IAEpGC,OAFoG;IAGpGC,OAHoG;IAIpGC;EAJoG,CAKhG;EACJ,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAMC,KAAK,GAAGF,MAAM,CAACG,EAAP,CAAUT,OAAV,CAAkBC,OAAlB,EAA2BC,OAAO,GAAG,SAAH,GAAe,SAAjD,CAAd;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACQ,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,KAAK,CAACK;IAAzB,CAAnB;EAAb,gBACE,6BAAC,gCAAD;IACE,IAAI,EAAEnB,UAAU,CAACS,IAAD,CADlB;IAEE,IAAI,EAAE,EAFR;IAGE,cAAc,EAAE;MAAES,eAAe,EAAEN,MAAM,CAACO,UAA1B;MAAsCC,OAAO,EAAE,CAA/C;MAAkDC,YAAY,EAAE,CAAhE;MAAmEC,WAAW,EAAE;IAAhF;EAHlB,EADF,eAME,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,aAAa,EAAE,QAA3B;IAAqC,aAAa,EAAE,CAApD;IAAuD,KAAK,EAAER,KAAK,CAACS,OAApE;IAA6E,KAAK,EAAEP,MAAM,CAACQ;EAA3F,GACGd,OAAO,CAACe,aAAR,CAAsBC,yBAAtB,CAAgDpB,OAAhD,CADH,CANF,CADF;AAYD,CArBD;;AAuBA,MAAMU,MAAM,GAAG,IAAAW,4CAAA,EAAiB;EAC9BV,SAAS,EAAE;IACTW,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,cAAc,EAAE,QAHP;IAITC,iBAAiB,EAAE,EAJV;IAKTC,eAAe,EAAE,CALR;IAMTX,YAAY,EAAE;EANL,CADmB;EAS9BG,IAAI,EAAE;IACJS,UAAU,EAAE;EADR;AATwB,CAAjB,CAAf;eAce5B,e"}
1
+ {"version":3,"names":["iconMapper","audio","image","video","file","BaseFileMessage","message","variant","pressed","type","STRINGS","useLocalization","colors","useUIKitTheme","color","ui","styles","container","backgroundColor","background","padding","borderRadius","marginRight","textMsg","name","GROUP_CHANNEL","MESSAGE_BUBBLE_FILE_TITLE","createStyleSheet","flexDirection","alignItems","justifyContent","paddingHorizontal","paddingVertical","flexShrink"],"sources":["BaseFileMessage.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = FileMessageProps & {\n type: 'image' | 'audio' | 'video' | 'file';\n};\nconst BaseFileMessage = ({ message, variant, pressed, type }: Props) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n return (\n <View style={[styles.container, { backgroundColor: color.background }]}>\n <Icon\n icon={iconMapper[type]}\n size={24}\n containerStyle={{ backgroundColor: colors.background, padding: 2, borderRadius: 8, marginRight: 8 }}\n />\n <Text body3 ellipsizeMode={'middle'} numberOfLines={1} color={color.textMsg} style={styles.name}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message)}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 16,\n },\n name: {\n flexShrink: 1,\n },\n});\n\nexport default BaseFileMessage;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;;;AAGA,MAAMA,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAT;EAAuBC,KAAK,EAAE,OAA9B;EAAuCC,KAAK,EAAE,MAA9C;EAAsDC,IAAI,EAAE;AAA5D,CAAnB;;AAKA,MAAMC,eAAe,GAAG,QAAgD;EAAA,IAA/C;IAAEC,OAAF;IAAWC,OAAX;IAAoBC,OAApB;IAA6BC;EAA7B,CAA+C;EACtE,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAMC,KAAK,GAAGF,MAAM,CAACG,EAAP,CAAUT,OAAV,CAAkBC,OAAlB,EAA2BC,OAAO,GAAG,SAAH,GAAe,SAAjD,CAAd;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACQ,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,KAAK,CAACK;IAAzB,CAAnB;EAAb,gBACE,6BAAC,gCAAD;IACE,IAAI,EAAEnB,UAAU,CAACS,IAAD,CADlB;IAEE,IAAI,EAAE,EAFR;IAGE,cAAc,EAAE;MAAES,eAAe,EAAEN,MAAM,CAACO,UAA1B;MAAsCC,OAAO,EAAE,CAA/C;MAAkDC,YAAY,EAAE,CAAhE;MAAmEC,WAAW,EAAE;IAAhF;EAHlB,EADF,eAME,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,aAAa,EAAE,QAA3B;IAAqC,aAAa,EAAE,CAApD;IAAuD,KAAK,EAAER,KAAK,CAACS,OAApE;IAA6E,KAAK,EAAEP,MAAM,CAACQ;EAA3F,GACGd,OAAO,CAACe,aAAR,CAAsBC,yBAAtB,CAAgDpB,OAAhD,CADH,CANF,CADF;AAYD,CAhBD;;AAkBA,MAAMU,MAAM,GAAG,IAAAW,4CAAA,EAAiB;EAC9BV,SAAS,EAAE;IACTW,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,cAAc,EAAE,QAHP;IAITC,iBAAiB,EAAE,EAJV;IAKTC,eAAe,EAAE,CALR;IAMTX,YAAY,EAAE;EANL,CADmB;EAS9BG,IAAI,EAAE;IACJS,UAAU,EAAE;EADR;AATwB,CAAjB,CAAf;eAce5B,e"}
@@ -1 +1 @@
1
- {"version":3,"names":["ImageFileMessage","message","colors","useUIKitTheme","imageNotFound","setImageNotFound","useState","fileUrl","getAvailableUriFromFileMessage","style","styles","image","backgroundColor","onBackground04","onBackground02","uri","createStyleSheet","width","maxWidth","height","borderRadius"],"sources":["ImageFileMessage.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport type { FileMessageProps } from './index';\n\nconst ImageFileMessage: React.FC<FileMessageProps> = ({ message }) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n if (imageNotFound) {\n return <Icon containerStyle={style} icon={'thumbnail-none'} size={48} color={colors.onBackground02} />;\n }\n\n return (\n <Image\n source={{ uri: fileUrl }}\n style={style}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n />\n );\n};\n\nconst styles = createStyleSheet({\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;;;AAIA,MAAMA,gBAA4C,GAAG,QAAiB;EAAA,IAAhB;IAAEC;EAAF,CAAgB;EACpE,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAC,eAAA,EAAS,KAAT,CAA1C;EAEA,MAAMC,OAAO,GAAG,IAAAC,0CAAA,EAA+BP,OAA/B,CAAhB;EACA,MAAMQ,KAAK,GAAG,CAACC,MAAM,CAACC,KAAR,EAAe;IAAEC,eAAe,EAAEV,MAAM,CAACW;EAA1B,CAAf,CAAd;;EAEA,IAAIT,aAAJ,EAAmB;IACjB,oBAAO,6BAAC,gCAAD;MAAM,cAAc,EAAEK,KAAtB;MAA6B,IAAI,EAAE,gBAAnC;MAAqD,IAAI,EAAE,EAA3D;MAA+D,KAAK,EAAEP,MAAM,CAACY;IAA7E,EAAP;EACD;;EAED,oBACE,6BAAC,iCAAD;IACE,MAAM,EAAE;MAAEC,GAAG,EAAER;IAAP,CADV;IAEE,KAAK,EAAEE,KAFT;IAGE,UAAU,EAAE,OAHd;IAIE,YAAY,EAAE,QAJhB;IAKE,OAAO,EAAE,MAAMJ,gBAAgB,CAAC,IAAD;EALjC,EADF;AASD,CApBD;;AAsBA,MAAMK,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,KAAK,EAAE;IACLM,KAAK,EAAE,GADF;IAELC,QAAQ,EAAE,GAFL;IAGLC,MAAM,EAAE,GAHH;IAILC,YAAY,EAAE;EAJT;AADuB,CAAjB,CAAf;eASepB,gB"}
1
+ {"version":3,"names":["ImageFileMessage","message","colors","useUIKitTheme","imageNotFound","setImageNotFound","useState","fileUrl","getAvailableUriFromFileMessage","style","styles","image","backgroundColor","onBackground04","onBackground02","uri","createStyleSheet","width","maxWidth","height","borderRadius"],"sources":["ImageFileMessage.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport type { FileMessageProps } from './index';\n\nconst ImageFileMessage = ({ message }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n if (imageNotFound) {\n return <Icon containerStyle={style} icon={'thumbnail-none'} size={48} color={colors.onBackground02} />;\n }\n\n return (\n <Image\n source={{ uri: fileUrl }}\n style={style}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n />\n );\n};\n\nconst styles = createStyleSheet({\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;;;AAIA,MAAMA,gBAAgB,GAAG,QAAmC;EAAA,IAAlC;IAAEC;EAAF,CAAkC;EAC1D,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAC,eAAA,EAAS,KAAT,CAA1C;EAEA,MAAMC,OAAO,GAAG,IAAAC,0CAAA,EAA+BP,OAA/B,CAAhB;EACA,MAAMQ,KAAK,GAAG,CAACC,MAAM,CAACC,KAAR,EAAe;IAAEC,eAAe,EAAEV,MAAM,CAACW;EAA1B,CAAf,CAAd;;EAEA,IAAIT,aAAJ,EAAmB;IACjB,oBAAO,6BAAC,gCAAD;MAAM,cAAc,EAAEK,KAAtB;MAA6B,IAAI,EAAE,gBAAnC;MAAqD,IAAI,EAAE,EAA3D;MAA+D,KAAK,EAAEP,MAAM,CAACY;IAA7E,EAAP;EACD;;EAED,oBACE,6BAAC,iCAAD;IACE,MAAM,EAAE;MAAEC,GAAG,EAAER;IAAP,CADV;IAEE,KAAK,EAAEE,KAFT;IAGE,UAAU,EAAE,OAHd;IAIE,YAAY,EAAE,QAJhB;IAKE,OAAO,EAAE,MAAMJ,gBAAgB,CAAC,IAAD;EALjC,EADF;AASD,CApBD;;AAsBA,MAAMK,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,KAAK,EAAE;IACLM,KAAK,EAAE,GADF;IAELC,QAAQ,EAAE,GAFL;IAGLC,MAAM,EAAE,GAHH;IAILC,YAAY,EAAE;EAJT;AADuB,CAAjB,CAAf;eASepB,gB"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
+
14
+ var _uikitUtils = require("@sendbird/uikit-utils");
15
+
16
+ var _useContext = require("../../../hooks/useContext");
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ const VideoFileMessage = _ref => {
23
+ let {
24
+ message
25
+ } = _ref;
26
+ const {
27
+ colors
28
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
29
+ const {
30
+ mediaService
31
+ } = (0, _useContext.usePlatformService)();
32
+ const fileUrl = (0, _uikitUtils.getAvailableUriFromFileMessage)(message);
33
+ const style = [styles.image, {
34
+ backgroundColor: colors.onBackground04
35
+ }];
36
+ const [state, setState] = (0, _react.useState)({
37
+ thumbnail: null,
38
+ loading: true,
39
+ imageNotFound: false
40
+ });
41
+ (0, _react.useEffect)(() => {
42
+ mediaService === null || mediaService === void 0 ? void 0 : mediaService.getVideoThumbnail({
43
+ url: fileUrl,
44
+ timeMills: 1000
45
+ }).then(result => {
46
+ if (result !== null && result !== void 0 && result.path) {
47
+ setState(prev => ({ ...prev,
48
+ loading: false,
49
+ thumbnail: result.path
50
+ }));
51
+ } else {
52
+ throw new Error('Cannot generate thumbnail');
53
+ }
54
+ }).catch(() => {
55
+ setState(prev => ({ ...prev,
56
+ loading: false,
57
+ imageNotFound: true
58
+ }));
59
+ });
60
+ }, []);
61
+
62
+ if (state.loading || state.imageNotFound) {
63
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
64
+ style: [style, styles.container]
65
+ }, /*#__PURE__*/_react.default.createElement(PlayIcon, null));
66
+ }
67
+
68
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
69
+ style: styles.container
70
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Image, {
71
+ source: {
72
+ uri: state.thumbnail || fileUrl
73
+ },
74
+ style: style,
75
+ resizeMode: 'cover',
76
+ resizeMethod: 'resize',
77
+ onError: () => setState(prev => ({ ...prev,
78
+ imageNotFound: true
79
+ }))
80
+ }), /*#__PURE__*/_react.default.createElement(PlayIcon, null));
81
+ };
82
+
83
+ const PlayIcon = () => {
84
+ const {
85
+ colors
86
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
87
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
88
+ icon: 'play',
89
+ size: 28,
90
+ color: colors.onBackground02,
91
+ containerStyle: [styles.playIcon, {
92
+ backgroundColor: colors.onBackgroundReverse01
93
+ }]
94
+ });
95
+ };
96
+
97
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
98
+ container: {
99
+ alignItems: 'center',
100
+ justifyContent: 'center'
101
+ },
102
+ image: {
103
+ width: 240,
104
+ maxWidth: 240,
105
+ height: 160,
106
+ borderRadius: 16
107
+ },
108
+ playIcon: {
109
+ position: 'absolute',
110
+ padding: 10,
111
+ borderRadius: 50
112
+ }
113
+ });
114
+ var _default = VideoFileMessage;
115
+ exports.default = _default;
116
+ //# sourceMappingURL=VideoFileMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["VideoFileMessage","message","colors","useUIKitTheme","mediaService","usePlatformService","fileUrl","getAvailableUriFromFileMessage","style","styles","image","backgroundColor","onBackground04","state","setState","useState","thumbnail","loading","imageNotFound","useEffect","getVideoThumbnail","url","timeMills","then","result","path","prev","Error","catch","container","uri","PlayIcon","onBackground02","playIcon","onBackgroundReverse01","createStyleSheet","alignItems","justifyContent","width","maxWidth","height","borderRadius","position","padding"],"sources":["VideoFileMessage.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst VideoFileMessage = ({ message }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n\n const { mediaService } = usePlatformService();\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n const [state, setState] = useState({\n thumbnail: null as null | string,\n loading: true,\n imageNotFound: false,\n });\n\n useEffect(() => {\n mediaService\n ?.getVideoThumbnail({ url: fileUrl, timeMills: 1000 })\n .then((result) => {\n if (result?.path) {\n setState((prev) => ({ ...prev, loading: false, thumbnail: result.path }));\n } else {\n throw new Error('Cannot generate thumbnail');\n }\n })\n .catch(() => {\n setState((prev) => ({ ...prev, loading: false, imageNotFound: true }));\n });\n }, []);\n\n if (state.loading || state.imageNotFound) {\n return (\n <View style={[style, styles.container]}>\n <PlayIcon />\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <Image\n source={{ uri: state.thumbnail || fileUrl }}\n style={style}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setState((prev) => ({ ...prev, imageNotFound: true }))}\n />\n <PlayIcon />\n </View>\n );\n};\n\nconst PlayIcon = () => {\n const { colors } = useUIKitTheme();\n\n return (\n <Icon\n icon={'play'}\n size={28}\n color={colors.onBackground02}\n containerStyle={[styles.playIcon, { backgroundColor: colors.onBackgroundReverse01 }]}\n />\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n },\n playIcon: {\n position: 'absolute',\n padding: 10,\n borderRadius: 50,\n },\n});\n\nexport default VideoFileMessage;\n"],"mappings":"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"}
@@ -9,17 +9,25 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _uikitUtils = require("@sendbird/uikit-utils");
11
11
 
12
+ var _useContext = require("../../../hooks/useContext");
13
+
12
14
  var _BaseFileMessage = _interopRequireDefault(require("./BaseFileMessage"));
13
15
 
14
16
  var _ImageFileMessage = _interopRequireDefault(require("./ImageFileMessage"));
15
17
 
18
+ var _VideoFileMessage = _interopRequireDefault(require("./VideoFileMessage"));
19
+
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
21
 
18
22
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
23
 
20
24
  const FileMessage = props => {
25
+ const {
26
+ mediaService
27
+ } = (0, _useContext.usePlatformService)();
21
28
  const fileType = (0, _uikitUtils.getFileType)(props.message.type || (0, _uikitUtils.getFileExtension)(props.message.name));
22
29
  if (fileType === 'image') return /*#__PURE__*/_react.default.createElement(_ImageFileMessage.default, props);
30
+ if (fileType === 'video' && mediaService !== null && mediaService !== void 0 && mediaService.getVideoThumbnail) return /*#__PURE__*/_react.default.createElement(_VideoFileMessage.default, props);
23
31
  return /*#__PURE__*/_react.default.createElement(_BaseFileMessage.default, _extends({}, props, {
24
32
  type: fileType
25
33
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["FileMessage","props","fileType","getFileType","message","type","getFileExtension","name","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\nimport BaseFileMessage from './BaseFileMessage';\nimport ImageFileMessage from './ImageFileMessage';\n\nexport type FileMessageProps = MessageRendererInterface<SendbirdFileMessage>;\nconst FileMessage: React.FC<FileMessageProps> = (props) => {\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\n\n if (fileType === 'image') return <ImageFileMessage {...props} />;\n return <BaseFileMessage {...props} type={fileType} />;\n};\n\nexport default React.memo(FileMessage);\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAGA;;AACA;;;;;;AAGA,MAAMA,WAAuC,GAAIC,KAAD,IAAW;EACzD,MAAMC,QAAQ,GAAG,IAAAC,uBAAA,EAAYF,KAAK,CAACG,OAAN,CAAcC,IAAd,IAAsB,IAAAC,4BAAA,EAAiBL,KAAK,CAACG,OAAN,CAAcG,IAA/B,CAAlC,CAAjB;EAEA,IAAIL,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,6BAAC,yBAAD,EAAsBD,KAAtB,CAAP;EAC1B,oBAAO,6BAAC,wBAAD,eAAqBA,KAArB;IAA4B,IAAI,EAAEC;EAAlC,GAAP;AACD,CALD;;4BAOeM,cAAA,CAAMC,IAAN,CAAWT,WAAX,C"}
1
+ {"version":3,"names":["FileMessage","props","mediaService","usePlatformService","fileType","getFileType","message","type","getFileExtension","name","getVideoThumbnail","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../../hooks/useContext';\nimport type { MessageRendererInterface } from '../index';\nimport BaseFileMessage from './BaseFileMessage';\nimport ImageFileMessage from './ImageFileMessage';\nimport VideoFileMessage from './VideoFileMessage';\n\nexport type FileMessageProps = MessageRendererInterface<SendbirdFileMessage>;\nconst FileMessage = (props: FileMessageProps) => {\n const { mediaService } = usePlatformService();\n\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\n\n if (fileType === 'image') return <ImageFileMessage {...props} />;\n if (fileType === 'video' && mediaService?.getVideoThumbnail) return <VideoFileMessage {...props} />;\n\n return <BaseFileMessage {...props} type={fileType} />;\n};\n\nexport default React.memo(FileMessage);\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AACA;;AACA;;;;;;AAGA,MAAMA,WAAW,GAAIC,KAAD,IAA6B;EAC/C,MAAM;IAAEC;EAAF,IAAmB,IAAAC,8BAAA,GAAzB;EAEA,MAAMC,QAAQ,GAAG,IAAAC,uBAAA,EAAYJ,KAAK,CAACK,OAAN,CAAcC,IAAd,IAAsB,IAAAC,4BAAA,EAAiBP,KAAK,CAACK,OAAN,CAAcG,IAA/B,CAAlC,CAAjB;EAEA,IAAIL,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,6BAAC,yBAAD,EAAsBH,KAAtB,CAAP;EAC1B,IAAIG,QAAQ,KAAK,OAAb,IAAwBF,YAAxB,aAAwBA,YAAxB,eAAwBA,YAAY,CAAEQ,iBAA1C,EAA6D,oBAAO,6BAAC,yBAAD,EAAsBT,KAAtB,CAAP;EAE7D,oBAAO,6BAAC,wBAAD,eAAqBA,KAArB;IAA4B,IAAI,EAAEG;EAAlC,GAAP;AACD,CATD;;4BAWeO,cAAA,CAAMC,IAAN,CAAWZ,WAAX,C"}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageContainer","children","styles","container","createStyleSheet","flexDirection","paddingHorizontal"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\n\nconst MessageContainer: React.FC = ({ children }) => {\n return <View style={styles.container}>{children}</View>;\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n paddingHorizontal: 16,\n },\n});\n\nexport default MessageContainer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAEA,MAAMA,gBAA0B,GAAG,QAAkB;EAAA,IAAjB;IAAEC;EAAF,CAAiB;EACnD,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,GAAgCF,QAAhC,CAAP;AACD,CAFD;;AAIA,MAAMC,MAAM,GAAG,IAAAE,4CAAA,EAAiB;EAC9BD,SAAS,EAAE;IACTE,aAAa,EAAE,QADN;IAETC,iBAAiB,EAAE;EAFV;AADmB,CAAjB,CAAf;eAOeN,gB"}
1
+ {"version":3,"names":["MessageContainer","children","styles","container","createStyleSheet","flexDirection","paddingHorizontal"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\n\nconst MessageContainer = ({ children }: React.PropsWithChildren) => {\n return <View style={styles.container}>{children}</View>;\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n paddingHorizontal: 16,\n },\n});\n\nexport default MessageContainer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAEA,MAAMA,gBAAgB,GAAG,QAA2C;EAAA,IAA1C;IAAEC;EAAF,CAA0C;EAClE,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,GAAgCF,QAAhC,CAAP;AACD,CAFD;;AAIA,MAAMC,MAAM,GAAG,IAAAE,4CAAA,EAAiB;EAC9BD,SAAS,EAAE;IACTE,aAAa,EAAE,QADN;IAETC,iBAAiB,EAAE;EAFV;AADmB,CAAjB,CAAf;eAOeN,gB"}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageDateSeparator","message","prevMessage","STRINGS","useLocalization","colors","useUIKitTheme","sameDay","isSameDay","createdAt","styles","container","view","backgroundColor","ui","dateSeparator","default","none","background","text","GROUP_CHANNEL","LIST_DATE_SEPARATOR","Date","createStyleSheet","alignItems","marginVertical","borderRadius","paddingVertical","paddingHorizontal"],"sources":["MessageDateSeparator.tsx"],"sourcesContent":["import isSameDay from 'date-fns/isSameDay';\nimport React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n};\n\nconst MessageDateSeparator: React.FC<Props> = ({ message, prevMessage }) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const sameDay = isSameDay(message.createdAt, prevMessage?.createdAt ?? 0);\n if (sameDay) return null;\n return (\n <View style={styles.container}>\n <View style={[styles.view, { backgroundColor: colors.ui.dateSeparator.default.none.background }]}>\n <Text caption1 color={colors.ui.dateSeparator.default.none.text}>\n {STRINGS.GROUP_CHANNEL.LIST_DATE_SEPARATOR(new Date(message.createdAt))}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n marginVertical: 16,\n },\n view: {\n borderRadius: 10,\n paddingVertical: 4,\n paddingHorizontal: 10,\n },\n});\n\nexport default MessageDateSeparator;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAGA;;;;AAOA,MAAMA,oBAAqC,GAAG,QAA8B;EAAA,IAA7B;IAAEC,OAAF;IAAWC;EAAX,CAA6B;EAC1E,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAMC,OAAO,GAAG,IAAAC,kBAAA,EAAUP,OAAO,CAACQ,SAAlB,EAA6B,CAAAP,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEO,SAAb,KAA0B,CAAvD,CAAhB;EACA,IAAIF,OAAJ,EAAa,OAAO,IAAP;EACb,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEG,MAAM,CAACC;EAApB,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACD,MAAM,CAACE,IAAR,EAAc;MAAEC,eAAe,EAAER,MAAM,CAACS,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCC;IAAxD,CAAd;EAAb,gBACE,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEb,MAAM,CAACS,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCE;EAA3D,GACGhB,OAAO,CAACiB,aAAR,CAAsBC,mBAAtB,CAA0C,IAAIC,IAAJ,CAASrB,OAAO,CAACQ,SAAjB,CAA1C,CADH,CADF,CADF,CADF;AASD,CAdD;;AAgBA,MAAMC,MAAM,GAAG,IAAAa,4CAAA,EAAiB;EAC9BZ,SAAS,EAAE;IACTa,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP,CADmB;EAK9Bb,IAAI,EAAE;IACJc,YAAY,EAAE,EADV;IAEJC,eAAe,EAAE,CAFb;IAGJC,iBAAiB,EAAE;EAHf;AALwB,CAAjB,CAAf;eAYe5B,oB"}
1
+ {"version":3,"names":["MessageDateSeparator","message","prevMessage","STRINGS","useLocalization","colors","useUIKitTheme","sameDay","isSameDay","createdAt","styles","container","view","backgroundColor","ui","dateSeparator","default","none","background","text","GROUP_CHANNEL","LIST_DATE_SEPARATOR","Date","createStyleSheet","alignItems","marginVertical","borderRadius","paddingVertical","paddingHorizontal"],"sources":["MessageDateSeparator.tsx"],"sourcesContent":["import isSameDay from 'date-fns/isSameDay';\nimport React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n};\n\nconst MessageDateSeparator = ({ message, prevMessage }: Props) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const sameDay = isSameDay(message.createdAt, prevMessage?.createdAt ?? 0);\n if (sameDay) return null;\n return (\n <View style={styles.container}>\n <View style={[styles.view, { backgroundColor: colors.ui.dateSeparator.default.none.background }]}>\n <Text caption1 color={colors.ui.dateSeparator.default.none.text}>\n {STRINGS.GROUP_CHANNEL.LIST_DATE_SEPARATOR(new Date(message.createdAt))}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n marginVertical: 16,\n },\n view: {\n borderRadius: 10,\n paddingVertical: 4,\n paddingHorizontal: 10,\n },\n});\n\nexport default MessageDateSeparator;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAGA;;;;AAOA,MAAMA,oBAAoB,GAAG,QAAqC;EAAA,IAApC;IAAEC,OAAF;IAAWC;EAAX,CAAoC;EAChE,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAMC,OAAO,GAAG,IAAAC,kBAAA,EAAUP,OAAO,CAACQ,SAAlB,EAA6B,CAAAP,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEO,SAAb,KAA0B,CAAvD,CAAhB;EACA,IAAIF,OAAJ,EAAa,OAAO,IAAP;EACb,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEG,MAAM,CAACC;EAApB,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACD,MAAM,CAACE,IAAR,EAAc;MAAEC,eAAe,EAAER,MAAM,CAACS,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCC;IAAxD,CAAd;EAAb,gBACE,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEb,MAAM,CAACS,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCE;EAA3D,GACGhB,OAAO,CAACiB,aAAR,CAAsBC,mBAAtB,CAA0C,IAAIC,IAAJ,CAASrB,OAAO,CAACQ,SAAjB,CAA1C,CADH,CADF,CADF,CADF;AASD,CAdD;;AAgBA,MAAMC,MAAM,GAAG,IAAAa,4CAAA,EAAiB;EAC9BZ,SAAS,EAAE;IACTa,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP,CADmB;EAK9Bb,IAAI,EAAE;IACJc,YAAY,EAAE,EADV;IAEJC,eAAe,EAAE,CAFb;IAGJC,iBAAiB,EAAE;EAHf;AALwB,CAAjB,CAAf;eAYe5B,oB"}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageIncomingAvatar","message","grouping","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","createStyleSheet","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\ntype Props = { message: SendbirdMessage; grouping: boolean };\nconst MessageIncomingAvatar: React.FC<Props> = ({ message, grouping }) => {\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && <Avatar size={26} uri={message.sender?.profileUrl} />}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 26,\n marginRight: 12,\n },\n});\n\nexport default MessageIncomingAvatar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAIA,MAAMA,qBAAsC,GAAG,QAA2B;EAAA;;EAAA,IAA1B;IAAEC,OAAF;IAAWC;EAAX,CAA0B;EACxE,IAAIA,QAAJ,EAAc,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACH,OAAO,CAACI,aAAR,MAA2BJ,OAAO,CAACK,aAAR,EAA5B,kBAAwD,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAEL,OAAO,CAACM,MAAV,oDAAE,gBAAgBC;EAAvC,EAD3D,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,MAAM,EAAE;IACNM,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAjB,CAAf;eAOeX,qB"}
1
+ {"version":3,"names":["MessageIncomingAvatar","message","grouping","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","createStyleSheet","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingAvatar = ({ message, grouping }: Props) => {\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && <Avatar size={26} uri={message.sender?.profileUrl} />}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 26,\n marginRight: 12,\n },\n});\n\nexport default MessageIncomingAvatar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAOA,MAAMA,qBAAqB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAC9D,IAAIA,QAAJ,EAAc,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACH,OAAO,CAACI,aAAR,MAA2BJ,OAAO,CAACK,aAAR,EAA5B,kBAAwD,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAEL,OAAO,CAACM,MAAV,oDAAE,gBAAgBC;EAAvC,EAD3D,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,MAAM,EAAE;IACNM,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAjB,CAAf;eAOeX,qB"}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageIncomingSenderName","message","grouping","colors","useUIKitTheme","STRINGS","useLocalization","styles","sender","isFileMessage","isUserMessage","ui","incoming","enabled","textSenderName","nickname","LABELS","USER_NO_NAME","createStyleSheet","marginLeft","marginBottom"],"sources":["MessageIncomingSenderName.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = { message: SendbirdMessage; grouping: boolean };\nconst MessageIncomingSenderName: React.FC<Props> = ({ message, grouping }) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n if (grouping) return null;\n\n return (\n <View style={styles.sender}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Text caption1 color={colors.ui.message.incoming.enabled.textSenderName}>\n {message.sender?.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sender: {\n marginLeft: 12,\n marginBottom: 4,\n },\n});\n\nexport default MessageIncomingSenderName;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;AAGA,MAAMA,yBAA0C,GAAG,QAA2B;EAAA;;EAAA,IAA1B;IAAEC,OAAF;IAAWC;EAAX,CAA0B;EAC5E,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,IAAIJ,QAAJ,EAAc,OAAO,IAAP;EAEd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEK,MAAM,CAACC;EAApB,GACG,CAACP,OAAO,CAACQ,aAAR,MAA2BR,OAAO,CAACS,aAAR,EAA5B,kBACC,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEP,MAAM,CAACQ,EAAP,CAAUV,OAAV,CAAkBW,QAAlB,CAA2BC,OAA3B,CAAmCC;EAAzD,GACG,oBAAAb,OAAO,CAACO,MAAR,oEAAgBO,QAAhB,KAA4BV,OAAO,CAACW,MAAR,CAAeC,YAD9C,CAFJ,CADF;AASD,CAdD;;AAgBA,MAAMV,MAAM,GAAG,IAAAW,4CAAA,EAAiB;EAC9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,YAAY,EAAE;EAFR;AADsB,CAAjB,CAAf;eAOepB,yB"}
1
+ {"version":3,"names":["MessageIncomingSenderName","message","grouping","colors","useUIKitTheme","STRINGS","useLocalization","styles","sender","isFileMessage","isUserMessage","ui","incoming","enabled","textSenderName","nickname","LABELS","USER_NO_NAME","createStyleSheet","marginLeft","marginBottom"],"sources":["MessageIncomingSenderName.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingSenderName = ({ message, grouping }: Props) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n if (grouping) return null;\n\n return (\n <View style={styles.sender}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Text caption1 color={colors.ui.message.incoming.enabled.textSenderName}>\n {message.sender?.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sender: {\n marginLeft: 12,\n marginBottom: 4,\n },\n});\n\nexport default MessageIncomingSenderName;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;AAMA,MAAMA,yBAAyB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAClE,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,IAAIJ,QAAJ,EAAc,OAAO,IAAP;EAEd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEK,MAAM,CAACC;EAApB,GACG,CAACP,OAAO,CAACQ,aAAR,MAA2BR,OAAO,CAACS,aAAR,EAA5B,kBACC,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEP,MAAM,CAACQ,EAAP,CAAUV,OAAV,CAAkBW,QAAlB,CAA2BC,OAA3B,CAAmCC;EAAzD,GACG,oBAAAb,OAAO,CAACO,MAAR,oEAAgBO,QAAhB,KAA4BV,OAAO,CAACW,MAAR,CAAeC,YAD9C,CAFJ,CADF;AASD,CAdD;;AAgBA,MAAMV,MAAM,GAAG,IAAAW,4CAAA,EAAiB;EAC9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,YAAY,EAAE;EAFR;AADsB,CAAjB,CAAf;eAOepB,yB"}
@@ -25,7 +25,6 @@ const MessageOutgoingStatus = _ref => {
25
25
  message
26
26
  } = _ref;
27
27
  if (!message.isUserMessage() && !message.isFileMessage()) return null;
28
- const handlerId = (0, _uikitUtils.useUniqId)('MessageOutgoingStatus');
29
28
  const {
30
29
  sdk,
31
30
  features
@@ -33,41 +32,33 @@ const MessageOutgoingStatus = _ref => {
33
32
  const {
34
33
  colors
35
34
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
36
- const [state, setState] = (0, _react.useState)(() => ({
37
- unreadCount: channel.getUnreadMemberCount(message),
38
- undeliveredCount: channel.getUndeliveredMemberCount(message)
39
- }));
40
-
41
- const getCounts = (channel, message) => {
42
- return {
43
- unreadCount: channel.getUnreadMemberCount(message),
44
- undeliveredCount: channel.getUndeliveredMemberCount(message)
45
- };
46
- };
47
-
35
+ const uniqId = (0, _uikitUtils.useUniqId)('MessageOutgoingStatus');
36
+ const forceUpdate = (0, _uikitUtils.useForceUpdate)();
48
37
  (0, _react.useEffect)(() => {
49
- const id = String(handlerId);
38
+ const handlerId = `MessageOutgoingStatus_${uniqId}`;
50
39
 
51
- if (message.sendingStatus === 'succeeded' && state.unreadCount === 0 && state.undeliveredCount === 0) {
52
- sdk.removeChannelHandler(id);
40
+ if (message.sendingStatus === 'succeeded' && channel.getUnreadMemberCount(message) === 0 && channel.getUndeliveredMemberCount(message) === 0) {
41
+ sdk.removeChannelHandler(handlerId);
53
42
  } else {
54
43
  const handler = new sdk.ChannelHandler();
55
44
 
56
- handler.onReadReceiptUpdated = channel => {
57
- if (channel.url === message.channelUrl) setState(getCounts(channel, message));
45
+ handler.onReadReceiptUpdated = eventChannel => {
46
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
47
+ forceUpdate();
58
48
  };
59
49
 
60
50
  if (features.deliveryReceiptEnabled) {
61
- handler.onDeliveryReceiptUpdated = channel => {
62
- if (channel.url === message.channelUrl && channel.isGroupChannel()) setState(getCounts(channel, message));
51
+ handler.onDeliveryReceiptUpdated = eventChannel => {
52
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
53
+ forceUpdate();
63
54
  };
64
55
  }
65
56
 
66
- sdk.addChannelHandler(id, handler);
57
+ sdk.addChannelHandler(handlerId, handler);
67
58
  }
68
59
 
69
60
  return () => {
70
- sdk.removeChannelHandler(id);
61
+ sdk.removeChannelHandler(handlerId);
71
62
  };
72
63
  }, [message.sendingStatus]);
73
64
 
@@ -87,7 +78,7 @@ const MessageOutgoingStatus = _ref => {
87
78
  });
88
79
  }
89
80
 
90
- if (state.unreadCount === 0) {
81
+ if (channel.getUnreadMemberCount(message) === 0) {
91
82
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
92
83
  icon: 'done-all',
93
84
  size: SIZE,
@@ -97,7 +88,7 @@ const MessageOutgoingStatus = _ref => {
97
88
  }
98
89
 
99
90
  if (features.deliveryReceiptEnabled) {
100
- if (state.undeliveredCount === 0) {
91
+ if (channel.getUndeliveredMemberCount(message) === 0) {
101
92
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
102
93
  icon: 'done-all',
103
94
  size: SIZE,
@@ -1 +1 @@
1
- {"version":3,"names":["SIZE","MessageOutgoingStatus","channel","message","isUserMessage","isFileMessage","handlerId","useUniqId","sdk","features","useSendbirdChat","colors","useUIKitTheme","state","setState","useState","unreadCount","getUnreadMemberCount","undeliveredCount","getUndeliveredMemberCount","getCounts","useEffect","id","String","sendingStatus","removeChannelHandler","handler","ChannelHandler","onReadReceiptUpdated","url","channelUrl","deliveryReceiptEnabled","onDeliveryReceiptUpdated","isGroupChannel","addChannelHandler","styles","container","error","secondary","onBackground03","createStyleSheet","marginRight","React","memo"],"sources":["MessageOutgoingStatus.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport { Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\n\nconst SIZE = 16;\n\ntype Props = { channel: SendbirdGroupChannel; message: SendbirdMessage };\nconst MessageOutgoingStatus: React.FC<Props> = ({ channel, message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return null;\n\n const handlerId = useUniqId('MessageOutgoingStatus');\n\n const { sdk, features } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n\n const [state, setState] = useState(() => ({\n unreadCount: channel.getUnreadMemberCount(message),\n undeliveredCount: channel.getUndeliveredMemberCount(message),\n }));\n\n const getCounts = (channel: SendbirdGroupChannel, message: SendbirdUserMessage | SendbirdFileMessage) => {\n return {\n unreadCount: channel.getUnreadMemberCount(message),\n undeliveredCount: channel.getUndeliveredMemberCount(message),\n };\n };\n\n useEffect(() => {\n const id = String(handlerId);\n if (message.sendingStatus === 'succeeded' && state.unreadCount === 0 && state.undeliveredCount === 0) {\n sdk.removeChannelHandler(id);\n } else {\n const handler = new sdk.ChannelHandler();\n handler.onReadReceiptUpdated = (channel) => {\n if (channel.url === message.channelUrl) setState(getCounts(channel, message));\n };\n\n if (features.deliveryReceiptEnabled) {\n handler.onDeliveryReceiptUpdated = (channel) => {\n if (channel.url === message.channelUrl && channel.isGroupChannel()) setState(getCounts(channel, message));\n };\n }\n sdk.addChannelHandler(id, handler);\n }\n\n return () => {\n sdk.removeChannelHandler(id);\n };\n }, [message.sendingStatus]);\n\n if (message.sendingStatus === 'pending') {\n return <LoadingSpinner size={SIZE} style={styles.container} />;\n }\n\n if (message.sendingStatus === 'failed') {\n return <Icon icon={'error'} size={SIZE} color={colors.error} style={styles.container} />;\n }\n\n if (state.unreadCount === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.secondary} style={styles.container} />;\n }\n\n if (features.deliveryReceiptEnabled) {\n if (state.undeliveredCount === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n return <Icon icon={'done'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n};\n\nconst styles = createStyleSheet({\n container: {\n marginRight: 4,\n },\n});\n\nexport default React.memo(MessageOutgoingStatus);\n"],"mappings":"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"}
1
+ {"version":3,"names":["SIZE","MessageOutgoingStatus","channel","message","isUserMessage","isFileMessage","sdk","features","useSendbirdChat","colors","useUIKitTheme","uniqId","useUniqId","forceUpdate","useForceUpdate","useEffect","handlerId","sendingStatus","getUnreadMemberCount","getUndeliveredMemberCount","removeChannelHandler","handler","ChannelHandler","onReadReceiptUpdated","eventChannel","isDifferentChannel","deliveryReceiptEnabled","onDeliveryReceiptUpdated","addChannelHandler","styles","container","error","secondary","onBackground03","createStyleSheet","marginRight","React","memo"],"sources":["MessageOutgoingStatus.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\n\nconst SIZE = 16;\n\ntype Props = { channel: SendbirdGroupChannel; message: SendbirdMessage };\nconst MessageOutgoingStatus = ({ channel, message }: Props) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return null;\n\n const { sdk, features } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n\n const uniqId = useUniqId('MessageOutgoingStatus');\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n const handlerId = `MessageOutgoingStatus_${uniqId}`;\n\n if (\n message.sendingStatus === 'succeeded' &&\n channel.getUnreadMemberCount(message) === 0 &&\n channel.getUndeliveredMemberCount(message) === 0\n ) {\n sdk.removeChannelHandler(handlerId);\n } else {\n const handler = new sdk.ChannelHandler();\n\n handler.onReadReceiptUpdated = (eventChannel) => {\n if (isDifferentChannel(channel, eventChannel)) return;\n forceUpdate();\n };\n\n if (features.deliveryReceiptEnabled) {\n handler.onDeliveryReceiptUpdated = (eventChannel) => {\n if (isDifferentChannel(channel, eventChannel)) return;\n forceUpdate();\n };\n }\n\n sdk.addChannelHandler(handlerId, handler);\n }\n\n return () => {\n sdk.removeChannelHandler(handlerId);\n };\n }, [message.sendingStatus]);\n\n if (message.sendingStatus === 'pending') {\n return <LoadingSpinner size={SIZE} style={styles.container} />;\n }\n\n if (message.sendingStatus === 'failed') {\n return <Icon icon={'error'} size={SIZE} color={colors.error} style={styles.container} />;\n }\n\n if (channel.getUnreadMemberCount(message) === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.secondary} style={styles.container} />;\n }\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n return <Icon icon={'done'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n};\n\nconst styles = createStyleSheet({\n container: {\n marginRight: 4,\n },\n});\n\nexport default React.memo(MessageOutgoingStatus);\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;;;;;AAEA,MAAMA,IAAI,GAAG,EAAb;;AAGA,MAAMC,qBAAqB,GAAG,QAAiC;EAAA,IAAhC;IAAEC,OAAF;IAAWC;EAAX,CAAgC;EAC7D,IAAI,CAACA,OAAO,CAACC,aAAR,EAAD,IAA4B,CAACD,OAAO,CAACE,aAAR,EAAjC,EAA0D,OAAO,IAAP;EAE1D,MAAM;IAAEC,GAAF;IAAOC;EAAP,IAAoB,IAAAC,2BAAA,GAA1B;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAU,uBAAV,CAAf;EACA,MAAMC,WAAW,GAAG,IAAAC,0BAAA,GAApB;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACd,MAAMC,SAAS,GAAI,yBAAwBL,MAAO,EAAlD;;IAEA,IACER,OAAO,CAACc,aAAR,KAA0B,WAA1B,IACAf,OAAO,CAACgB,oBAAR,CAA6Bf,OAA7B,MAA0C,CAD1C,IAEAD,OAAO,CAACiB,yBAAR,CAAkChB,OAAlC,MAA+C,CAHjD,EAIE;MACAG,GAAG,CAACc,oBAAJ,CAAyBJ,SAAzB;IACD,CAND,MAMO;MACL,MAAMK,OAAO,GAAG,IAAIf,GAAG,CAACgB,cAAR,EAAhB;;MAEAD,OAAO,CAACE,oBAAR,GAAgCC,YAAD,IAAkB;QAC/C,IAAI,IAAAC,8BAAA,EAAmBvB,OAAnB,EAA4BsB,YAA5B,CAAJ,EAA+C;QAC/CX,WAAW;MACZ,CAHD;;MAKA,IAAIN,QAAQ,CAACmB,sBAAb,EAAqC;QACnCL,OAAO,CAACM,wBAAR,GAAoCH,YAAD,IAAkB;UACnD,IAAI,IAAAC,8BAAA,EAAmBvB,OAAnB,EAA4BsB,YAA5B,CAAJ,EAA+C;UAC/CX,WAAW;QACZ,CAHD;MAID;;MAEDP,GAAG,CAACsB,iBAAJ,CAAsBZ,SAAtB,EAAiCK,OAAjC;IACD;;IAED,OAAO,MAAM;MACXf,GAAG,CAACc,oBAAJ,CAAyBJ,SAAzB;IACD,CAFD;EAGD,CA9BD,EA8BG,CAACb,OAAO,CAACc,aAAT,CA9BH;;EAgCA,IAAId,OAAO,CAACc,aAAR,KAA0B,SAA9B,EAAyC;IACvC,oBAAO,6BAAC,0CAAD;MAAgB,IAAI,EAAEjB,IAAtB;MAA4B,KAAK,EAAE6B,MAAM,CAACC;IAA1C,EAAP;EACD;;EAED,IAAI3B,OAAO,CAACc,aAAR,KAA0B,QAA9B,EAAwC;IACtC,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,OAAZ;MAAqB,IAAI,EAAEjB,IAA3B;MAAiC,KAAK,EAAES,MAAM,CAACsB,KAA/C;MAAsD,KAAK,EAAEF,MAAM,CAACC;IAApE,EAAP;EACD;;EAED,IAAI5B,OAAO,CAACgB,oBAAR,CAA6Bf,OAA7B,MAA0C,CAA9C,EAAiD;IAC/C,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,UAAZ;MAAwB,IAAI,EAAEH,IAA9B;MAAoC,KAAK,EAAES,MAAM,CAACuB,SAAlD;MAA6D,KAAK,EAAEH,MAAM,CAACC;IAA3E,EAAP;EACD;;EAED,IAAIvB,QAAQ,CAACmB,sBAAb,EAAqC;IACnC,IAAIxB,OAAO,CAACiB,yBAAR,CAAkChB,OAAlC,MAA+C,CAAnD,EAAsD;MACpD,oBAAO,6BAAC,gCAAD;QAAM,IAAI,EAAE,UAAZ;QAAwB,IAAI,EAAEH,IAA9B;QAAoC,KAAK,EAAES,MAAM,CAACwB,cAAlD;QAAkE,KAAK,EAAEJ,MAAM,CAACC;MAAhF,EAAP;IACD;;IACD,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,MAAZ;MAAoB,IAAI,EAAE9B,IAA1B;MAAgC,KAAK,EAAES,MAAM,CAACwB,cAA9C;MAA8D,KAAK,EAAEJ,MAAM,CAACC;IAA5E,EAAP;EACD;;EAED,oBAAO,6BAAC,gCAAD;IAAM,IAAI,EAAE,UAAZ;IAAwB,IAAI,EAAE9B,IAA9B;IAAoC,KAAK,EAAES,MAAM,CAACwB,cAAlD;IAAkE,KAAK,EAAEJ,MAAM,CAACC;EAAhF,EAAP;AACD,CA7DD;;AA+DA,MAAMD,MAAM,GAAG,IAAAK,4CAAA,EAAiB;EAC9BJ,SAAS,EAAE;IACTK,WAAW,EAAE;EADJ;AADmB,CAAjB,CAAf;;4BAMeC,cAAA,CAAMC,IAAN,CAAWpC,qBAAX,C"}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageTime","message","grouping","style","STRINGS","useLocalization","colors","useUIKitTheme","ui","incoming","enabled","textTime","GROUP_CHANNEL","MESSAGE_BUBBLE_TIME"],"sources":["MessageTime.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport { Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = { message: SendbirdMessage; grouping: boolean; style?: StyleProp<ViewStyle> };\nconst MessageTime: React.FC<Props> = ({ message, grouping, style }) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n if (grouping) return null;\n\n return (\n <View style={style}>\n <Text caption4 color={colors.ui.message.incoming.enabled.textTime}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message)}\n </Text>\n </View>\n );\n};\n\nexport default MessageTime;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;AAGA,MAAMA,WAA4B,GAAG,QAAkC;EAAA,IAAjC;IAAEC,OAAF;IAAWC,QAAX;IAAqBC;EAArB,CAAiC;EACrE,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,IAAIL,QAAJ,EAAc,OAAO,IAAP;EAEd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC;EAAb,gBACE,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEG,MAAM,CAACE,EAAP,CAAUP,OAAV,CAAkBQ,QAAlB,CAA2BC,OAA3B,CAAmCC;EAAzD,GACGP,OAAO,CAACQ,aAAR,CAAsBC,mBAAtB,CAA0CZ,OAA1C,CADH,CADF,CADF;AAOD,CAZD;;eAceD,W"}
1
+ {"version":3,"names":["MessageTime","message","grouping","style","STRINGS","useLocalization","colors","useUIKitTheme","ui","incoming","enabled","textTime","GROUP_CHANNEL","MESSAGE_BUBBLE_TIME"],"sources":["MessageTime.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport { Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n style?: StyleProp<ViewStyle>;\n};\nconst MessageTime = ({ message, grouping, style }: Props) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n if (grouping) return null;\n\n return (\n <View style={style}>\n <Text caption4 color={colors.ui.message.incoming.enabled.textTime}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message)}\n </Text>\n </View>\n );\n};\n\nexport default MessageTime;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;AAOA,MAAMA,WAAW,GAAG,QAAyC;EAAA,IAAxC;IAAEC,OAAF;IAAWC,QAAX;IAAqBC;EAArB,CAAwC;EAC3D,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,IAAIL,QAAJ,EAAc,OAAO,IAAP;EAEd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC;EAAb,gBACE,6BAAC,gCAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEG,MAAM,CAACE,EAAP,CAAUP,OAAV,CAAkBQ,QAAlB,CAA2BC,OAA3B,CAAmCC;EAAzD,GACGP,OAAO,CAACQ,aAAR,CAAsBC,mBAAtB,CAA0CZ,OAA1C,CADH,CADF,CADF;AAOD,CAZD;;eAceD,W"}