@sendbird/uikit-react-native 2.0.3 → 2.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 (426) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/components/ChannelCover.js +22 -1
  3. package/lib/commonjs/components/ChannelCover.js.map +1 -1
  4. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +9 -2
  5. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  6. package/lib/commonjs/components/MessageRenderer/index.js +1 -1
  7. package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
  8. package/lib/commonjs/components/TypedPlaceholder.js +2 -2
  9. package/lib/commonjs/components/TypedPlaceholder.js.map +1 -1
  10. package/lib/commonjs/components/UserActionBar.js +7 -4
  11. package/lib/commonjs/components/UserActionBar.js.map +1 -1
  12. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +5 -0
  13. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  14. package/lib/commonjs/containers/SendbirdUIKitContainer.js +15 -8
  15. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  16. package/lib/commonjs/contexts/{Localization.js → LocalizationCtx.js} +1 -1
  17. package/lib/commonjs/contexts/LocalizationCtx.js.map +1 -0
  18. package/lib/commonjs/contexts/{PlatformService.js → PlatformServiceCtx.js} +1 -1
  19. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -0
  20. package/lib/commonjs/contexts/{SendbirdChat.js → SendbirdChatCtx.js} +5 -3
  21. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -0
  22. package/lib/commonjs/contexts/UserProfileCtx.js +116 -0
  23. package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -0
  24. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js +3 -1
  25. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  26. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +4 -2
  27. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  28. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +15 -10
  29. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  30. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  31. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.js +39 -0
  32. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.js.map +1 -0
  33. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +53 -0
  34. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -0
  35. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js +34 -0
  36. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js.map +1 -0
  37. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js +38 -0
  38. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js.map +1 -0
  39. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js +34 -0
  40. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js.map +1 -0
  41. package/lib/commonjs/domain/groupChannelBannedUsers/index.js +62 -0
  42. package/lib/commonjs/domain/groupChannelBannedUsers/index.js.map +1 -0
  43. package/lib/commonjs/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js +45 -0
  44. package/lib/commonjs/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js.map +1 -0
  45. package/lib/commonjs/domain/groupChannelBannedUsers/module/moduleContext.js +45 -0
  46. package/lib/commonjs/domain/groupChannelBannedUsers/module/moduleContext.js.map +1 -0
  47. package/lib/commonjs/domain/groupChannelBannedUsers/types.js +6 -0
  48. package/lib/commonjs/domain/groupChannelBannedUsers/types.js.map +1 -0
  49. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +32 -30
  50. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  51. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  52. package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationHeader.js +39 -0
  53. package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationHeader.js.map +1 -0
  54. package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationMenu.js +103 -0
  55. package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationMenu.js.map +1 -0
  56. package/lib/commonjs/domain/groupChannelModeration/index.js +46 -0
  57. package/lib/commonjs/domain/groupChannelModeration/index.js.map +1 -0
  58. package/lib/commonjs/domain/groupChannelModeration/module/createGroupChannelModerationModule.js +33 -0
  59. package/lib/commonjs/domain/groupChannelModeration/module/createGroupChannelModerationModule.js.map +1 -0
  60. package/lib/commonjs/domain/groupChannelModeration/module/moduleContext.js +46 -0
  61. package/lib/commonjs/domain/groupChannelModeration/module/moduleContext.js.map +1 -0
  62. package/lib/commonjs/domain/groupChannelModeration/types.js +6 -0
  63. package/lib/commonjs/domain/groupChannelModeration/types.js.map +1 -0
  64. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js +39 -0
  65. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js.map +1 -0
  66. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +51 -0
  67. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -0
  68. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js +34 -0
  69. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js.map +1 -0
  70. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js +38 -0
  71. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js.map +1 -0
  72. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js +34 -0
  73. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js.map +1 -0
  74. package/lib/commonjs/domain/groupChannelMutedMembers/index.js +70 -0
  75. package/lib/commonjs/domain/groupChannelMutedMembers/index.js.map +1 -0
  76. package/lib/commonjs/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js +45 -0
  77. package/lib/commonjs/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js.map +1 -0
  78. package/lib/commonjs/domain/groupChannelMutedMembers/module/moduleContext.js +45 -0
  79. package/lib/commonjs/domain/groupChannelMutedMembers/module/moduleContext.js.map +1 -0
  80. package/lib/commonjs/domain/groupChannelMutedMembers/types.js +6 -0
  81. package/lib/commonjs/domain/groupChannelMutedMembers/types.js.map +1 -0
  82. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js +44 -0
  83. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js.map +1 -0
  84. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +51 -0
  85. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -0
  86. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js +34 -0
  87. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js.map +1 -0
  88. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js +38 -0
  89. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js.map +1 -0
  90. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js +34 -0
  91. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js.map +1 -0
  92. package/lib/commonjs/domain/groupChannelOperators/index.js +70 -0
  93. package/lib/commonjs/domain/groupChannelOperators/index.js.map +1 -0
  94. package/lib/commonjs/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js +45 -0
  95. package/lib/commonjs/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js.map +1 -0
  96. package/lib/commonjs/domain/groupChannelOperators/module/moduleContext.js +45 -0
  97. package/lib/commonjs/domain/groupChannelOperators/module/moduleContext.js.map +1 -0
  98. package/lib/commonjs/domain/groupChannelOperators/types.js +6 -0
  99. package/lib/commonjs/domain/groupChannelOperators/types.js.map +1 -0
  100. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -8
  101. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  102. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -0
  103. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  104. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
  105. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
  106. package/lib/commonjs/domain/userList/component/UserListStatusError.js +2 -2
  107. package/lib/commonjs/domain/userList/component/UserListStatusError.js.map +1 -1
  108. package/lib/commonjs/domain/userList/types.js.map +1 -1
  109. package/lib/commonjs/fragments/createGroupChannelBannedUsersFragment.js +101 -0
  110. package/lib/commonjs/fragments/createGroupChannelBannedUsersFragment.js.map +1 -0
  111. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +9 -25
  112. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  113. package/lib/commonjs/fragments/createGroupChannelFragment.js +11 -4
  114. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  115. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +21 -37
  116. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
  117. package/lib/commonjs/fragments/createGroupChannelListFragment.js +3 -11
  118. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  119. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +95 -51
  120. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
  121. package/lib/commonjs/fragments/createGroupChannelModerationFragment.js +68 -0
  122. package/lib/commonjs/fragments/createGroupChannelModerationFragment.js.map +1 -0
  123. package/lib/commonjs/fragments/createGroupChannelMutedMembersFragment.js +116 -0
  124. package/lib/commonjs/fragments/createGroupChannelMutedMembersFragment.js.map +1 -0
  125. package/lib/commonjs/fragments/createGroupChannelOperatorsFragment.js +129 -0
  126. package/lib/commonjs/fragments/createGroupChannelOperatorsFragment.js.map +1 -0
  127. package/lib/commonjs/fragments/createGroupChannelRegisterOperatorFragment.js +114 -0
  128. package/lib/commonjs/fragments/createGroupChannelRegisterOperatorFragment.js.map +1 -0
  129. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +2 -0
  130. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  131. package/lib/commonjs/hooks/useConnection.js +4 -0
  132. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  133. package/lib/commonjs/hooks/useContext.js +17 -7
  134. package/lib/commonjs/hooks/useContext.js.map +1 -1
  135. package/lib/commonjs/index.js +77 -9
  136. package/lib/commonjs/index.js.map +1 -1
  137. package/lib/commonjs/localization/StringSet.type.js +60 -11
  138. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  139. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  140. package/lib/commonjs/version.js +1 -1
  141. package/lib/commonjs/version.js.map +1 -1
  142. package/lib/module/components/ChannelCover.js +22 -2
  143. package/lib/module/components/ChannelCover.js.map +1 -1
  144. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +9 -3
  145. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  146. package/lib/module/components/MessageRenderer/index.js +1 -1
  147. package/lib/module/components/MessageRenderer/index.js.map +1 -1
  148. package/lib/module/components/TypedPlaceholder.js +2 -2
  149. package/lib/module/components/TypedPlaceholder.js.map +1 -1
  150. package/lib/module/components/UserActionBar.js +8 -5
  151. package/lib/module/components/UserActionBar.js.map +1 -1
  152. package/lib/module/containers/GroupChannelPreviewContainer.js +5 -0
  153. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  154. package/lib/module/containers/SendbirdUIKitContainer.js +11 -5
  155. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  156. package/lib/module/contexts/{Localization.js → LocalizationCtx.js} +1 -1
  157. package/lib/module/contexts/LocalizationCtx.js.map +1 -0
  158. package/lib/module/contexts/{PlatformService.js → PlatformServiceCtx.js} +1 -1
  159. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -0
  160. package/lib/module/contexts/{SendbirdChat.js → SendbirdChatCtx.js} +5 -3
  161. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -0
  162. package/lib/module/contexts/UserProfileCtx.js +94 -0
  163. package/lib/module/contexts/UserProfileCtx.js.map +1 -0
  164. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js +3 -1
  165. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  166. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +4 -2
  167. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  168. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +16 -11
  169. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  170. package/lib/module/domain/groupChannel/types.js.map +1 -1
  171. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.js +25 -0
  172. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.js.map +1 -0
  173. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +40 -0
  174. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -0
  175. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js +21 -0
  176. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js.map +1 -0
  177. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js +25 -0
  178. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js.map +1 -0
  179. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js +21 -0
  180. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js.map +1 -0
  181. package/lib/module/domain/groupChannelBannedUsers/index.js +7 -0
  182. package/lib/module/domain/groupChannelBannedUsers/index.js.map +1 -0
  183. package/lib/module/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js +30 -0
  184. package/lib/module/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js.map +1 -0
  185. package/lib/module/domain/groupChannelBannedUsers/module/moduleContext.js +25 -0
  186. package/lib/module/domain/groupChannelBannedUsers/module/moduleContext.js.map +1 -0
  187. package/lib/module/domain/groupChannelBannedUsers/types.js +2 -0
  188. package/lib/module/domain/groupChannelBannedUsers/types.js.map +1 -0
  189. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +34 -33
  190. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  191. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  192. package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationHeader.js +25 -0
  193. package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationHeader.js.map +1 -0
  194. package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationMenu.js +87 -0
  195. package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationMenu.js.map +1 -0
  196. package/lib/module/domain/groupChannelModeration/index.js +5 -0
  197. package/lib/module/domain/groupChannelModeration/index.js.map +1 -0
  198. package/lib/module/domain/groupChannelModeration/module/createGroupChannelModerationModule.js +21 -0
  199. package/lib/module/domain/groupChannelModeration/module/createGroupChannelModerationModule.js.map +1 -0
  200. package/lib/module/domain/groupChannelModeration/module/moduleContext.js +26 -0
  201. package/lib/module/domain/groupChannelModeration/module/moduleContext.js.map +1 -0
  202. package/lib/module/domain/groupChannelModeration/types.js +2 -0
  203. package/lib/module/domain/groupChannelModeration/types.js.map +1 -0
  204. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js +25 -0
  205. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js.map +1 -0
  206. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +38 -0
  207. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -0
  208. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js +21 -0
  209. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js.map +1 -0
  210. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js +25 -0
  211. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js.map +1 -0
  212. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js +21 -0
  213. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js.map +1 -0
  214. package/lib/module/domain/groupChannelMutedMembers/index.js +8 -0
  215. package/lib/module/domain/groupChannelMutedMembers/index.js.map +1 -0
  216. package/lib/module/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js +30 -0
  217. package/lib/module/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js.map +1 -0
  218. package/lib/module/domain/groupChannelMutedMembers/module/moduleContext.js +25 -0
  219. package/lib/module/domain/groupChannelMutedMembers/module/moduleContext.js.map +1 -0
  220. package/lib/module/domain/groupChannelMutedMembers/types.js +2 -0
  221. package/lib/module/domain/groupChannelMutedMembers/types.js.map +1 -0
  222. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js +30 -0
  223. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js.map +1 -0
  224. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +38 -0
  225. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -0
  226. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js +21 -0
  227. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js.map +1 -0
  228. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js +25 -0
  229. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js.map +1 -0
  230. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js +21 -0
  231. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js.map +1 -0
  232. package/lib/module/domain/groupChannelOperators/index.js +8 -0
  233. package/lib/module/domain/groupChannelOperators/index.js.map +1 -0
  234. package/lib/module/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js +30 -0
  235. package/lib/module/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js.map +1 -0
  236. package/lib/module/domain/groupChannelOperators/module/moduleContext.js +25 -0
  237. package/lib/module/domain/groupChannelOperators/module/moduleContext.js.map +1 -0
  238. package/lib/module/domain/groupChannelOperators/types.js +2 -0
  239. package/lib/module/domain/groupChannelOperators/types.js.map +1 -0
  240. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +2 -8
  241. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  242. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -0
  243. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  244. package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
  245. package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
  246. package/lib/module/domain/userList/component/UserListStatusError.js +2 -2
  247. package/lib/module/domain/userList/component/UserListStatusError.js.map +1 -1
  248. package/lib/module/domain/userList/types.js.map +1 -1
  249. package/lib/module/fragments/createGroupChannelBannedUsersFragment.js +84 -0
  250. package/lib/module/fragments/createGroupChannelBannedUsersFragment.js.map +1 -0
  251. package/lib/module/fragments/createGroupChannelCreateFragment.js +10 -26
  252. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  253. package/lib/module/fragments/createGroupChannelFragment.js +11 -4
  254. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  255. package/lib/module/fragments/createGroupChannelInviteFragment.js +22 -37
  256. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
  257. package/lib/module/fragments/createGroupChannelListFragment.js +4 -11
  258. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  259. package/lib/module/fragments/createGroupChannelMembersFragment.js +99 -56
  260. package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
  261. package/lib/module/fragments/createGroupChannelModerationFragment.js +53 -0
  262. package/lib/module/fragments/createGroupChannelModerationFragment.js.map +1 -0
  263. package/lib/module/fragments/createGroupChannelMutedMembersFragment.js +98 -0
  264. package/lib/module/fragments/createGroupChannelMutedMembersFragment.js.map +1 -0
  265. package/lib/module/fragments/createGroupChannelOperatorsFragment.js +111 -0
  266. package/lib/module/fragments/createGroupChannelOperatorsFragment.js.map +1 -0
  267. package/lib/module/fragments/createGroupChannelRegisterOperatorFragment.js +94 -0
  268. package/lib/module/fragments/createGroupChannelRegisterOperatorFragment.js.map +1 -0
  269. package/lib/module/fragments/createGroupChannelSettingsFragment.js +2 -0
  270. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  271. package/lib/module/hooks/useConnection.js +4 -0
  272. package/lib/module/hooks/useConnection.js.map +1 -1
  273. package/lib/module/hooks/useContext.js +9 -3
  274. package/lib/module/hooks/useContext.js.map +1 -1
  275. package/lib/module/index.js +10 -4
  276. package/lib/module/index.js.map +1 -1
  277. package/lib/module/localization/StringSet.type.js +60 -11
  278. package/lib/module/localization/StringSet.type.js.map +1 -1
  279. package/lib/module/platform/createFileService.native.js.map +1 -1
  280. package/lib/module/version.js +1 -1
  281. package/lib/module/version.js.map +1 -1
  282. package/lib/typescript/src/components/ChannelCover.d.ts +1 -1
  283. package/lib/typescript/src/components/TypedPlaceholder.d.ts +1 -1
  284. package/lib/typescript/src/components/UserActionBar.d.ts +4 -2
  285. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +9 -7
  286. package/lib/typescript/src/contexts/{Localization.d.ts → LocalizationCtx.d.ts} +0 -0
  287. package/lib/typescript/src/contexts/{PlatformService.d.ts → PlatformServiceCtx.d.ts} +0 -0
  288. package/lib/typescript/src/contexts/{SendbirdChat.d.ts → SendbirdChatCtx.d.ts} +8 -4
  289. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +15 -0
  290. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +2 -1
  291. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +3 -1
  292. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +1 -1
  293. package/lib/typescript/src/domain/groupChannel/types.d.ts +1 -1
  294. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +3 -0
  295. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +3 -0
  296. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -0
  297. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.d.ts +3 -0
  298. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -0
  299. package/lib/typescript/src/domain/groupChannelBannedUsers/index.d.ts +6 -0
  300. package/lib/typescript/src/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.d.ts +3 -0
  301. package/lib/typescript/src/domain/groupChannelBannedUsers/module/moduleContext.d.ts +3 -0
  302. package/lib/typescript/src/domain/groupChannelBannedUsers/types.d.ts +47 -0
  303. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +1 -1
  304. package/lib/typescript/src/domain/groupChannelList/types.d.ts +3 -9
  305. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +3 -0
  306. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +3 -0
  307. package/lib/typescript/src/domain/groupChannelModeration/index.d.ts +4 -0
  308. package/lib/typescript/src/domain/groupChannelModeration/module/createGroupChannelModerationModule.d.ts +3 -0
  309. package/lib/typescript/src/domain/groupChannelModeration/module/moduleContext.d.ts +3 -0
  310. package/lib/typescript/src/domain/groupChannelModeration/types.d.ts +43 -0
  311. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +3 -0
  312. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +3 -0
  313. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -0
  314. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.d.ts +3 -0
  315. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -0
  316. package/lib/typescript/src/domain/groupChannelMutedMembers/index.d.ts +7 -0
  317. package/lib/typescript/src/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.d.ts +3 -0
  318. package/lib/typescript/src/domain/groupChannelMutedMembers/module/moduleContext.d.ts +3 -0
  319. package/lib/typescript/src/domain/groupChannelMutedMembers/types.d.ts +47 -0
  320. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +3 -0
  321. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +3 -0
  322. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -0
  323. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.d.ts +3 -0
  324. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -0
  325. package/lib/typescript/src/domain/groupChannelOperators/index.d.ts +7 -0
  326. package/lib/typescript/src/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.d.ts +3 -0
  327. package/lib/typescript/src/domain/groupChannelOperators/module/moduleContext.d.ts +3 -0
  328. package/lib/typescript/src/domain/groupChannelOperators/types.d.ts +49 -0
  329. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +1 -1
  330. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -1
  331. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +2 -0
  332. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +18 -12
  333. package/lib/typescript/src/domain/userList/component/UserListStatusError.d.ts +2 -2
  334. package/lib/typescript/src/domain/userList/types.d.ts +4 -3
  335. package/lib/typescript/src/fragments/createGroupChannelBannedUsersFragment.d.ts +3 -0
  336. package/lib/typescript/src/fragments/createGroupChannelCreateFragment.d.ts +2 -1
  337. package/lib/typescript/src/fragments/createGroupChannelInviteFragment.d.ts +2 -1
  338. package/lib/typescript/src/fragments/createGroupChannelModerationFragment.d.ts +3 -0
  339. package/lib/typescript/src/fragments/createGroupChannelMutedMembersFragment.d.ts +3 -0
  340. package/lib/typescript/src/fragments/createGroupChannelOperatorsFragment.d.ts +3 -0
  341. package/lib/typescript/src/fragments/createGroupChannelRegisterOperatorFragment.d.ts +5 -0
  342. package/lib/typescript/src/hooks/useContext.d.ts +3 -1
  343. package/lib/typescript/src/index.d.ts +10 -4
  344. package/lib/typescript/src/localization/StringSet.type.d.ts +47 -7
  345. package/lib/typescript/src/platform/createFileService.native.d.ts +1 -1
  346. package/lib/typescript/src/version.d.ts +1 -1
  347. package/package.json +10 -10
  348. package/src/components/ChannelCover.tsx +23 -3
  349. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +9 -2
  350. package/src/components/MessageRenderer/index.tsx +1 -1
  351. package/src/components/TypedPlaceholder.tsx +4 -4
  352. package/src/components/UserActionBar.tsx +10 -4
  353. package/src/containers/GroupChannelPreviewContainer.tsx +5 -0
  354. package/src/containers/SendbirdUIKitContainer.tsx +29 -10
  355. package/src/contexts/{Localization.tsx → LocalizationCtx.tsx} +0 -0
  356. package/src/contexts/{PlatformService.tsx → PlatformServiceCtx.tsx} +0 -0
  357. package/src/contexts/{SendbirdChat.tsx → SendbirdChatCtx.tsx} +10 -4
  358. package/src/contexts/UserProfileCtx.tsx +126 -0
  359. package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +3 -1
  360. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +17 -3
  361. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +11 -8
  362. package/src/domain/groupChannel/types.ts +1 -1
  363. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.tsx +14 -0
  364. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.tsx +32 -0
  365. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.tsx +18 -0
  366. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.tsx +19 -0
  367. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.tsx +18 -0
  368. package/src/domain/groupChannelBannedUsers/index.ts +6 -0
  369. package/src/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.tsx +21 -0
  370. package/src/domain/groupChannelBannedUsers/module/moduleContext.tsx +30 -0
  371. package/src/domain/groupChannelBannedUsers/types.ts +50 -0
  372. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +37 -43
  373. package/src/domain/groupChannelList/types.ts +3 -9
  374. package/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.tsx +14 -0
  375. package/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.tsx +84 -0
  376. package/src/domain/groupChannelModeration/index.ts +4 -0
  377. package/src/domain/groupChannelModeration/module/createGroupChannelModerationModule.tsx +15 -0
  378. package/src/domain/groupChannelModeration/module/moduleContext.tsx +33 -0
  379. package/src/domain/groupChannelModeration/types.ts +48 -0
  380. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.tsx +14 -0
  381. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.tsx +30 -0
  382. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.tsx +18 -0
  383. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.tsx +19 -0
  384. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.tsx +18 -0
  385. package/src/domain/groupChannelMutedMembers/index.ts +7 -0
  386. package/src/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.tsx +21 -0
  387. package/src/domain/groupChannelMutedMembers/module/moduleContext.tsx +30 -0
  388. package/src/domain/groupChannelMutedMembers/types.ts +50 -0
  389. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.tsx +25 -0
  390. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.tsx +29 -0
  391. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.tsx +18 -0
  392. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.tsx +19 -0
  393. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.tsx +18 -0
  394. package/src/domain/groupChannelOperators/index.ts +7 -0
  395. package/src/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.tsx +21 -0
  396. package/src/domain/groupChannelOperators/module/moduleContext.tsx +30 -0
  397. package/src/domain/groupChannelOperators/types.ts +52 -0
  398. package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +2 -7
  399. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +9 -0
  400. package/src/domain/groupChannelSettings/types.ts +2 -0
  401. package/src/domain/groupChannelUserList/types.ts +27 -12
  402. package/src/domain/userList/component/UserListStatusError.tsx +2 -2
  403. package/src/domain/userList/types.ts +4 -1
  404. package/src/fragments/createGroupChannelBannedUsersFragment.tsx +80 -0
  405. package/src/fragments/createGroupChannelCreateFragment.tsx +13 -33
  406. package/src/fragments/createGroupChannelFragment.tsx +12 -5
  407. package/src/fragments/createGroupChannelInviteFragment.tsx +28 -50
  408. package/src/fragments/createGroupChannelListFragment.tsx +4 -10
  409. package/src/fragments/createGroupChannelMembersFragment.tsx +110 -67
  410. package/src/fragments/createGroupChannelModerationFragment.tsx +57 -0
  411. package/src/fragments/createGroupChannelMutedMembersFragment.tsx +93 -0
  412. package/src/fragments/createGroupChannelOperatorsFragment.tsx +101 -0
  413. package/src/fragments/createGroupChannelRegisterOperatorFragment.tsx +94 -0
  414. package/src/fragments/createGroupChannelSettingsFragment.tsx +9 -1
  415. package/src/hooks/useConnection.ts +2 -0
  416. package/src/hooks/useContext.ts +10 -3
  417. package/src/index.ts +10 -4
  418. package/src/localization/StringSet.type.ts +99 -14
  419. package/src/platform/createFileService.native.ts +1 -1
  420. package/src/version.ts +1 -1
  421. package/lib/commonjs/contexts/Localization.js.map +0 -1
  422. package/lib/commonjs/contexts/PlatformService.js.map +0 -1
  423. package/lib/commonjs/contexts/SendbirdChat.js.map +0 -1
  424. package/lib/module/contexts/Localization.js.map +0 -1
  425. package/lib/module/contexts/PlatformService.js.map +0 -1
  426. package/lib/module/contexts/SendbirdChat.js.map +0 -1
package/README.md CHANGED
@@ -142,7 +142,7 @@ You can use `createNativeClipboardService`, `createNativeNotificationService` an
142
142
  npm install react-native-permissions \
143
143
  react-native-image-picker \
144
144
  react-native-document-picker \
145
- @react-native-community/cameraroll \
145
+ @react-native-camera-roll/camera-roll \
146
146
  react-native-file-access \
147
147
  @react-native-clipboard/clipboard \
148
148
  @react-native-firebase/app \
@@ -153,7 +153,7 @@ npx pod-install
153
153
 
154
154
  ```ts
155
155
  import Clipboard from '@react-native-clipboard/clipboard';
156
- import CameraRoll from '@react-native-community/cameraroll';
156
+ import { CameraRoll } from '@react-native-camera-roll/camera-roll';
157
157
  import RNFBMessaging from '@react-native-firebase/messaging';
158
158
  import * as DocumentPicker from 'react-native-document-picker';
159
159
  import * as FileAccess from 'react-native-file-access';
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
+ var _reactNative = require("react-native");
11
+
10
12
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
13
 
12
14
  var _uikitUtils = require("@sendbird/uikit-utils");
@@ -24,12 +26,31 @@ const ChannelCover = _ref => {
24
26
  } = _ref;
25
27
  const {
26
28
  currentUser
27
- } = (0, _useContext.useSendbirdChat)(); // channel cover
29
+ } = (0, _useContext.useSendbirdChat)();
30
+ const {
31
+ colors
32
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)(); // custom channel cover
28
33
 
29
34
  if (!(0, _uikitUtils.isDefaultCoverImage)(channel.coverUrl) || !currentUser) {
30
35
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, _extends({
31
36
  uri: channel.coverUrl
32
37
  }, avatarProps));
38
+ } // broadcast channel cover
39
+
40
+
41
+ if (channel.isBroadcast) {
42
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
43
+ style: avatarProps.containerStyle
44
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
45
+ icon: 'broadcast',
46
+ size: avatarProps.size * (4 / 7),
47
+ color: colors.onBackgroundReverse01,
48
+ containerStyle: {
49
+ backgroundColor: colors.secondary,
50
+ borderRadius: avatarProps.size * 0.5,
51
+ padding: avatarProps.size * (3 / 7) * 0.5
52
+ }
53
+ }));
33
54
  } // no members, use anonymous profile
34
55
 
35
56
 
@@ -1 +1 @@
1
- {"version":3,"names":["ChannelCover","channel","avatarProps","currentUser","useSendbirdChat","isDefaultCoverImage","coverUrl","memberCount","otherUserProfile","members","filter","m","userId","profileUrl","getMembersExcludeMe","map"],"sources":["ChannelCover.tsx"],"sourcesContent":["import React from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport { Avatar } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdGroupChannel, getMembersExcludeMe, isDefaultCoverImage } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n size?: number;\n containerStyle?: StyleProp<ViewStyle>;\n};\n\nconst ChannelCover = ({ channel, ...avatarProps }: Props) => {\n const { currentUser } = useSendbirdChat();\n\n // channel cover\n if (!isDefaultCoverImage(channel.coverUrl) || !currentUser) {\n return <Avatar uri={channel.coverUrl} {...avatarProps} />;\n }\n\n // no members, use anonymous profile\n if (channel.memberCount <= 1) {\n return <Avatar {...avatarProps} />;\n }\n\n // 1:1, use member profile\n if (channel.memberCount === 2) {\n const otherUserProfile = channel.members.filter((m) => m.userId !== currentUser.userId)?.[0]?.profileUrl;\n return <Avatar uri={otherUserProfile} {...avatarProps} />;\n }\n\n // group, use members profile\n return (\n <Avatar.Group {...avatarProps}>\n {getMembersExcludeMe(channel, currentUser?.userId).map((m) => (\n <Avatar key={m.userId} uri={m.profileUrl} />\n ))}\n </Avatar.Group>\n );\n};\n\nexport default ChannelCover;\n"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AAEA;;;;;;AAQA,MAAMA,YAAY,GAAG,QAAwC;EAAA,IAAvC;IAAEC,OAAF;IAAW,GAAGC;EAAd,CAAuC;EAC3D,MAAM;IAAEC;EAAF,IAAkB,IAAAC,2BAAA,GAAxB,CAD2D,CAG3D;;EACA,IAAI,CAAC,IAAAC,+BAAA,EAAoBJ,OAAO,CAACK,QAA5B,CAAD,IAA0C,CAACH,WAA/C,EAA4D;IAC1D,oBAAO,6BAAC,kCAAD;MAAQ,GAAG,EAAEF,OAAO,CAACK;IAArB,GAAmCJ,WAAnC,EAAP;EACD,CAN0D,CAQ3D;;;EACA,IAAID,OAAO,CAACM,WAAR,IAAuB,CAA3B,EAA8B;IAC5B,oBAAO,6BAAC,kCAAD,EAAYL,WAAZ,CAAP;EACD,CAX0D,CAa3D;;;EACA,IAAID,OAAO,CAACM,WAAR,KAAwB,CAA5B,EAA+B;IAAA;;IAC7B,MAAMC,gBAAgB,4BAAGP,OAAO,CAACQ,OAAR,CAAgBC,MAAhB,CAAwBC,CAAD,IAAOA,CAAC,CAACC,MAAF,KAAaT,WAAW,CAACS,MAAvD,CAAH,oFAAG,sBAAiE,CAAjE,CAAH,2DAAG,uBAAqEC,UAA9F;IACA,oBAAO,6BAAC,kCAAD;MAAQ,GAAG,EAAEL;IAAb,GAAmCN,WAAnC,EAAP;EACD,CAjB0D,CAmB3D;;;EACA,oBACE,6BAAC,kCAAD,CAAQ,KAAR,EAAkBA,WAAlB,EACG,IAAAY,+BAAA,EAAoBb,OAApB,EAA6BE,WAA7B,aAA6BA,WAA7B,uBAA6BA,WAAW,CAAES,MAA1C,EAAkDG,GAAlD,CAAuDJ,CAAD,iBACrD,6BAAC,kCAAD;IAAQ,GAAG,EAAEA,CAAC,CAACC,MAAf;IAAuB,GAAG,EAAED,CAAC,CAACE;EAA9B,EADD,CADH,CADF;AAOD,CA3BD;;eA6Beb,Y"}
1
+ {"version":3,"names":["ChannelCover","channel","avatarProps","currentUser","useSendbirdChat","colors","useUIKitTheme","isDefaultCoverImage","coverUrl","isBroadcast","containerStyle","size","onBackgroundReverse01","backgroundColor","secondary","borderRadius","padding","memberCount","otherUserProfile","members","filter","m","userId","profileUrl","getMembersExcludeMe","map"],"sources":["ChannelCover.tsx"],"sourcesContent":["import React from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\n\nimport { Avatar, Icon, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdGroupChannel, getMembersExcludeMe, isDefaultCoverImage } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n size: number;\n containerStyle?: StyleProp<ViewStyle>;\n};\n\nconst ChannelCover = ({ channel, ...avatarProps }: Props) => {\n const { currentUser } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n\n // custom channel cover\n if (!isDefaultCoverImage(channel.coverUrl) || !currentUser) {\n return <Avatar uri={channel.coverUrl} {...avatarProps} />;\n }\n\n // broadcast channel cover\n if (channel.isBroadcast) {\n return (\n <View style={avatarProps.containerStyle}>\n <Icon\n icon={'broadcast'}\n size={avatarProps.size * (4 / 7)}\n color={colors.onBackgroundReverse01}\n containerStyle={{\n backgroundColor: colors.secondary,\n borderRadius: avatarProps.size * 0.5,\n padding: avatarProps.size * (3 / 7) * 0.5,\n }}\n />\n </View>\n );\n }\n\n // no members, use anonymous profile\n if (channel.memberCount <= 1) {\n return <Avatar {...avatarProps} />;\n }\n\n // 1:1, use member profile\n if (channel.memberCount === 2) {\n const otherUserProfile = channel.members.filter((m) => m.userId !== currentUser.userId)?.[0]?.profileUrl;\n return <Avatar uri={otherUserProfile} {...avatarProps} />;\n }\n\n // group, use members profile\n return (\n <Avatar.Group {...avatarProps}>\n {getMembersExcludeMe(channel, currentUser?.userId).map((m) => (\n <Avatar key={m.userId} uri={m.profileUrl} />\n ))}\n </Avatar.Group>\n );\n};\n\nexport default ChannelCover;\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AAEA;;;;;;AAQA,MAAMA,YAAY,GAAG,QAAwC;EAAA,IAAvC;IAAEC,OAAF;IAAW,GAAGC;EAAd,CAAuC;EAC3D,MAAM;IAAEC;EAAF,IAAkB,IAAAC,2BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB,CAF2D,CAI3D;;EACA,IAAI,CAAC,IAAAC,+BAAA,EAAoBN,OAAO,CAACO,QAA5B,CAAD,IAA0C,CAACL,WAA/C,EAA4D;IAC1D,oBAAO,6BAAC,kCAAD;MAAQ,GAAG,EAAEF,OAAO,CAACO;IAArB,GAAmCN,WAAnC,EAAP;EACD,CAP0D,CAS3D;;;EACA,IAAID,OAAO,CAACQ,WAAZ,EAAyB;IACvB,oBACE,6BAAC,iBAAD;MAAM,KAAK,EAAEP,WAAW,CAACQ;IAAzB,gBACE,6BAAC,gCAAD;MACE,IAAI,EAAE,WADR;MAEE,IAAI,EAAER,WAAW,CAACS,IAAZ,IAAoB,IAAI,CAAxB,CAFR;MAGE,KAAK,EAAEN,MAAM,CAACO,qBAHhB;MAIE,cAAc,EAAE;QACdC,eAAe,EAAER,MAAM,CAACS,SADV;QAEdC,YAAY,EAAEb,WAAW,CAACS,IAAZ,GAAmB,GAFnB;QAGdK,OAAO,EAAEd,WAAW,CAACS,IAAZ,IAAoB,IAAI,CAAxB,IAA6B;MAHxB;IAJlB,EADF,CADF;EAcD,CAzB0D,CA2B3D;;;EACA,IAAIV,OAAO,CAACgB,WAAR,IAAuB,CAA3B,EAA8B;IAC5B,oBAAO,6BAAC,kCAAD,EAAYf,WAAZ,CAAP;EACD,CA9B0D,CAgC3D;;;EACA,IAAID,OAAO,CAACgB,WAAR,KAAwB,CAA5B,EAA+B;IAAA;;IAC7B,MAAMC,gBAAgB,4BAAGjB,OAAO,CAACkB,OAAR,CAAgBC,MAAhB,CAAwBC,CAAD,IAAOA,CAAC,CAACC,MAAF,KAAanB,WAAW,CAACmB,MAAvD,CAAH,oFAAG,sBAAiE,CAAjE,CAAH,2DAAG,uBAAqEC,UAA9F;IACA,oBAAO,6BAAC,kCAAD;MAAQ,GAAG,EAAEL;IAAb,GAAmChB,WAAnC,EAAP;EACD,CApC0D,CAsC3D;;;EACA,oBACE,6BAAC,kCAAD,CAAQ,KAAR,EAAkBA,WAAlB,EACG,IAAAsB,+BAAA,EAAoBvB,OAApB,EAA6BE,WAA7B,aAA6BA,WAA7B,uBAA6BA,WAAW,CAAEmB,MAA1C,EAAkDG,GAAlD,CAAuDJ,CAAD,iBACrD,6BAAC,kCAAD;IAAQ,GAAG,EAAEA,CAAC,CAACC,MAAf;IAAuB,GAAG,EAAED,CAAC,CAACE;EAA9B,EADD,CADH,CADF;AAOD,CA9CD;;eAgDevB,Y"}
@@ -11,6 +11,8 @@ var _reactNative = require("react-native");
11
11
 
12
12
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
13
 
14
+ var _useContext = require("../../hooks/useContext");
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
16
18
  const MessageIncomingAvatar = _ref => {
@@ -20,15 +22,20 @@ const MessageIncomingAvatar = _ref => {
20
22
  message,
21
23
  grouping
22
24
  } = _ref;
25
+ const {
26
+ show
27
+ } = (0, _useContext.useUserProfile)();
23
28
  if (grouping) return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
24
29
  style: styles.avatar
25
30
  });
26
31
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
27
32
  style: styles.avatar
28
- }, (message.isFileMessage() || message.isUserMessage()) && /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
33
+ }, (message.isFileMessage() || message.isUserMessage()) && /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
34
+ onPress: () => show(message.sender)
35
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
29
36
  size: 26,
30
37
  uri: (_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.profileUrl
31
- }));
38
+ })));
32
39
  };
33
40
 
34
41
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
@@ -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 = {\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
+ {"version":3,"names":["MessageIncomingAvatar","message","grouping","show","useUserProfile","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","createStyleSheet","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useUserProfile } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingAvatar = ({ message, grouping }: Props) => {\n const { show } = useUserProfile();\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Pressable onPress={() => show(message.sender)}>\n <Avatar size={26} uri={message.sender?.profileUrl} />\n </Pressable>\n )}\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;;AAGA;;;;AAMA,MAAMA,qBAAqB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAC9D,MAAM;IAAEC;EAAF,IAAW,IAAAC,0BAAA,GAAjB;EACA,IAAIF,QAAJ,EAAc,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEG,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACL,OAAO,CAACM,aAAR,MAA2BN,OAAO,CAACO,aAAR,EAA5B,kBACC,6BAAC,sBAAD;IAAW,OAAO,EAAE,MAAML,IAAI,CAACF,OAAO,CAACQ,MAAT;EAA9B,gBACE,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAER,OAAO,CAACQ,MAAV,oDAAE,gBAAgBC;EAAvC,EADF,CAFJ,CADF;AASD,CAZD;;AAcA,MAAML,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,MAAM,EAAE;IACNM,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAjB,CAAf;eAOeb,qB"}
@@ -183,7 +183,7 @@ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
183
183
  },
184
184
  outgoingContainer: {
185
185
  flexDirection: 'row',
186
- alignItems: 'center',
186
+ alignItems: 'flex-end',
187
187
  justifyContent: 'center'
188
188
  }
189
189
  });
@@ -1 +1 @@
1
- {"version":3,"names":["MessageRenderer","currentUserId","channel","message","onPress","onLongPress","rest","variant","isMyMessage","isOutgoing","isIncoming","variantContainerStyle","incoming","styles","chatIncoming","outgoing","chatOutgoing","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","enableMessageGrouping","prevMessage","nextMessage","messageComponent","useIIFE","pressableProps","style","msgContainer","disabled","delayLongPress","DEFAULT_LONG_PRESS_DELAY","messageProps","isUserMessage","pressed","isFileMessage","isAdminMessage","conditionChaining","chatGroup","chatNonGroup","chatLastMessage","outgoingContainer","timeOutgoing","bubbleContainer","bubbleWrapper","timeIncoming","createStyleSheet","flexDirection","justifyContent","alignItems","marginLeft","marginRight","marginBottom","maxWidth","flexShrink","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { calcMessageGrouping, conditionChaining, isMyMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport { DEFAULT_LONG_PRESS_DELAY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport AdminMessage from './AdminMessage';\nimport FileMessage from './FileMessage';\nimport MessageContainer from './MessageContainer';\nimport MessageDateSeparator from './MessageDateSeparator';\nimport MessageIncomingAvatar from './MessageIncomingAvatar';\nimport MessageIncomingSenderName from './MessageIncomingSenderName';\nimport MessageOutgoingStatus from './MessageOutgoingStatus';\nimport MessageTime from './MessageTime';\nimport UnknownMessage from './UnknownMessage';\nimport UserMessage from './UserMessage';\n\ntype MessageStyleVariant = 'outgoing' | 'incoming';\nexport interface MessageRendererInterface<T = SendbirdMessage> {\n message: T;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n variant: MessageStyleVariant;\n groupWithPrev: boolean;\n groupWithNext: boolean;\n pressed: boolean;\n}\n\nconst MessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n currentUserId,\n channel,\n message,\n onPress,\n onLongPress,\n ...rest\n}) => {\n const variant: MessageStyleVariant = isMyMessage(message, currentUserId) ? 'outgoing' : 'incoming';\n const isOutgoing = variant === 'outgoing';\n const isIncoming = variant === 'incoming';\n const variantContainerStyle = { incoming: styles.chatIncoming, outgoing: styles.chatOutgoing }[variant];\n\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(rest.enableMessageGrouping),\n message,\n rest.prevMessage,\n rest.nextMessage,\n );\n\n const messageComponent = useIIFE(() => {\n const pressableProps = {\n style: styles.msgContainer,\n disabled: !onPress && !onLongPress,\n onPress,\n onLongPress,\n delayLongPress: DEFAULT_LONG_PRESS_DELAY,\n };\n const messageProps = { ...rest, variant, groupWithNext, groupWithPrev };\n\n if (message.isUserMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UserMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isFileMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <FileMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isAdminMessage()) {\n return <AdminMessage message={message} pressed={false} {...messageProps} />;\n }\n\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UnknownMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n });\n\n return (\n <MessageContainer>\n <MessageDateSeparator message={message} prevMessage={rest.prevMessage} />\n {message.isAdminMessage() && messageComponent}\n {!message.isAdminMessage() && (\n <View\n style={[\n variantContainerStyle,\n conditionChaining(\n [groupWithNext, Boolean(rest.nextMessage)],\n [styles.chatGroup, styles.chatNonGroup, styles.chatLastMessage],\n ),\n ]}\n >\n {isOutgoing && (\n <View style={styles.outgoingContainer}>\n <MessageOutgoingStatus channel={channel} message={message} />\n <MessageTime message={message} grouping={groupWithNext} style={styles.timeOutgoing} />\n </View>\n )}\n {isIncoming && <MessageIncomingAvatar message={message} grouping={groupWithNext} />}\n <View style={styles.bubbleContainer}>\n {isIncoming && <MessageIncomingSenderName message={message} grouping={groupWithPrev} />}\n <View style={styles.bubbleWrapper}>\n {messageComponent}\n {isIncoming && <MessageTime message={message} grouping={groupWithNext} style={styles.timeIncoming} />}\n </View>\n </View>\n </View>\n )}\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n chatIncoming: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n },\n chatOutgoing: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n timeIncoming: {\n marginLeft: 4,\n },\n timeOutgoing: {\n marginRight: 4,\n },\n chatGroup: {\n marginBottom: 2,\n },\n chatNonGroup: {\n marginBottom: 16,\n },\n chatLastMessage: {\n marginBottom: 16,\n },\n msgContainer: {\n maxWidth: 240,\n },\n bubbleContainer: {\n flexShrink: 1,\n },\n bubbleWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n outgoingContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default React.memo(MessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["MessageRenderer","currentUserId","channel","message","onPress","onLongPress","rest","variant","isMyMessage","isOutgoing","isIncoming","variantContainerStyle","incoming","styles","chatIncoming","outgoing","chatOutgoing","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","enableMessageGrouping","prevMessage","nextMessage","messageComponent","useIIFE","pressableProps","style","msgContainer","disabled","delayLongPress","DEFAULT_LONG_PRESS_DELAY","messageProps","isUserMessage","pressed","isFileMessage","isAdminMessage","conditionChaining","chatGroup","chatNonGroup","chatLastMessage","outgoingContainer","timeOutgoing","bubbleContainer","bubbleWrapper","timeIncoming","createStyleSheet","flexDirection","justifyContent","alignItems","marginLeft","marginRight","marginBottom","maxWidth","flexShrink","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { calcMessageGrouping, conditionChaining, isMyMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport { DEFAULT_LONG_PRESS_DELAY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport AdminMessage from './AdminMessage';\nimport FileMessage from './FileMessage';\nimport MessageContainer from './MessageContainer';\nimport MessageDateSeparator from './MessageDateSeparator';\nimport MessageIncomingAvatar from './MessageIncomingAvatar';\nimport MessageIncomingSenderName from './MessageIncomingSenderName';\nimport MessageOutgoingStatus from './MessageOutgoingStatus';\nimport MessageTime from './MessageTime';\nimport UnknownMessage from './UnknownMessage';\nimport UserMessage from './UserMessage';\n\ntype MessageStyleVariant = 'outgoing' | 'incoming';\nexport interface MessageRendererInterface<T = SendbirdMessage> {\n message: T;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n variant: MessageStyleVariant;\n groupWithPrev: boolean;\n groupWithNext: boolean;\n pressed: boolean;\n}\n\nconst MessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n currentUserId,\n channel,\n message,\n onPress,\n onLongPress,\n ...rest\n}) => {\n const variant: MessageStyleVariant = isMyMessage(message, currentUserId) ? 'outgoing' : 'incoming';\n const isOutgoing = variant === 'outgoing';\n const isIncoming = variant === 'incoming';\n const variantContainerStyle = { incoming: styles.chatIncoming, outgoing: styles.chatOutgoing }[variant];\n\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(rest.enableMessageGrouping),\n message,\n rest.prevMessage,\n rest.nextMessage,\n );\n\n const messageComponent = useIIFE(() => {\n const pressableProps = {\n style: styles.msgContainer,\n disabled: !onPress && !onLongPress,\n onPress,\n onLongPress,\n delayLongPress: DEFAULT_LONG_PRESS_DELAY,\n };\n const messageProps = { ...rest, variant, groupWithNext, groupWithPrev };\n\n if (message.isUserMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UserMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isFileMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <FileMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isAdminMessage()) {\n return <AdminMessage message={message} pressed={false} {...messageProps} />;\n }\n\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UnknownMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n });\n\n return (\n <MessageContainer>\n <MessageDateSeparator message={message} prevMessage={rest.prevMessage} />\n {message.isAdminMessage() && messageComponent}\n {!message.isAdminMessage() && (\n <View\n style={[\n variantContainerStyle,\n conditionChaining(\n [groupWithNext, Boolean(rest.nextMessage)],\n [styles.chatGroup, styles.chatNonGroup, styles.chatLastMessage],\n ),\n ]}\n >\n {isOutgoing && (\n <View style={styles.outgoingContainer}>\n <MessageOutgoingStatus channel={channel} message={message} />\n <MessageTime message={message} grouping={groupWithNext} style={styles.timeOutgoing} />\n </View>\n )}\n {isIncoming && <MessageIncomingAvatar message={message} grouping={groupWithNext} />}\n <View style={styles.bubbleContainer}>\n {isIncoming && <MessageIncomingSenderName message={message} grouping={groupWithPrev} />}\n <View style={styles.bubbleWrapper}>\n {messageComponent}\n {isIncoming && <MessageTime message={message} grouping={groupWithNext} style={styles.timeIncoming} />}\n </View>\n </View>\n </View>\n )}\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n chatIncoming: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n },\n chatOutgoing: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n timeIncoming: {\n marginLeft: 4,\n },\n timeOutgoing: {\n marginRight: 4,\n },\n chatGroup: {\n marginBottom: 2,\n },\n chatNonGroup: {\n marginBottom: 16,\n },\n chatLastMessage: {\n marginBottom: 16,\n },\n msgContainer: {\n maxWidth: 240,\n },\n bubbleContainer: {\n flexShrink: 1,\n },\n bubbleWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n outgoingContainer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n justifyContent: 'center',\n },\n});\n\nexport default React.memo(MessageRenderer);\n"],"mappings":"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"}
@@ -23,10 +23,10 @@ const TypedPlaceholder = _ref => {
23
23
  } = (0, _useContext.useLocalization)();
24
24
 
25
25
  switch (type) {
26
- case 'no-banned-members':
26
+ case 'no-banned-users':
27
27
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Placeholder, {
28
28
  icon: 'ban',
29
- message: STRINGS.PLACEHOLDER.NO_BANNED_MEMBERS
29
+ message: STRINGS.PLACEHOLDER.NO_BANNED_USERS
30
30
  });
31
31
 
32
32
  case 'no-channels':
@@ -1 +1 @@
1
- {"version":3,"names":["TypedPlaceholder","type","onPressRetry","STRINGS","useLocalization","PLACEHOLDER","NO_BANNED_MEMBERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_RESULTS_FOUND","NO_USERS","ERROR","MESSAGE","RETRY_LABEL"],"sources":["TypedPlaceholder.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Placeholder } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../hooks/useContext';\n\ntype Props = {\n type:\n | 'no-banned-members'\n | 'no-channels'\n | 'no-messages'\n | 'no-users'\n | 'no-muted-members'\n | 'no-results-found'\n | 'error-wrong'\n | 'loading';\n onPressRetry?: () => void;\n};\nconst TypedPlaceholder = ({ type, onPressRetry }: Props) => {\n const { STRINGS } = useLocalization();\n switch (type) {\n case 'no-banned-members':\n return <Placeholder icon={'ban'} message={STRINGS.PLACEHOLDER.NO_BANNED_MEMBERS} />;\n case 'no-channels':\n return <Placeholder icon={'chat'} message={STRINGS.PLACEHOLDER.NO_CHANNELS} />;\n case 'no-messages':\n return <Placeholder icon={'message'} message={STRINGS.PLACEHOLDER.NO_MESSAGES} />;\n case 'no-muted-members':\n return <Placeholder icon={'mute'} message={STRINGS.PLACEHOLDER.NO_MUTED_MEMBERS} />;\n case 'no-results-found':\n return <Placeholder icon={'search'} message={STRINGS.PLACEHOLDER.NO_RESULTS_FOUND} />;\n case 'no-users':\n return <Placeholder icon={'members'} message={STRINGS.PLACEHOLDER.NO_USERS} />;\n case 'error-wrong':\n return (\n <Placeholder\n icon={'error'}\n message={STRINGS.PLACEHOLDER.ERROR.MESSAGE}\n errorRetryLabel={STRINGS.PLACEHOLDER.ERROR.RETRY_LABEL}\n onPressRetry={onPressRetry}\n />\n );\n case 'loading':\n return <Placeholder loading icon={'spinner'} />;\n }\n};\n\nexport default TypedPlaceholder;\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;;;AAcA,MAAMA,gBAAgB,GAAG,QAAmC;EAAA,IAAlC;IAAEC,IAAF;IAAQC;EAAR,CAAkC;EAC1D,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;;EACA,QAAQH,IAAR;IACE,KAAK,mBAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,KAAnB;QAA0B,OAAO,EAAEE,OAAO,CAACE,WAAR,CAAoBC;MAAvD,EAAP;;IACF,KAAK,aAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,MAAnB;QAA2B,OAAO,EAAEH,OAAO,CAACE,WAAR,CAAoBE;MAAxD,EAAP;;IACF,KAAK,aAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,SAAnB;QAA8B,OAAO,EAAEJ,OAAO,CAACE,WAAR,CAAoBG;MAA3D,EAAP;;IACF,KAAK,kBAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,MAAnB;QAA2B,OAAO,EAAEL,OAAO,CAACE,WAAR,CAAoBI;MAAxD,EAAP;;IACF,KAAK,kBAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,QAAnB;QAA6B,OAAO,EAAEN,OAAO,CAACE,WAAR,CAAoBK;MAA1D,EAAP;;IACF,KAAK,UAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,SAAnB;QAA8B,OAAO,EAAEP,OAAO,CAACE,WAAR,CAAoBM;MAA3D,EAAP;;IACF,KAAK,aAAL;MACE,oBACE,6BAAC,uCAAD;QACE,IAAI,EAAE,OADR;QAEE,OAAO,EAAER,OAAO,CAACE,WAAR,CAAoBO,KAApB,CAA0BC,OAFrC;QAGE,eAAe,EAAEV,OAAO,CAACE,WAAR,CAAoBO,KAApB,CAA0BE,WAH7C;QAIE,YAAY,EAAEZ;MAJhB,EADF;;IAQF,KAAK,SAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,OAAO,MAApB;QAAqB,IAAI,EAAE;MAA3B,EAAP;EAvBJ;AAyBD,CA3BD;;eA6BeF,gB"}
1
+ {"version":3,"names":["TypedPlaceholder","type","onPressRetry","STRINGS","useLocalization","PLACEHOLDER","NO_BANNED_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_RESULTS_FOUND","NO_USERS","ERROR","MESSAGE","RETRY_LABEL"],"sources":["TypedPlaceholder.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Placeholder } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../hooks/useContext';\n\ntype Props = {\n type:\n | 'no-muted-members'\n | 'no-banned-users'\n | 'no-channels'\n | 'no-messages'\n | 'no-users'\n | 'no-results-found'\n | 'error-wrong'\n | 'loading';\n onPressRetry?: () => void;\n};\nconst TypedPlaceholder = ({ type, onPressRetry }: Props) => {\n const { STRINGS } = useLocalization();\n switch (type) {\n case 'no-banned-users':\n return <Placeholder icon={'ban'} message={STRINGS.PLACEHOLDER.NO_BANNED_USERS} />;\n case 'no-channels':\n return <Placeholder icon={'chat'} message={STRINGS.PLACEHOLDER.NO_CHANNELS} />;\n case 'no-messages':\n return <Placeholder icon={'message'} message={STRINGS.PLACEHOLDER.NO_MESSAGES} />;\n case 'no-muted-members':\n return <Placeholder icon={'mute'} message={STRINGS.PLACEHOLDER.NO_MUTED_MEMBERS} />;\n case 'no-results-found':\n return <Placeholder icon={'search'} message={STRINGS.PLACEHOLDER.NO_RESULTS_FOUND} />;\n case 'no-users':\n return <Placeholder icon={'members'} message={STRINGS.PLACEHOLDER.NO_USERS} />;\n case 'error-wrong':\n return (\n <Placeholder\n icon={'error'}\n message={STRINGS.PLACEHOLDER.ERROR.MESSAGE}\n errorRetryLabel={STRINGS.PLACEHOLDER.ERROR.RETRY_LABEL}\n onPressRetry={onPressRetry}\n />\n );\n case 'loading':\n return <Placeholder loading icon={'spinner'} />;\n }\n};\n\nexport default TypedPlaceholder;\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;;;AAcA,MAAMA,gBAAgB,GAAG,QAAmC;EAAA,IAAlC;IAAEC,IAAF;IAAQC;EAAR,CAAkC;EAC1D,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;;EACA,QAAQH,IAAR;IACE,KAAK,iBAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,KAAnB;QAA0B,OAAO,EAAEE,OAAO,CAACE,WAAR,CAAoBC;MAAvD,EAAP;;IACF,KAAK,aAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,MAAnB;QAA2B,OAAO,EAAEH,OAAO,CAACE,WAAR,CAAoBE;MAAxD,EAAP;;IACF,KAAK,aAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,SAAnB;QAA8B,OAAO,EAAEJ,OAAO,CAACE,WAAR,CAAoBG;MAA3D,EAAP;;IACF,KAAK,kBAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,MAAnB;QAA2B,OAAO,EAAEL,OAAO,CAACE,WAAR,CAAoBI;MAAxD,EAAP;;IACF,KAAK,kBAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,QAAnB;QAA6B,OAAO,EAAEN,OAAO,CAACE,WAAR,CAAoBK;MAA1D,EAAP;;IACF,KAAK,UAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,IAAI,EAAE,SAAnB;QAA8B,OAAO,EAAEP,OAAO,CAACE,WAAR,CAAoBM;MAA3D,EAAP;;IACF,KAAK,aAAL;MACE,oBACE,6BAAC,uCAAD;QACE,IAAI,EAAE,OADR;QAEE,OAAO,EAAER,OAAO,CAACE,WAAR,CAAoBO,KAApB,CAA0BC,OAFrC;QAGE,eAAe,EAAEV,OAAO,CAACE,WAAR,CAAoBO,KAApB,CAA0BE,WAH7C;QAIE,YAAY,EAAEZ;MAJhB,EADF;;IAQF,KAAK,SAAL;MACE,oBAAO,6BAAC,uCAAD;QAAa,OAAO,MAApB;QAAqB,IAAI,EAAE;MAA3B,EAAP;EAvBJ;AAyBD,CA3BD;;eA6BeF,gB"}
@@ -21,8 +21,9 @@ const UserActionBar = _ref => {
21
21
  uri,
22
22
  name,
23
23
  disabled,
24
+ label,
24
25
  onPressActionMenu,
25
- label
26
+ onPressAvatar
26
27
  } = _ref;
27
28
  const {
28
29
  colors
@@ -30,12 +31,14 @@ const UserActionBar = _ref => {
30
31
  const iconColor = (0, _uikitUtils.conditionChaining)([disabled], [colors.onBackground04, colors.onBackground01]);
31
32
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
32
33
  style: styles.container
34
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
35
+ onPress: onPressAvatar,
36
+ style: styles.avatar
33
37
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
34
38
  muted: muted,
35
39
  size: 36,
36
- uri: uri,
37
- containerStyle: styles.avatar
38
- }), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
40
+ uri: uri
41
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
39
42
  style: [styles.infoContainer, {
40
43
  borderBottomColor: colors.onBackground04
41
44
  }]
@@ -1 +1 @@
1
- {"version":3,"names":["UserActionBar","muted","uri","name","disabled","onPressActionMenu","label","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","createStyleSheet","flexDirection","alignItems","width","height","marginLeft","marginRight","flex","paddingRight","borderBottomWidth","padding"],"sources":["UserActionBar.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n label?: string;\n muted: boolean;\n disabled: boolean;\n onPressActionMenu?: () => void;\n};\nconst UserActionBar = ({ muted, uri, name, disabled, onPressActionMenu, label }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);\n\n return (\n <View style={styles.container}>\n <Avatar muted={muted} size={36} uri={uri} containerStyle={styles.avatar} />\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n {Boolean(label) && (\n <Text body2 color={colors.onBackground02} style={styles.label}>\n {label}\n </Text>\n )}\n {Boolean(onPressActionMenu) && (\n <TouchableOpacity onPress={onPressActionMenu} disabled={disabled}>\n <Icon color={iconColor} size={24} icon={'more'} containerStyle={styles.iconContainer} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n },\n avatar: {\n marginLeft: 16,\n marginRight: 16,\n },\n label: {\n marginRight: 4,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n paddingRight: 12,\n borderBottomWidth: 1,\n },\n iconContainer: {\n padding: 4,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default UserActionBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAUA,MAAMA,aAAa,GAAG,QAAqE;EAAA,IAApE;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,iBAA9B;IAAiDC;EAAjD,CAAoE;EACzF,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAAkB,CAACN,QAAD,CAAlB,EAA8B,CAACG,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,cAA/B,CAA9B,CAAlB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,kCAAD;IAAQ,KAAK,EAAEb,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC,GAArC;IAA0C,cAAc,EAAEW,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEV,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACV,IAAhD;IAAsD,KAAK,EAAEI,MAAM,CAACK;EAApE,GACGT,IADH,CADF,EAIGe,OAAO,CAACZ,KAAD,CAAP,iBACC,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEC,MAAM,CAACY,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACP;EAAxD,GACGA,KADH,CALJ,EASGY,OAAO,CAACb,iBAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAED;EAAxD,gBACE,6BAAC,gCAAD;IAAM,KAAK,EAAEK,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEI,MAAM,CAACO;EAAvE,EADF,CAVJ,CAFF,CADF;AAoBD,CAzBD;;AA2BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BrB,KAAK,EAAE;IACLqB,WAAW,EAAE;EADR,CAXuB;EAc9BX,aAAa,EAAE;IACbS,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BV,aAAa,EAAE;IACbW,OAAO,EAAE;EADI,CAtBe;EAyB9B5B,IAAI,EAAE;IACJyB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAjB,CAAf;eA+Be3B,a"}
1
+ {"version":3,"names":["UserActionBar","muted","uri","name","disabled","label","onPressActionMenu","onPressAvatar","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","createStyleSheet","flexDirection","alignItems","width","height","marginLeft","marginRight","flex","paddingRight","borderBottomWidth","padding"],"sources":["UserActionBar.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, TouchableOpacity, View } from 'react-native';\nimport type { GestureResponderEvent } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n label?: string;\n\n muted: boolean;\n disabled: boolean;\n\n onPressActionMenu?: (ev: GestureResponderEvent) => void;\n onPressAvatar?: (ev: GestureResponderEvent) => void;\n};\nconst UserActionBar = ({ muted, uri, name, disabled, label, onPressActionMenu, onPressAvatar }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);\n\n return (\n <View style={styles.container}>\n <Pressable onPress={onPressAvatar} style={styles.avatar}>\n <Avatar muted={muted} size={36} uri={uri} />\n </Pressable>\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n {Boolean(label) && (\n <Text body2 color={colors.onBackground02} style={styles.label}>\n {label}\n </Text>\n )}\n {Boolean(onPressActionMenu) && (\n <TouchableOpacity onPress={onPressActionMenu} disabled={disabled}>\n <Icon color={iconColor} size={24} icon={'more'} containerStyle={styles.iconContainer} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n },\n avatar: {\n marginLeft: 16,\n marginRight: 16,\n },\n label: {\n marginRight: 4,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n paddingRight: 12,\n borderBottomWidth: 1,\n },\n iconContainer: {\n padding: 4,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default UserActionBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;AACA;;;;AAaA,MAAMA,aAAa,GAAG,QAAoF;EAAA,IAAnF;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,KAA9B;IAAqCC,iBAArC;IAAwDC;EAAxD,CAAmF;EACxG,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAAkB,CAACP,QAAD,CAAlB,EAA8B,CAACI,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,cAA/B,CAA9B,CAAlB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,sBAAD;IAAW,OAAO,EAAER,aAApB;IAAmC,KAAK,EAAEO,MAAM,CAACE;EAAjD,gBACE,6BAAC,kCAAD;IAAQ,KAAK,EAAEf,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC;EAArC,EADF,CADF,eAIE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACY,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEV,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACX,IAAhD;IAAsD,KAAK,EAAEK,MAAM,CAACK;EAApE,GACGV,IADH,CADF,EAIGgB,OAAO,CAACd,KAAD,CAAP,iBACC,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEG,MAAM,CAACY,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACT;EAAxD,GACGA,KADH,CALJ,EASGc,OAAO,CAACb,iBAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAEF;EAAxD,gBACE,6BAAC,gCAAD;IAAM,KAAK,EAAEM,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEI,MAAM,CAACO;EAAvE,EADF,CAVJ,CAJF,CADF;AAsBD,CA3BD;;AA6BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BvB,KAAK,EAAE;IACLuB,WAAW,EAAE;EADR,CAXuB;EAc9BX,aAAa,EAAE;IACbS,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BV,aAAa,EAAE;IACbW,OAAO,EAAE;EADI,CAtBe;EAyB9B7B,IAAI,EAAE;IACJ0B,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAjB,CAAf;eA+Be5B,a"}
@@ -143,6 +143,7 @@ const GroupChannelPreviewContainer = _ref => {
143
143
  badgeCount: channel.unreadMessageCount,
144
144
  memberCount: channel.memberCount > 2 ? channel.memberCount : undefined,
145
145
  frozen: channel.isFrozen,
146
+ broadcast: channel.isBroadcast,
146
147
  notificationOff: channel.myPushTriggerOption === 'off'
147
148
  }));
148
149
  };
@@ -150,6 +151,10 @@ const GroupChannelPreviewContainer = _ref => {
150
151
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
151
152
  titleCaptionIcon: {
152
153
  marginRight: 4
154
+ },
155
+ broadcastCover: {
156
+ padding: 12,
157
+ borderRadius: 28
153
158
  }
154
159
  });
155
160
  var _default = GroupChannelPreviewContainer;
@@ -1 +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","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","outgoingStatus","useMessageOutgoingStatus","lastMessage","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","isMyMessage","userId","styles","error","onBackground03","secondary","DEFAULT_LONG_PRESS_DELAY","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","createStyleSheet","marginRight"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\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\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 const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\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 if (typingUsers.length > 0) 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 (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} 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 </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","typingUsers","setTypingUsers","useState","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","outgoingStatus","useMessageOutgoingStatus","lastMessage","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","isMyMessage","userId","styles","error","onBackground03","secondary","DEFAULT_LONG_PRESS_DELAY","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","isBroadcast","myPushTriggerOption","createStyleSheet","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\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\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 const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\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 if (typingUsers.length > 0) 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 (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} 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 broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAOA;;AAWA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAT;EAAuBC,KAAK,EAAE,OAA9B;EAAuCC,KAAK,EAAE,MAA9C;EAAsDC,IAAI,EAAE;AAA5D,CAAnB;;AAOA,MAAMC,4BAA4B,GAAG,QAA8C;EAAA,IAA7C;IAAEC,OAAF;IAAWC,WAAX;IAAwBC;EAAxB,CAA6C;EACjF,MAAM;IAAEC,WAAF;IAAeC,GAAf;IAAoBC;EAApB,IAAiC,IAAAC,2BAAA,GAAvC;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,IAAAC,eAAA,EAAyB,EAAzB,CAAtC;;EAEA,IAAIR,QAAQ,CAACS,iCAAb,EAAgD;IAC9C,MAAMC,QAAQ,GAAG,IAAAC,qBAAA,EAAU,8BAAV,CAAjB;IACA,IAAAC,iCAAA,EAAkBb,GAAlB,EAAwB,gDAA+CW,QAAS,EAAhF,EAAmF;MACjFG,qBAAqB,CAACC,YAAD,EAAe;QAClC,IAAI,IAAAC,8BAAA,EAAmBlB,OAAnB,EAA4BiB,YAA5B,CAAJ,EAA+C;QAC/CP,cAAc,CAACO,YAAY,CAACE,cAAb,EAAD,CAAd;MACD;;IAJgF,CAAnF;EAMD;;EAED,MAAMC,cAAc,GAAG,IAAAC,wCAAA,EAAyBnB,GAAzB,EAA8BF,OAA9B,EAAuCA,OAAO,CAACsB,WAA/C,CAAvB;EAEA,MAAMC,QAAQ,GAAG,IAAAC,mBAAA,EAAQ,MAAM;IAC7B,IAAIf,WAAW,CAACgB,MAAZ,GAAqB,CAAzB,EAA4B,OAAOpB,OAAO,CAACqB,MAAR,CAAeC,wBAAf,CAAwClB,WAAxC,KAAwD,EAA/D,CAA5B,KACK,OAAOJ,OAAO,CAACuB,kBAAR,CAA2BC,oBAA3B,CAAgD7B,OAAhD,CAAP;EACN,CAHgB,CAAjB;EAKA,MAAM8B,QAAQ,GAAG,IAAAN,mBAAA,EAAQ,MAAM;IAAA;;IAC7B,IAAI,0BAACxB,OAAO,CAACsB,WAAT,iDAAC,qBAAqBS,aAArB,EAAD,CAAJ,EAA2C,OAAOC,SAAP;IAC3C,IAAIvB,WAAW,CAACgB,MAAZ,GAAqB,CAAzB,EAA4B,OAAOO,SAAP;IAC5B,OAAOxC,UAAU,CAAC,IAAAyC,uBAAA,EAAYjC,OAAO,CAACsB,WAAR,CAAoBY,IAApB,IAA4B,IAAAC,4BAAA,EAAiBnC,OAAO,CAACsB,WAAR,CAAoBc,IAArC,CAAxC,CAAD,CAAjB;EACD,CAJgB,CAAjB;EAMA,MAAMC,gBAAgB,GAAG,IAAAb,mBAAA,EAAQ,MAAM;IACrC,IAAI,CAACxB,OAAO,CAACsB,WAAb,EAA0B,OAAOU,SAAP;IAC1B,IAAI,CAAC7B,QAAQ,CAACmC,sCAAd,EAAsD,OAAON,SAAP;IACtD,IAAI,CAAC,IAAAO,uBAAA,EAAYvC,OAAO,CAACsB,WAApB,EAAiCrB,WAAjC,aAAiCA,WAAjC,uBAAiCA,WAAW,CAAEuC,MAA9C,CAAL,EAA4D,OAAOR,SAAP;;IAE5D,IAAIZ,cAAc,KAAK,SAAvB,EAAkC;MAChC,oBAAO,6BAAC,0CAAD;QAAgB,IAAI,EAAE,EAAtB;QAA0B,KAAK,EAAEqB,MAAM,CAACJ;MAAxC,EAAP;IACD;;IAED,IAAIjB,cAAc,KAAK,QAAvB,EAAiC;MAC/B,oBAAO,6BAAC,gCAAD;QAAM,IAAI,EAAE,OAAZ;QAAqB,IAAI,EAAE,EAA3B;QAA+B,KAAK,EAAEb,MAAM,CAACmC,KAA7C;QAAoD,KAAK,EAAED,MAAM,CAACJ;MAAlE,EAAP;IACD;;IAED,IAAIjB,cAAc,KAAK,aAAvB,EAAsC;MACpC,oBAAO,6BAAC,gCAAD;QAAM,IAAI,EAAE,MAAZ;QAAoB,IAAI,EAAE,EAA1B;QAA8B,KAAK,EAAEb,MAAM,CAACoC,cAA5C;QAA4D,cAAc,EAAEF,MAAM,CAACJ;MAAnF,EAAP;IACD;;IAED,IAAIjB,cAAc,KAAK,WAAnB,IAAkCA,cAAc,KAAK,QAAzD,EAAmE;MACjE,oBAAO,6BAAC,gCAAD;QAAM,IAAI,EAAE,UAAZ;QAAwB,IAAI,EAAE,EAA9B;QAAkC,KAAK,EAAEb,MAAM,CAACoC,cAAhD;QAAgE,KAAK,EAAEF,MAAM,CAACJ;MAA9E,EAAP;IACD;;IAED,IAAIjB,cAAc,KAAK,MAAvB,EAA+B;MAC7B,oBAAO,6BAAC,gCAAD;QAAM,IAAI,EAAE,UAAZ;QAAwB,IAAI,EAAE,EAA9B;QAAkC,KAAK,EAAEb,MAAM,CAACqC,SAAhD;QAA2D,KAAK,EAAEH,MAAM,CAACJ;MAAzE,EAAP;IACD;;IAED,OAAOL,SAAP;EACD,CA1BwB,CAAzB;EA4BA,oBACE,6BAAC,sBAAD;IAAW,cAAc,EAAEa,mCAA3B;IAAqD,OAAO,EAAE/C,OAA9D;IAAuE,WAAW,EAAEC;EAApF,gBACE,6BAAC,+CAAD;IACE,WAAW,eAAE,6BAAC,qBAAD;MAAc,OAAO,EAAEC,OAAvB;MAAgC,IAAI,EAAE;IAAtC,EADf;IAEE,QAAQ,EAAEA,OAAO,CAAC8C,QAFpB;IAGE,KAAK,EAAEzC,OAAO,CAACuB,kBAAR,CAA2BmB,qBAA3B,CAAiD,CAAA9C,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEuC,MAAb,KAAuB,EAAxE,EAA4ExC,OAA5E,CAHT;IAIE,gBAAgB,EAAEqC,gBAJpB;IAKE,YAAY,EAAEhC,OAAO,CAACuB,kBAAR,CAA2BoB,6BAA3B,CAAyDhD,OAAzD,CALhB;IAME,IAAI,EAAEuB,QANR;IAOE,QAAQ,EAAEO,QAPZ;IAQE,UAAU,EAAE9B,OAAO,CAACiD,kBARtB;IASE,WAAW,EAAEjD,OAAO,CAACkD,WAAR,GAAsB,CAAtB,GAA0BlD,OAAO,CAACkD,WAAlC,GAAgDlB,SAT/D;IAUE,MAAM,EAAEhC,OAAO,CAACmD,QAVlB;IAWE,SAAS,EAAEnD,OAAO,CAACoD,WAXrB;IAYE,eAAe,EAAEpD,OAAO,CAACqD,mBAAR,KAAgC;EAZnD,EADF,CADF;AAkBD,CA5ED;;AA8EA,MAAMZ,MAAM,GAAG,IAAAa,4CAAA,EAAiB;EAC9BjB,gBAAgB,EAAE;IAChBkB,WAAW,EAAE;EADG,CADY;EAI9BC,cAAc,EAAE;IACdC,OAAO,EAAE,EADK;IAEdC,YAAY,EAAE;EAFA;AAJc,CAAjB,CAAf;eAUe7D,4B"}
@@ -19,11 +19,13 @@ var _openChannel = require("@sendbird/chat/openChannel");
19
19
 
20
20
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
21
21
 
22
- var _Localization = require("../contexts/Localization");
22
+ var _LocalizationCtx = require("../contexts/LocalizationCtx");
23
23
 
24
- var _PlatformService = require("../contexts/PlatformService");
24
+ var _PlatformServiceCtx = require("../contexts/PlatformServiceCtx");
25
25
 
26
- var _SendbirdChat = require("../contexts/SendbirdChat");
26
+ var _SendbirdChatCtx = require("../contexts/SendbirdChatCtx");
27
+
28
+ var _UserProfileCtx = require("../contexts/UserProfileCtx");
27
29
 
28
30
  var _useContext = require("../hooks/useContext");
29
31
 
@@ -60,6 +62,7 @@ const SendbirdUIKitContainer = _ref => {
60
62
  localization,
61
63
  styles,
62
64
  toast,
65
+ userProfile,
63
66
  errorBoundary
64
67
  } = _ref;
65
68
  const unsubscribes = (0, _react.useRef)([]).current;
@@ -117,14 +120,15 @@ const SendbirdUIKitContainer = _ref => {
117
120
  });
118
121
  };
119
122
  }, [appId, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.localCacheStorage]);
120
- return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_SendbirdChat.SendbirdChatProvider, {
123
+ return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_SendbirdChatCtx.SendbirdChatProvider, {
121
124
  sdkInstance: sdkInstance,
122
125
  enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? true,
123
126
  enableChannelListTypingIndicator: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListTypingIndicator) ?? false,
124
- enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? false
125
- }, /*#__PURE__*/_react.default.createElement(_Localization.LocalizationProvider, {
127
+ enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? false,
128
+ enableUseUserIdForNickname: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUseUserIdForNickname) ?? false
129
+ }, /*#__PURE__*/_react.default.createElement(_LocalizationCtx.LocalizationProvider, {
126
130
  stringSet: (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? _StringSet.default
127
- }, /*#__PURE__*/_react.default.createElement(_PlatformService.PlatformServiceProvider, {
131
+ }, /*#__PURE__*/_react.default.createElement(_PlatformServiceCtx.PlatformServiceProvider, {
128
132
  fileService: platformServices.file,
129
133
  notificationService: platformServices.notification,
130
134
  clipboardService: platformServices.clipboard,
@@ -137,7 +141,10 @@ const SendbirdUIKitContainer = _ref => {
137
141
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
138
142
  }, /*#__PURE__*/_react.default.createElement(LocalizedDialogProvider, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
139
143
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
140
- }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children)))))))));
144
+ }, /*#__PURE__*/_react.default.createElement(_UserProfileCtx.UserProfileProvider, {
145
+ onCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onCreateChannel,
146
+ onBeforeCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onBeforeCreateChannel
147
+ }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children))))))))));
141
148
  };
142
149
 
143
150
  const LocalizedDialogProvider = _ref2 => {
@@ -1 +1 @@
1
- {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","InternalLocalCacheStorage","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/Localization';\nimport { PlatformServiceProvider } from '../contexts/PlatformService';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChat';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n enableAutoPushTokenRegistration?: boolean;\n enableChannelListTypingIndicator?: boolean;\n enableChannelListMessageReceiptStatus?: boolean;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n sdk = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(chatOptions?.localCacheStorage),\n // @ts-ignore\n useAsyncStorageStore: chatOptions?.localCacheStorage\n ? new InternalLocalCacheStorage(chatOptions.localCacheStorage)\n : undefined,\n });\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","userProfile","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","InternalLocalCacheStorage","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<UIKitFeaturesInSendbirdChatContext>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n userProfile,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n sdk = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(chatOptions?.localCacheStorage),\n // @ts-ignore\n useAsyncStorageStore: chatOptions?.localCacheStorage\n ? new InternalLocalCacheStorage(chatOptions.localCacheStorage)\n : undefined,\n });\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n enableUseUserIdForNickname={chatOptions?.enableUseUserIdForNickname ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </UserProfileProvider>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -26,4 +26,4 @@ const LocalizationProvider = _ref => {
26
26
  };
27
27
 
28
28
  exports.LocalizationProvider = LocalizationProvider;
29
- //# sourceMappingURL=Localization.js.map
29
+ //# sourceMappingURL=LocalizationCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LocalizationContext","React","createContext","LocalizationProvider","children","stringSet","STRINGS"],"sources":["LocalizationCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { StringSet } from '../localization/StringSet.type';\n\ntype Props = React.PropsWithChildren<{\n stringSet: StringSet;\n}>;\n\nexport type LocalizationContextType = {\n STRINGS: StringSet;\n};\n\nexport const LocalizationContext = React.createContext<LocalizationContextType | null>(null);\nexport const LocalizationProvider = ({ children, stringSet }: Props) => {\n return <LocalizationContext.Provider value={{ STRINGS: stringSet }}>{children}</LocalizationContext.Provider>;\n};\n"],"mappings":";;;;;;;AAAA;;;;AAYO,MAAMA,mBAAmB,gBAAGC,cAAA,CAAMC,aAAN,CAAoD,IAApD,CAA5B;;;;AACA,MAAMC,oBAAoB,GAAG,QAAoC;EAAA,IAAnC;IAAEC,QAAF;IAAYC;EAAZ,CAAmC;EACtE,oBAAO,6BAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAE;MAAEC,OAAO,EAAED;IAAX;EAArC,GAA8DD,QAA9D,CAAP;AACD,CAFM"}
@@ -32,4 +32,4 @@ const PlatformServiceProvider = _ref => {
32
32
  };
33
33
 
34
34
  exports.PlatformServiceProvider = PlatformServiceProvider;
35
- //# sourceMappingURL=PlatformService.js.map
35
+ //# sourceMappingURL=PlatformServiceCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService?: MediaServiceInterface;\n}>;\n\nexport const PlatformServiceContext = React.createContext<Props | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;;;AAgBO,MAAMA,sBAAsB,gBAAGC,cAAA,CAAMC,aAAN,CAAkC,IAAlC,CAA/B;;;;AACA,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,6BAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
@@ -27,7 +27,8 @@ const SendbirdChatProvider = _ref => {
27
27
  sdkInstance,
28
28
  enableAutoPushTokenRegistration,
29
29
  enableChannelListMessageReceiptStatus,
30
- enableChannelListTypingIndicator
30
+ enableChannelListTypingIndicator,
31
+ enableUseUserIdForNickname
31
32
  } = _ref;
32
33
  const [currentUser, _setCurrentUser] = (0, _react.useState)();
33
34
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
@@ -79,7 +80,8 @@ const SendbirdChatProvider = _ref => {
79
80
  features: { ...appFeatures,
80
81
  autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,
81
82
  channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,
82
- channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus
83
+ channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,
84
+ useUserIdForNicknameEnabled: enableUseUserIdForNickname
83
85
  }
84
86
  };
85
87
  return /*#__PURE__*/_react.default.createElement(SendbirdChatContext.Provider, {
@@ -88,4 +90,4 @@ const SendbirdChatProvider = _ref => {
88
90
  };
89
91
 
90
92
  exports.SendbirdChatProvider = SendbirdChatProvider;
91
- //# sourceMappingURL=SendbirdChat.js.map
93
+ //# sourceMappingURL=SendbirdChatCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","useEffect","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","AppState","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled","useUserIdForNicknameEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileType } from '../platform/types';\n\nexport interface UIKitFeaturesInSendbirdChatContext {\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n enableUseUserIdForNickname: boolean;\n}\n\ninterface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n}\n\ntype Context = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n enableUseUserIdForNickname,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = { nickname };\n\n if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}