stream-chat-react-native-core 9.5.0-beta.7 → 9.5.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/lib/commonjs/components/ChannelDetails/ChannelDetails.js +16 -37
  2. package/lib/commonjs/components/ChannelDetails/ChannelDetails.js.map +1 -1
  3. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsActionItem.js.map +1 -1
  4. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsActionsSection.js +10 -3
  5. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsActionsSection.js.map +1 -1
  6. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsEditButton.js +23 -16
  7. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsEditButton.js.map +1 -1
  8. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsMemberSection.js +43 -59
  9. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsMemberSection.js.map +1 -1
  10. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavHeader.js +2 -2
  11. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavHeader.js.map +1 -1
  12. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavigationSection.js +8 -3
  13. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavigationSection.js.map +1 -1
  14. package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsProfile.js.map +1 -1
  15. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsForm.js +35 -0
  16. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsForm.js.map +1 -0
  17. package/lib/commonjs/components/ChannelDetails/components/{ChannelEditDetails.js → ChannelEditDetailsFormContent.js} +5 -5
  18. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsFormContent.js.map +1 -0
  19. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js +81 -0
  20. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js.map +1 -0
  21. package/lib/commonjs/components/ChannelDetails/components/ChannelEditImageSheet.js.map +1 -1
  22. package/lib/commonjs/components/ChannelDetails/components/ChannelEditName.js.map +1 -1
  23. package/lib/commonjs/components/ChannelDetails/components/index.js +30 -8
  24. package/lib/commonjs/components/ChannelDetails/components/index.js.map +1 -1
  25. package/lib/commonjs/components/ChannelDetails/components/members/AddMemberSearchResultItem.js.map +1 -1
  26. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersButton.js +77 -0
  27. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersButton.js.map +1 -0
  28. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersForm.js +33 -0
  29. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersForm.js.map +1 -0
  30. package/lib/{module/components/ChannelDetails/components/members/ChannelAddMembers.js → commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js} +5 -5
  31. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js.map +1 -0
  32. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js +86 -0
  33. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js.map +1 -0
  34. package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js +4 -2
  35. package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js.map +1 -1
  36. package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberItem.js +12 -20
  37. package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberItem.js.map +1 -1
  38. package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberList.js +13 -15
  39. package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberList.js.map +1 -1
  40. package/lib/commonjs/components/ChannelDetails/components/members/MemberListLoadingSkeleton.js.map +1 -1
  41. package/lib/commonjs/components/ChannelDetails/components/members/UserListLoadingSkeleton.js.map +1 -1
  42. package/lib/commonjs/components/ChannelDetails/components/members/index.js +23 -12
  43. package/lib/commonjs/components/ChannelDetails/components/members/index.js.map +1 -1
  44. package/lib/commonjs/components/ChannelDetails/components/modal/Modal.js +16 -1
  45. package/lib/commonjs/components/ChannelDetails/components/modal/Modal.js.map +1 -1
  46. package/lib/commonjs/components/ChannelDetails/components/modal/ModalHeader.js.map +1 -1
  47. package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentItem.js.map +1 -1
  48. package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentList.js +9 -4
  49. package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentList.js.map +1 -1
  50. package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.js.map +1 -1
  51. package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.js.map +1 -1
  52. package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaItem.js.map +1 -1
  53. package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaList.js +9 -4
  54. package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaList.js.map +1 -1
  55. package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.js.map +1 -1
  56. package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageItem.js.map +1 -1
  57. package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageList.js +9 -4
  58. package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageList.js.map +1 -1
  59. package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.js.map +1 -1
  60. package/lib/commonjs/components/ChannelDetails/components/roles/RoleItem.js +61 -0
  61. package/lib/commonjs/components/ChannelDetails/components/roles/RoleItem.js.map +1 -0
  62. package/lib/commonjs/components/ChannelDetails/components/roles/RoleList.js +38 -0
  63. package/lib/commonjs/components/ChannelDetails/components/roles/RoleList.js.map +1 -0
  64. package/lib/commonjs/components/ChannelDetails/components/roles/index.js +26 -0
  65. package/lib/commonjs/components/ChannelDetails/components/roles/index.js.map +1 -0
  66. package/lib/commonjs/components/ChannelDetails/hooks/members/index.js +4 -4
  67. package/lib/commonjs/components/ChannelDetails/hooks/members/index.js.map +1 -1
  68. package/lib/commonjs/components/ChannelDetails/hooks/members/{useMemberRoleLabel.js → useMemberRoles.js} +27 -17
  69. package/lib/commonjs/components/ChannelDetails/hooks/members/useMemberRoles.js.map +1 -0
  70. package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsActionItems.js +5 -4
  71. package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsActionItems.js.map +1 -1
  72. package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.js.map +1 -1
  73. package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.js.map +1 -1
  74. package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js +3 -5
  75. package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js.map +1 -1
  76. package/lib/commonjs/components/ChannelDetails/hooks/useEditChannelImage.js +3 -3
  77. package/lib/commonjs/components/ChannelDetails/hooks/useEditChannelImage.js.map +1 -1
  78. package/lib/commonjs/components/ChannelDetails/hooks/useFileAttachmentListSections.js.map +1 -1
  79. package/lib/commonjs/components/ChannelDetails/hooks/useMediaList.js.map +1 -1
  80. package/lib/commonjs/components/ChannelDetails/hooks/useUserActivityStatus.js.map +1 -1
  81. package/lib/commonjs/components/UIComponents/EmptyList.js.map +1 -1
  82. package/lib/commonjs/components/UIComponents/EmptySearchResult.js.map +1 -1
  83. package/lib/commonjs/components/UIComponents/GenericListLoadingSkeleton.js.map +1 -1
  84. package/lib/commonjs/components/UIComponents/SearchInput.js.map +1 -1
  85. package/lib/commonjs/components/UIComponents/SelectionCircle.js.map +1 -1
  86. package/lib/commonjs/components/ui/Avatar/UserAvatar.js +2 -4
  87. package/lib/commonjs/components/ui/Avatar/UserAvatar.js.map +1 -1
  88. package/lib/commonjs/components/ui/Avatar/constants.js +33 -1
  89. package/lib/commonjs/components/ui/Avatar/constants.js.map +1 -1
  90. package/lib/commonjs/components/ui/Badge/OnlineIndicator.js +2 -23
  91. package/lib/commonjs/components/ui/Badge/OnlineIndicator.js.map +1 -1
  92. package/lib/commonjs/contexts/channelAddMembersContext/ChannelAddMembersContext.js +50 -6
  93. package/lib/commonjs/contexts/channelAddMembersContext/ChannelAddMembersContext.js.map +1 -1
  94. package/lib/commonjs/contexts/channelDetailsContext/channelDetailsContext.js +20 -6
  95. package/lib/commonjs/contexts/channelDetailsContext/channelDetailsContext.js.map +1 -1
  96. package/lib/commonjs/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js +60 -6
  97. package/lib/commonjs/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js.map +1 -1
  98. package/lib/commonjs/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js +4 -3
  99. package/lib/commonjs/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js.map +1 -1
  100. package/lib/commonjs/contexts/channelMediaListContext/ChannelMediaListContext.js +4 -3
  101. package/lib/commonjs/contexts/channelMediaListContext/ChannelMediaListContext.js.map +1 -1
  102. package/lib/commonjs/contexts/channelMemberListContext/ChannelMemberListContext.js +4 -3
  103. package/lib/commonjs/contexts/channelMemberListContext/ChannelMemberListContext.js.map +1 -1
  104. package/lib/commonjs/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js +4 -3
  105. package/lib/commonjs/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js.map +1 -1
  106. package/lib/commonjs/contexts/componentsContext/defaultComponents.js +9 -2
  107. package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -1
  108. package/lib/commonjs/contexts/themeContext/utils/theme.js +12 -1
  109. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  110. package/lib/commonjs/hooks/index.js +33 -0
  111. package/lib/commonjs/hooks/index.js.map +1 -1
  112. package/lib/commonjs/hooks/useCanAddMembersToChannel.js +8 -0
  113. package/lib/commonjs/hooks/useCanAddMembersToChannel.js.map +1 -0
  114. package/lib/commonjs/hooks/useCanEditChannel.js +8 -0
  115. package/lib/commonjs/hooks/useCanEditChannel.js.map +1 -0
  116. package/lib/commonjs/hooks/useIsDirectChat.js +1 -1
  117. package/lib/commonjs/hooks/useIsDirectChat.js.map +1 -1
  118. package/lib/commonjs/state-store/edit-channel-details-store.js +18 -13
  119. package/lib/commonjs/state-store/edit-channel-details-store.js.map +1 -1
  120. package/lib/commonjs/state-store/index.js +33 -0
  121. package/lib/commonjs/state-store/index.js.map +1 -1
  122. package/lib/commonjs/state-store/selection-store.js.map +1 -1
  123. package/lib/commonjs/state-store/signal-store.js +29 -0
  124. package/lib/commonjs/state-store/signal-store.js.map +1 -0
  125. package/lib/commonjs/version.json +1 -1
  126. package/lib/module/components/ChannelDetails/ChannelDetails.js +16 -37
  127. package/lib/module/components/ChannelDetails/ChannelDetails.js.map +1 -1
  128. package/lib/module/components/ChannelDetails/components/ChannelDetailsActionItem.js.map +1 -1
  129. package/lib/module/components/ChannelDetails/components/ChannelDetailsActionsSection.js +10 -3
  130. package/lib/module/components/ChannelDetails/components/ChannelDetailsActionsSection.js.map +1 -1
  131. package/lib/module/components/ChannelDetails/components/ChannelDetailsEditButton.js +23 -16
  132. package/lib/module/components/ChannelDetails/components/ChannelDetailsEditButton.js.map +1 -1
  133. package/lib/module/components/ChannelDetails/components/ChannelDetailsMemberSection.js +43 -59
  134. package/lib/module/components/ChannelDetails/components/ChannelDetailsMemberSection.js.map +1 -1
  135. package/lib/module/components/ChannelDetails/components/ChannelDetailsNavHeader.js +2 -2
  136. package/lib/module/components/ChannelDetails/components/ChannelDetailsNavHeader.js.map +1 -1
  137. package/lib/module/components/ChannelDetails/components/ChannelDetailsNavigationSection.js +8 -3
  138. package/lib/module/components/ChannelDetails/components/ChannelDetailsNavigationSection.js.map +1 -1
  139. package/lib/module/components/ChannelDetails/components/ChannelDetailsProfile.js.map +1 -1
  140. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsForm.js +35 -0
  141. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsForm.js.map +1 -0
  142. package/lib/module/components/ChannelDetails/components/{ChannelEditDetails.js → ChannelEditDetailsFormContent.js} +5 -5
  143. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsFormContent.js.map +1 -0
  144. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js +81 -0
  145. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js.map +1 -0
  146. package/lib/module/components/ChannelDetails/components/ChannelEditImageSheet.js.map +1 -1
  147. package/lib/module/components/ChannelDetails/components/ChannelEditName.js.map +1 -1
  148. package/lib/module/components/ChannelDetails/components/index.js +30 -8
  149. package/lib/module/components/ChannelDetails/components/index.js.map +1 -1
  150. package/lib/module/components/ChannelDetails/components/members/AddMemberSearchResultItem.js.map +1 -1
  151. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersButton.js +77 -0
  152. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersButton.js.map +1 -0
  153. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersForm.js +33 -0
  154. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersForm.js.map +1 -0
  155. package/lib/{commonjs/components/ChannelDetails/components/members/ChannelAddMembers.js → module/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js} +5 -5
  156. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js.map +1 -0
  157. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js +86 -0
  158. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js.map +1 -0
  159. package/lib/module/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js +4 -2
  160. package/lib/module/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js.map +1 -1
  161. package/lib/module/components/ChannelDetails/components/members/ChannelMemberItem.js +12 -20
  162. package/lib/module/components/ChannelDetails/components/members/ChannelMemberItem.js.map +1 -1
  163. package/lib/module/components/ChannelDetails/components/members/ChannelMemberList.js +13 -15
  164. package/lib/module/components/ChannelDetails/components/members/ChannelMemberList.js.map +1 -1
  165. package/lib/module/components/ChannelDetails/components/members/MemberListLoadingSkeleton.js.map +1 -1
  166. package/lib/module/components/ChannelDetails/components/members/UserListLoadingSkeleton.js.map +1 -1
  167. package/lib/module/components/ChannelDetails/components/members/index.js +23 -12
  168. package/lib/module/components/ChannelDetails/components/members/index.js.map +1 -1
  169. package/lib/module/components/ChannelDetails/components/modal/Modal.js +16 -1
  170. package/lib/module/components/ChannelDetails/components/modal/Modal.js.map +1 -1
  171. package/lib/module/components/ChannelDetails/components/modal/ModalHeader.js.map +1 -1
  172. package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentItem.js.map +1 -1
  173. package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentList.js +9 -4
  174. package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentList.js.map +1 -1
  175. package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.js.map +1 -1
  176. package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.js.map +1 -1
  177. package/lib/module/components/ChannelDetails/components/navigation-section/MediaItem.js.map +1 -1
  178. package/lib/module/components/ChannelDetails/components/navigation-section/MediaList.js +9 -4
  179. package/lib/module/components/ChannelDetails/components/navigation-section/MediaList.js.map +1 -1
  180. package/lib/module/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.js.map +1 -1
  181. package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageItem.js.map +1 -1
  182. package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageList.js +9 -4
  183. package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageList.js.map +1 -1
  184. package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.js.map +1 -1
  185. package/lib/module/components/ChannelDetails/components/roles/RoleItem.js +61 -0
  186. package/lib/module/components/ChannelDetails/components/roles/RoleItem.js.map +1 -0
  187. package/lib/module/components/ChannelDetails/components/roles/RoleList.js +38 -0
  188. package/lib/module/components/ChannelDetails/components/roles/RoleList.js.map +1 -0
  189. package/lib/module/components/ChannelDetails/components/roles/index.js +26 -0
  190. package/lib/module/components/ChannelDetails/components/roles/index.js.map +1 -0
  191. package/lib/module/components/ChannelDetails/hooks/members/index.js +4 -4
  192. package/lib/module/components/ChannelDetails/hooks/members/index.js.map +1 -1
  193. package/lib/module/components/ChannelDetails/hooks/members/{useMemberRoleLabel.js → useMemberRoles.js} +27 -17
  194. package/lib/module/components/ChannelDetails/hooks/members/useMemberRoles.js.map +1 -0
  195. package/lib/module/components/ChannelDetails/hooks/useChannelDetailsActionItems.js +5 -4
  196. package/lib/module/components/ChannelDetails/hooks/useChannelDetailsActionItems.js.map +1 -1
  197. package/lib/module/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.js.map +1 -1
  198. package/lib/module/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.js.map +1 -1
  199. package/lib/module/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js +3 -5
  200. package/lib/module/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js.map +1 -1
  201. package/lib/module/components/ChannelDetails/hooks/useEditChannelImage.js +3 -3
  202. package/lib/module/components/ChannelDetails/hooks/useEditChannelImage.js.map +1 -1
  203. package/lib/module/components/ChannelDetails/hooks/useFileAttachmentListSections.js.map +1 -1
  204. package/lib/module/components/ChannelDetails/hooks/useMediaList.js.map +1 -1
  205. package/lib/module/components/ChannelDetails/hooks/useUserActivityStatus.js.map +1 -1
  206. package/lib/module/components/UIComponents/EmptyList.js.map +1 -1
  207. package/lib/module/components/UIComponents/EmptySearchResult.js.map +1 -1
  208. package/lib/module/components/UIComponents/GenericListLoadingSkeleton.js.map +1 -1
  209. package/lib/module/components/UIComponents/SearchInput.js.map +1 -1
  210. package/lib/module/components/UIComponents/SelectionCircle.js.map +1 -1
  211. package/lib/module/components/ui/Avatar/UserAvatar.js +2 -4
  212. package/lib/module/components/ui/Avatar/UserAvatar.js.map +1 -1
  213. package/lib/module/components/ui/Avatar/constants.js +33 -1
  214. package/lib/module/components/ui/Avatar/constants.js.map +1 -1
  215. package/lib/module/components/ui/Badge/OnlineIndicator.js +2 -23
  216. package/lib/module/components/ui/Badge/OnlineIndicator.js.map +1 -1
  217. package/lib/module/contexts/channelAddMembersContext/ChannelAddMembersContext.js +50 -6
  218. package/lib/module/contexts/channelAddMembersContext/ChannelAddMembersContext.js.map +1 -1
  219. package/lib/module/contexts/channelDetailsContext/channelDetailsContext.js +20 -6
  220. package/lib/module/contexts/channelDetailsContext/channelDetailsContext.js.map +1 -1
  221. package/lib/module/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js +60 -6
  222. package/lib/module/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js.map +1 -1
  223. package/lib/module/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js +4 -3
  224. package/lib/module/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js.map +1 -1
  225. package/lib/module/contexts/channelMediaListContext/ChannelMediaListContext.js +4 -3
  226. package/lib/module/contexts/channelMediaListContext/ChannelMediaListContext.js.map +1 -1
  227. package/lib/module/contexts/channelMemberListContext/ChannelMemberListContext.js +4 -3
  228. package/lib/module/contexts/channelMemberListContext/ChannelMemberListContext.js.map +1 -1
  229. package/lib/module/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js +4 -3
  230. package/lib/module/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js.map +1 -1
  231. package/lib/module/contexts/componentsContext/defaultComponents.js +9 -2
  232. package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -1
  233. package/lib/module/contexts/themeContext/utils/theme.js +12 -1
  234. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  235. package/lib/module/hooks/index.js +33 -0
  236. package/lib/module/hooks/index.js.map +1 -1
  237. package/lib/module/hooks/useCanAddMembersToChannel.js +8 -0
  238. package/lib/module/hooks/useCanAddMembersToChannel.js.map +1 -0
  239. package/lib/module/hooks/useCanEditChannel.js +8 -0
  240. package/lib/module/hooks/useCanEditChannel.js.map +1 -0
  241. package/lib/module/hooks/useIsDirectChat.js +1 -1
  242. package/lib/module/hooks/useIsDirectChat.js.map +1 -1
  243. package/lib/module/state-store/edit-channel-details-store.js +18 -13
  244. package/lib/module/state-store/edit-channel-details-store.js.map +1 -1
  245. package/lib/module/state-store/index.js +33 -0
  246. package/lib/module/state-store/index.js.map +1 -1
  247. package/lib/module/state-store/selection-store.js.map +1 -1
  248. package/lib/module/state-store/signal-store.js +29 -0
  249. package/lib/module/state-store/signal-store.js.map +1 -0
  250. package/lib/module/version.json +1 -1
  251. package/lib/typescript/components/ChannelDetails/ChannelDetails.d.ts +2 -95
  252. package/lib/typescript/components/ChannelDetails/ChannelDetails.d.ts.map +1 -1
  253. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionItem.d.ts +0 -3
  254. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionItem.d.ts.map +1 -1
  255. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionsSection.d.ts +17 -4
  256. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionsSection.d.ts.map +1 -1
  257. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsEditButton.d.ts +8 -4
  258. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsEditButton.d.ts.map +1 -1
  259. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsMemberSection.d.ts +7 -4
  260. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsMemberSection.d.ts.map +1 -1
  261. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavHeader.d.ts +3 -4
  262. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavHeader.d.ts.map +1 -1
  263. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavigationSection.d.ts +13 -4
  264. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavigationSection.d.ts.map +1 -1
  265. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsProfile.d.ts +0 -3
  266. package/lib/typescript/components/ChannelDetails/components/ChannelDetailsProfile.d.ts.map +1 -1
  267. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsForm.d.ts +20 -0
  268. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsForm.d.ts.map +1 -0
  269. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormContent.d.ts +3 -0
  270. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormContent.d.ts.map +1 -0
  271. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormHeader.d.ts +7 -0
  272. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormHeader.d.ts.map +1 -0
  273. package/lib/typescript/components/ChannelDetails/components/ChannelEditImageSheet.d.ts +0 -3
  274. package/lib/typescript/components/ChannelDetails/components/ChannelEditImageSheet.d.ts.map +1 -1
  275. package/lib/typescript/components/ChannelDetails/components/ChannelEditName.d.ts +0 -3
  276. package/lib/typescript/components/ChannelDetails/components/ChannelEditName.d.ts.map +1 -1
  277. package/lib/typescript/components/ChannelDetails/components/index.d.ts +4 -2
  278. package/lib/typescript/components/ChannelDetails/components/index.d.ts.map +1 -1
  279. package/lib/typescript/components/ChannelDetails/components/members/AddMemberSearchResultItem.d.ts +0 -3
  280. package/lib/typescript/components/ChannelDetails/components/members/AddMemberSearchResultItem.d.ts.map +1 -1
  281. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersButton.d.ts +12 -0
  282. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersButton.d.ts.map +1 -0
  283. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersForm.d.ts +19 -0
  284. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersForm.d.ts.map +1 -0
  285. package/lib/typescript/components/ChannelDetails/components/members/{ChannelAddMembers.d.ts → ChannelAddMembersFormContent.d.ts} +3 -6
  286. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersFormContent.d.ts.map +1 -0
  287. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.d.ts +7 -0
  288. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.d.ts.map +1 -0
  289. package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberActionsSheet.d.ts +10 -4
  290. package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberActionsSheet.d.ts.map +1 -1
  291. package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberItem.d.ts +8 -4
  292. package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberItem.d.ts.map +1 -1
  293. package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberList.d.ts +8 -3
  294. package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberList.d.ts.map +1 -1
  295. package/lib/typescript/components/ChannelDetails/components/members/MemberListLoadingSkeleton.d.ts +0 -3
  296. package/lib/typescript/components/ChannelDetails/components/members/MemberListLoadingSkeleton.d.ts.map +1 -1
  297. package/lib/typescript/components/ChannelDetails/components/members/UserListLoadingSkeleton.d.ts +0 -3
  298. package/lib/typescript/components/ChannelDetails/components/members/UserListLoadingSkeleton.d.ts.map +1 -1
  299. package/lib/typescript/components/ChannelDetails/components/members/index.d.ts +4 -3
  300. package/lib/typescript/components/ChannelDetails/components/members/index.d.ts.map +1 -1
  301. package/lib/typescript/components/ChannelDetails/components/modal/Modal.d.ts +0 -3
  302. package/lib/typescript/components/ChannelDetails/components/modal/Modal.d.ts.map +1 -1
  303. package/lib/typescript/components/ChannelDetails/components/modal/ModalHeader.d.ts +0 -3
  304. package/lib/typescript/components/ChannelDetails/components/modal/ModalHeader.d.ts.map +1 -1
  305. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentItem.d.ts +0 -5
  306. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentItem.d.ts.map +1 -1
  307. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentList.d.ts +8 -4
  308. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentList.d.ts.map +1 -1
  309. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.d.ts +0 -3
  310. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.d.ts.map +1 -1
  311. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.d.ts +0 -3
  312. package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.d.ts.map +1 -1
  313. package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaItem.d.ts +0 -5
  314. package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaItem.d.ts.map +1 -1
  315. package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaList.d.ts +8 -4
  316. package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaList.d.ts.map +1 -1
  317. package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.d.ts +0 -2
  318. package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.d.ts.map +1 -1
  319. package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageItem.d.ts +0 -3
  320. package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageItem.d.ts.map +1 -1
  321. package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageList.d.ts +8 -5
  322. package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageList.d.ts.map +1 -1
  323. package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.d.ts +0 -3
  324. package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.d.ts.map +1 -1
  325. package/lib/typescript/components/ChannelDetails/components/roles/RoleItem.d.ts +16 -0
  326. package/lib/typescript/components/ChannelDetails/components/roles/RoleItem.d.ts.map +1 -0
  327. package/lib/typescript/components/ChannelDetails/components/roles/RoleList.d.ts +11 -0
  328. package/lib/typescript/components/ChannelDetails/components/roles/RoleList.d.ts.map +1 -0
  329. package/lib/typescript/components/ChannelDetails/components/roles/index.d.ts +3 -0
  330. package/lib/typescript/components/ChannelDetails/components/roles/index.d.ts.map +1 -0
  331. package/lib/typescript/components/ChannelDetails/hooks/members/index.d.ts +1 -1
  332. package/lib/typescript/components/ChannelDetails/hooks/members/index.d.ts.map +1 -1
  333. package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoles.d.ts +35 -0
  334. package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoles.d.ts.map +1 -0
  335. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsActionItems.d.ts +5 -5
  336. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsActionItems.d.ts.map +1 -1
  337. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.d.ts +0 -1
  338. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.d.ts.map +1 -1
  339. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.d.ts +0 -3
  340. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.d.ts.map +1 -1
  341. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.d.ts +3 -9
  342. package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.d.ts.map +1 -1
  343. package/lib/typescript/components/ChannelDetails/hooks/useEditChannelImage.d.ts +1 -2
  344. package/lib/typescript/components/ChannelDetails/hooks/useEditChannelImage.d.ts.map +1 -1
  345. package/lib/typescript/components/ChannelDetails/hooks/useFileAttachmentListSections.d.ts +0 -3
  346. package/lib/typescript/components/ChannelDetails/hooks/useFileAttachmentListSections.d.ts.map +1 -1
  347. package/lib/typescript/components/ChannelDetails/hooks/useMediaList.d.ts +0 -4
  348. package/lib/typescript/components/ChannelDetails/hooks/useMediaList.d.ts.map +1 -1
  349. package/lib/typescript/components/ChannelDetails/hooks/useUserActivityStatus.d.ts +0 -1
  350. package/lib/typescript/components/ChannelDetails/hooks/useUserActivityStatus.d.ts.map +1 -1
  351. package/lib/typescript/components/UIComponents/EmptyList.d.ts +0 -3
  352. package/lib/typescript/components/UIComponents/EmptyList.d.ts.map +1 -1
  353. package/lib/typescript/components/UIComponents/EmptySearchResult.d.ts +0 -3
  354. package/lib/typescript/components/UIComponents/EmptySearchResult.d.ts.map +1 -1
  355. package/lib/typescript/components/UIComponents/GenericListLoadingSkeleton.d.ts +0 -3
  356. package/lib/typescript/components/UIComponents/GenericListLoadingSkeleton.d.ts.map +1 -1
  357. package/lib/typescript/components/UIComponents/SearchInput.d.ts +0 -3
  358. package/lib/typescript/components/UIComponents/SearchInput.d.ts.map +1 -1
  359. package/lib/typescript/components/UIComponents/SelectionCircle.d.ts +0 -3
  360. package/lib/typescript/components/UIComponents/SelectionCircle.d.ts.map +1 -1
  361. package/lib/typescript/components/ui/Avatar/UserAvatar.d.ts.map +1 -1
  362. package/lib/typescript/components/ui/Avatar/constants.d.ts +10 -1
  363. package/lib/typescript/components/ui/Avatar/constants.d.ts.map +1 -1
  364. package/lib/typescript/components/ui/Badge/OnlineIndicator.d.ts.map +1 -1
  365. package/lib/typescript/contexts/channelAddMembersContext/ChannelAddMembersContext.d.ts +18 -9
  366. package/lib/typescript/contexts/channelAddMembersContext/ChannelAddMembersContext.d.ts.map +1 -1
  367. package/lib/typescript/contexts/channelDetailsContext/channelDetailsContext.d.ts +14 -15
  368. package/lib/typescript/contexts/channelDetailsContext/channelDetailsContext.d.ts.map +1 -1
  369. package/lib/typescript/contexts/channelEditDetailsContext/ChannelEditDetailsContext.d.ts +28 -13
  370. package/lib/typescript/contexts/channelEditDetailsContext/ChannelEditDetailsContext.d.ts.map +1 -1
  371. package/lib/typescript/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.d.ts +2 -11
  372. package/lib/typescript/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.d.ts.map +1 -1
  373. package/lib/typescript/contexts/channelMediaListContext/ChannelMediaListContext.d.ts +2 -11
  374. package/lib/typescript/contexts/channelMediaListContext/ChannelMediaListContext.d.ts.map +1 -1
  375. package/lib/typescript/contexts/channelMemberListContext/ChannelMemberListContext.d.ts +2 -11
  376. package/lib/typescript/contexts/channelMemberListContext/ChannelMemberListContext.d.ts.map +1 -1
  377. package/lib/typescript/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.d.ts +2 -11
  378. package/lib/typescript/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.d.ts.map +1 -1
  379. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +21 -14
  380. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -1
  381. package/lib/typescript/contexts/themeContext/ThemeContext.d.ts +12 -1
  382. package/lib/typescript/contexts/themeContext/ThemeContext.d.ts.map +1 -1
  383. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +12 -1
  384. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  385. package/lib/typescript/hooks/index.d.ts +3 -0
  386. package/lib/typescript/hooks/index.d.ts.map +1 -1
  387. package/lib/typescript/hooks/useCanAddMembersToChannel.d.ts +6 -0
  388. package/lib/typescript/hooks/useCanAddMembersToChannel.d.ts.map +1 -0
  389. package/lib/typescript/hooks/useCanEditChannel.d.ts +6 -0
  390. package/lib/typescript/hooks/useCanEditChannel.d.ts.map +1 -0
  391. package/lib/typescript/hooks/useIsDirectChat.d.ts +1 -1
  392. package/lib/typescript/hooks/useIsDirectChat.d.ts.map +1 -1
  393. package/lib/typescript/state-store/edit-channel-details-store.d.ts +10 -11
  394. package/lib/typescript/state-store/edit-channel-details-store.d.ts.map +1 -1
  395. package/lib/typescript/state-store/index.d.ts +3 -0
  396. package/lib/typescript/state-store/index.d.ts.map +1 -1
  397. package/lib/typescript/state-store/selection-store.d.ts +0 -6
  398. package/lib/typescript/state-store/selection-store.d.ts.map +1 -1
  399. package/lib/typescript/state-store/signal-store.d.ts +9 -0
  400. package/lib/typescript/state-store/signal-store.d.ts.map +1 -0
  401. package/package.json +1 -1
  402. package/src/components/ChannelDetails/ChannelDetails.tsx +14 -160
  403. package/src/components/ChannelDetails/__tests__/ChannelDetails.test.tsx +51 -38
  404. package/src/components/ChannelDetails/__tests__/ChannelDetailsActionsSection.test.tsx +1 -1
  405. package/src/components/ChannelDetails/__tests__/ChannelDetailsEditButton.test.tsx +52 -22
  406. package/src/components/ChannelDetails/__tests__/ChannelDetailsMemberSection.test.tsx +10 -45
  407. package/src/components/ChannelDetails/__tests__/ChannelDetailsNavHeader.test.tsx +4 -4
  408. package/src/components/ChannelDetails/__tests__/ChannelDetailsNavigationSection.test.tsx +6 -3
  409. package/src/components/ChannelDetails/__tests__/ChannelDetailsProfile.test.tsx +1 -1
  410. package/src/components/ChannelDetails/__tests__/{ChannelEditDetailsModal.test.tsx → ChannelEditDetailsForm.test.tsx} +30 -35
  411. package/src/components/ChannelDetails/__tests__/{ChannelEditDetails.test.tsx → ChannelEditDetailsFormContent.test.tsx} +8 -8
  412. package/src/components/ChannelDetails/__tests__/ChannelEditImageSheet.test.tsx +1 -1
  413. package/src/components/ChannelDetails/__tests__/ChannelEditName.test.tsx +1 -1
  414. package/src/components/ChannelDetails/__tests__/members/ChannelAddMembersButton.test.tsx +163 -0
  415. package/src/components/ChannelDetails/__tests__/members/{ChannelAddMembersModal.test.tsx → ChannelAddMembersForm.test.tsx} +23 -25
  416. package/src/components/ChannelDetails/__tests__/members/{ChannelAddMembers.test.tsx → ChannelAddMembersFormContent.test.tsx} +5 -3
  417. package/src/components/ChannelDetails/__tests__/members/ChannelMemberActionsSheet.test.tsx +8 -3
  418. package/src/components/ChannelDetails/__tests__/members/ChannelMemberItem.test.tsx +11 -11
  419. package/src/components/ChannelDetails/__tests__/members/ChannelMemberList.test.tsx +35 -21
  420. package/src/components/ChannelDetails/__tests__/members/useMemberRoles.test.tsx +122 -0
  421. package/src/components/ChannelDetails/__tests__/useChannelDetailsActionItems.test.tsx +13 -9
  422. package/src/components/ChannelDetails/__tests__/useEditChannelImage.test.tsx +10 -3
  423. package/src/components/ChannelDetails/components/ChannelDetailsActionItem.tsx +0 -3
  424. package/src/components/ChannelDetails/components/ChannelDetailsActionsSection.tsx +26 -6
  425. package/src/components/ChannelDetails/components/ChannelDetailsEditButton.tsx +34 -18
  426. package/src/components/ChannelDetails/components/ChannelDetailsMemberSection.tsx +51 -59
  427. package/src/components/ChannelDetails/components/ChannelDetailsNavHeader.tsx +8 -5
  428. package/src/components/ChannelDetails/components/ChannelDetailsNavigationSection.tsx +18 -5
  429. package/src/components/ChannelDetails/components/ChannelDetailsProfile.tsx +0 -3
  430. package/src/components/ChannelDetails/components/ChannelEditDetailsForm.tsx +48 -0
  431. package/src/components/ChannelDetails/components/{ChannelEditDetails.tsx → ChannelEditDetailsFormContent.tsx} +1 -4
  432. package/src/components/ChannelDetails/components/ChannelEditDetailsFormHeader.tsx +65 -0
  433. package/src/components/ChannelDetails/components/ChannelEditImageSheet.tsx +0 -3
  434. package/src/components/ChannelDetails/components/ChannelEditName.tsx +0 -3
  435. package/src/components/ChannelDetails/components/__tests__/navigation-section/FileAttachmentList.test.tsx +1 -2
  436. package/src/components/ChannelDetails/components/__tests__/navigation-section/MediaList.test.tsx +2 -2
  437. package/src/components/ChannelDetails/components/__tests__/navigation-section/PinnedMessageList.test.tsx +1 -2
  438. package/src/components/ChannelDetails/components/index.ts +4 -2
  439. package/src/components/ChannelDetails/components/members/AddMemberSearchResultItem.tsx +0 -3
  440. package/src/components/ChannelDetails/components/members/ChannelAddMembersButton.tsx +83 -0
  441. package/src/components/ChannelDetails/components/members/ChannelAddMembersForm.tsx +41 -0
  442. package/src/components/ChannelDetails/components/members/{ChannelAddMembers.tsx → ChannelAddMembersFormContent.tsx} +4 -5
  443. package/src/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.tsx +75 -0
  444. package/src/components/ChannelDetails/components/members/ChannelMemberActionsSheet.tsx +17 -5
  445. package/src/components/ChannelDetails/components/members/ChannelMemberItem.tsx +16 -29
  446. package/src/components/ChannelDetails/components/members/ChannelMemberList.tsx +26 -19
  447. package/src/components/ChannelDetails/components/members/MemberListLoadingSkeleton.tsx +0 -3
  448. package/src/components/ChannelDetails/components/members/UserListLoadingSkeleton.tsx +0 -3
  449. package/src/components/ChannelDetails/components/members/index.ts +4 -3
  450. package/src/components/ChannelDetails/components/modal/Modal.tsx +19 -6
  451. package/src/components/ChannelDetails/components/modal/ModalHeader.tsx +0 -3
  452. package/src/components/ChannelDetails/components/navigation-section/FileAttachmentItem.tsx +0 -5
  453. package/src/components/ChannelDetails/components/navigation-section/FileAttachmentList.tsx +11 -7
  454. package/src/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.tsx +0 -3
  455. package/src/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.tsx +0 -3
  456. package/src/components/ChannelDetails/components/navigation-section/MediaItem.tsx +0 -5
  457. package/src/components/ChannelDetails/components/navigation-section/MediaList.tsx +16 -7
  458. package/src/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.tsx +0 -2
  459. package/src/components/ChannelDetails/components/navigation-section/PinnedMessageItem.tsx +0 -3
  460. package/src/components/ChannelDetails/components/navigation-section/PinnedMessageList.tsx +11 -7
  461. package/src/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.tsx +0 -3
  462. package/src/components/ChannelDetails/components/roles/RoleItem.tsx +74 -0
  463. package/src/components/ChannelDetails/components/roles/RoleList.tsx +51 -0
  464. package/src/components/ChannelDetails/components/roles/__tests__/RoleItem.test.tsx +58 -0
  465. package/src/components/ChannelDetails/components/roles/__tests__/RoleList.test.tsx +31 -0
  466. package/src/components/ChannelDetails/components/roles/index.ts +2 -0
  467. package/src/components/ChannelDetails/hooks/members/index.ts +1 -1
  468. package/src/components/ChannelDetails/hooks/members/useMemberRoles.ts +63 -0
  469. package/src/components/ChannelDetails/hooks/useChannelDetailsActionItems.ts +9 -5
  470. package/src/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.ts +0 -1
  471. package/src/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.ts +0 -3
  472. package/src/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.ts +5 -11
  473. package/src/components/ChannelDetails/hooks/useEditChannelImage.ts +3 -4
  474. package/src/components/ChannelDetails/hooks/useFileAttachmentListSections.ts +0 -3
  475. package/src/components/ChannelDetails/hooks/useMediaList.ts +0 -4
  476. package/src/components/ChannelDetails/hooks/useUserActivityStatus.ts +0 -1
  477. package/src/components/UIComponents/EmptyList.tsx +0 -3
  478. package/src/components/UIComponents/EmptySearchResult.tsx +0 -3
  479. package/src/components/UIComponents/GenericListLoadingSkeleton.tsx +0 -3
  480. package/src/components/UIComponents/SearchInput.tsx +0 -3
  481. package/src/components/UIComponents/SelectionCircle.tsx +0 -3
  482. package/src/components/ui/Avatar/UserAvatar.tsx +8 -4
  483. package/src/components/ui/Avatar/constants.ts +48 -1
  484. package/src/components/ui/Badge/OnlineIndicator.tsx +10 -24
  485. package/src/contexts/channelAddMembersContext/ChannelAddMembersContext.tsx +76 -12
  486. package/src/contexts/channelDetailsContext/channelDetailsContext.tsx +24 -19
  487. package/src/contexts/channelEditDetailsContext/ChannelEditDetailsContext.tsx +101 -18
  488. package/src/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.tsx +5 -13
  489. package/src/contexts/channelMediaListContext/ChannelMediaListContext.tsx +5 -13
  490. package/src/contexts/channelMemberListContext/ChannelMemberListContext.tsx +5 -13
  491. package/src/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.tsx +5 -13
  492. package/src/contexts/componentsContext/defaultComponents.ts +18 -4
  493. package/src/contexts/themeContext/utils/theme.ts +24 -2
  494. package/src/hooks/__tests__/useCanAddMembersToChannel.test.tsx +43 -0
  495. package/src/hooks/__tests__/useCanEditChannel.test.tsx +43 -0
  496. package/src/hooks/index.ts +3 -0
  497. package/src/hooks/useCanAddMembersToChannel.ts +9 -0
  498. package/src/hooks/useCanEditChannel.ts +9 -0
  499. package/src/hooks/useIsDirectChat.ts +2 -2
  500. package/src/state-store/__tests__/edit-channel-details-store.test.ts +72 -17
  501. package/src/state-store/__tests__/signal-store.test.ts +35 -0
  502. package/src/state-store/edit-channel-details-store.ts +22 -17
  503. package/src/state-store/index.ts +3 -0
  504. package/src/state-store/selection-store.ts +0 -6
  505. package/src/state-store/signal-store.ts +18 -0
  506. package/src/version.json +1 -1
  507. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetails.js.map +0 -1
  508. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsModal.js +0 -152
  509. package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsModal.js.map +0 -1
  510. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembers.js.map +0 -1
  511. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersModal.js +0 -133
  512. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersModal.js.map +0 -1
  513. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAllMembersModal.js +0 -64
  514. package/lib/commonjs/components/ChannelDetails/components/members/ChannelAllMembersModal.js.map +0 -1
  515. package/lib/commonjs/components/ChannelDetails/hooks/members/useMemberRoleLabel.js.map +0 -1
  516. package/lib/module/components/ChannelDetails/components/ChannelEditDetails.js.map +0 -1
  517. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsModal.js +0 -152
  518. package/lib/module/components/ChannelDetails/components/ChannelEditDetailsModal.js.map +0 -1
  519. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembers.js.map +0 -1
  520. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersModal.js +0 -133
  521. package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersModal.js.map +0 -1
  522. package/lib/module/components/ChannelDetails/components/members/ChannelAllMembersModal.js +0 -64
  523. package/lib/module/components/ChannelDetails/components/members/ChannelAllMembersModal.js.map +0 -1
  524. package/lib/module/components/ChannelDetails/hooks/members/useMemberRoleLabel.js.map +0 -1
  525. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetails.d.ts +0 -6
  526. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetails.d.ts.map +0 -1
  527. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsModal.d.ts +0 -18
  528. package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsModal.d.ts.map +0 -1
  529. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembers.d.ts.map +0 -1
  530. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersModal.d.ts +0 -18
  531. package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersModal.d.ts.map +0 -1
  532. package/lib/typescript/components/ChannelDetails/components/members/ChannelAllMembersModal.d.ts +0 -17
  533. package/lib/typescript/components/ChannelDetails/components/members/ChannelAllMembersModal.d.ts.map +0 -1
  534. package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoleLabel.d.ts +0 -10
  535. package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoleLabel.d.ts.map +0 -1
  536. package/src/components/ChannelDetails/__tests__/members/ChannelAllMembersModal.test.tsx +0 -159
  537. package/src/components/ChannelDetails/__tests__/members/useMemberRoleLabel.test.tsx +0 -130
  538. package/src/components/ChannelDetails/components/ChannelEditDetailsModal.tsx +0 -152
  539. package/src/components/ChannelDetails/components/members/ChannelAddMembersModal.tsx +0 -126
  540. package/src/components/ChannelDetails/components/members/ChannelAllMembersModal.tsx +0 -71
  541. package/src/components/ChannelDetails/hooks/members/useMemberRoleLabel.ts +0 -32
@@ -1,46 +1,129 @@
1
- import React, { PropsWithChildren, useContext, useState } from 'react';
1
+ import React, { PropsWithChildren, useContext, useMemo, useState } from 'react';
2
2
 
3
- import { Channel } from 'stream-chat';
4
-
5
- import { EditChannelDetailsStore } from '../../state-store/edit-channel-details-store';
3
+ import { NotificationTargetProvider } from '../../components/Notifications/NotificationTargetContext';
4
+ import { useChannelActions } from '../../hooks/actions/useChannelActions';
5
+ import { useStableCallback } from '../../hooks/useStableCallback';
6
+ import {
7
+ EditChannelDetailsStore,
8
+ isImageEdited,
9
+ isNameEdited,
10
+ } from '../../state-store/edit-channel-details-store';
11
+ import type { File, GlobalFileUploadRequest } from '../../types/types';
12
+ import { useChannelDetailsContext } from '../channelDetailsContext/channelDetailsContext';
6
13
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
7
14
  import { isTestEnvironment } from '../utils/isTestEnvironment';
8
15
 
9
- /**
10
- * @experimental This API is experimental and is subject to change.
11
- */
12
16
  export type ChannelEditDetailsContextValue = {
13
17
  store: EditChannelDetailsStore;
18
+ /**
19
+ * Saves the edited channel details (name and/or image). Resolves once every
20
+ * update succeeds and rejects if any of them fail.
21
+ */
22
+ submit: () => Promise<void>;
23
+ /**
24
+ * Compress image with quality (from 0 to 1, where 1 is best quality) applied
25
+ * to the channel image picked during editing.
26
+ */
27
+ compressImageQuality?: number;
28
+ /** Override the upload request used to upload the channel image. */
29
+ doFileUploadRequest?: GlobalFileUploadRequest;
14
30
  };
15
31
 
32
+ /**
33
+ * Props for the {@link ChannelEditDetailsProvider} that seed the edit flow
34
+ * configuration into the context.
35
+ */
36
+ export type ChannelEditDetailsProviderProps = PropsWithChildren<{
37
+ /**
38
+ * Compress image with quality (from 0 to 1, where 1 is best quality) applied
39
+ * to the channel image picked during editing.
40
+ */
41
+ compressImageQuality?: number;
42
+ /** Override the upload request used to upload the channel image. */
43
+ doFileUploadRequest?: GlobalFileUploadRequest;
44
+ }>;
45
+
16
46
  export const ChannelEditDetailsContext = React.createContext(
17
47
  DEFAULT_BASE_CONTEXT_VALUE as ChannelEditDetailsContextValue,
18
48
  );
19
49
 
20
50
  /**
21
- * Creates and provides an {@link EditChannelDetailsStore} snapshotted from the
22
- * given channel. Mount this once per edit session — the store captures the
23
- * channel's name/image at construction and does not track later WebSocket
24
- * updates, so an inbound `channel.updated` does not clobber in-progress edits.
25
- *
26
- * @experimental This API is experimental and is subject to change.
51
+ * Builds the {@link ChannelEditDetailsContextValue}. Rendered inside the
52
+ * {@link NotificationTargetProvider} so that notifications emitted by `submit`
53
+ * (via {@link useChannelActions}) resolve to the channel edit details host.
27
54
  */
28
- export const ChannelEditDetailsProvider = ({
29
- channel,
55
+ const ChannelEditDetailsContextProviderInner = ({
30
56
  children,
31
- }: PropsWithChildren<{ channel: Channel }>) => {
57
+ compressImageQuality,
58
+ doFileUploadRequest,
59
+ }: ChannelEditDetailsProviderProps) => {
60
+ const { channel } = useChannelDetailsContext();
61
+ const { updateImage, updateName } = useChannelActions(channel);
32
62
  const [store] = useState(() => new EditChannelDetailsStore(channel));
33
63
 
64
+ const submit = useStableCallback(async () => {
65
+ const state = store.state.getLatestValue();
66
+ const { currentName, updatedImage } = state;
67
+ const errors: unknown[] = [];
68
+ const onFailure = (error: unknown) => errors.push(error);
69
+ const tasks: Promise<void>[] = [];
70
+ if (isNameEdited(state)) {
71
+ tasks.push(updateName(currentName, { onFailure }));
72
+ }
73
+ if (isImageEdited(state)) {
74
+ tasks.push(updateImage(updatedImage as File | null, { onFailure }, doFileUploadRequest));
75
+ }
76
+ await Promise.all(tasks);
77
+ if (errors.length > 0) {
78
+ throw new AggregateError(errors, 'Failed to update channel details');
79
+ }
80
+ });
81
+
82
+ const value = useMemo(
83
+ () => ({
84
+ compressImageQuality,
85
+ doFileUploadRequest,
86
+ store,
87
+ submit,
88
+ }),
89
+ [compressImageQuality, doFileUploadRequest, store, submit],
90
+ );
91
+
34
92
  return (
35
- <ChannelEditDetailsContext.Provider value={{ store }}>
93
+ <ChannelEditDetailsContext.Provider value={value}>
36
94
  {children}
37
95
  </ChannelEditDetailsContext.Provider>
38
96
  );
39
97
  };
40
98
 
41
99
  /**
42
- * @experimental This API is experimental and is subject to change.
100
+ * Creates and provides an {@link EditChannelDetailsStore} snapshotted from the
101
+ * channel in the {@link ChannelDetailsContext}. Mount this once per edit session — the store captures the
102
+ * channel's name/image at construction and does not track later WebSocket
103
+ * updates, so an inbound `channel.updated` does not clobber in-progress edits.
43
104
  */
105
+ export const ChannelEditDetailsProvider = ({
106
+ children,
107
+ compressImageQuality,
108
+ doFileUploadRequest,
109
+ }: ChannelEditDetailsProviderProps) => {
110
+ const { channel } = useChannelDetailsContext();
111
+
112
+ return (
113
+ <NotificationTargetProvider
114
+ hostId={`channel-edit-details:${channel.cid}`}
115
+ panel='channel-details'
116
+ >
117
+ <ChannelEditDetailsContextProviderInner
118
+ compressImageQuality={compressImageQuality}
119
+ doFileUploadRequest={doFileUploadRequest}
120
+ >
121
+ {children}
122
+ </ChannelEditDetailsContextProviderInner>
123
+ </NotificationTargetProvider>
124
+ );
125
+ };
126
+
44
127
  export const useChannelEditDetailsContext = () => {
45
128
  const contextValue = useContext(
46
129
  ChannelEditDetailsContext,
@@ -6,11 +6,7 @@ import { useChatContext } from '..';
6
6
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
7
7
  import { isTestEnvironment } from '../utils/isTestEnvironment';
8
8
 
9
- /**
10
- * @experimental This API is experimental and is subject to change.
11
- */
12
9
  export type ChannelFileAttachmentListContextValue = {
13
- channel: Channel;
14
10
  searchSource: MessageSearchSource;
15
11
  };
16
12
 
@@ -18,15 +14,13 @@ export const ChannelFileAttachmentListContext = React.createContext(
18
14
  DEFAULT_BASE_CONTEXT_VALUE as ChannelFileAttachmentListContextValue,
19
15
  );
20
16
 
21
- /**
22
- * @experimental This API is experimental and is subject to change.
23
- */
24
17
  export const ChannelFileAttachmentListProvider = ({
25
18
  channel,
26
19
  children,
27
- }: PropsWithChildren<{ channel: Channel }>) => {
20
+ searchSource: searchSourceProp,
21
+ }: PropsWithChildren<{ channel: Channel; searchSource?: MessageSearchSource }>) => {
28
22
  const { client } = useChatContext();
29
- const [searchSource] = useState(() => {
23
+ const [defaultSearchSource] = useState(() => {
30
24
  const source = new MessageSearchSource(client, {
31
25
  allowEmptySearchString: true,
32
26
  pageSize: 25,
@@ -41,17 +35,15 @@ export const ChannelFileAttachmentListProvider = ({
41
35
  source.activate();
42
36
  return source;
43
37
  });
38
+ const searchSource = searchSourceProp ?? defaultSearchSource;
44
39
 
45
40
  return (
46
- <ChannelFileAttachmentListContext.Provider value={{ channel, searchSource }}>
41
+ <ChannelFileAttachmentListContext.Provider value={{ searchSource }}>
47
42
  {children}
48
43
  </ChannelFileAttachmentListContext.Provider>
49
44
  );
50
45
  };
51
46
 
52
- /**
53
- * @experimental This API is experimental and is subject to change.
54
- */
55
47
  export const useChannelFileAttachmentListContext = () => {
56
48
  const contextValue = useContext(
57
49
  ChannelFileAttachmentListContext,
@@ -6,11 +6,7 @@ import { useChatContext } from '..';
6
6
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
7
7
  import { isTestEnvironment } from '../utils/isTestEnvironment';
8
8
 
9
- /**
10
- * @experimental This API is experimental and is subject to change.
11
- */
12
9
  export type ChannelMediaListContextValue = {
13
- channel: Channel;
14
10
  searchSource: MessageSearchSource;
15
11
  };
16
12
 
@@ -18,15 +14,13 @@ export const ChannelMediaListContext = React.createContext(
18
14
  DEFAULT_BASE_CONTEXT_VALUE as ChannelMediaListContextValue,
19
15
  );
20
16
 
21
- /**
22
- * @experimental This API is experimental and is subject to change.
23
- */
24
17
  export const ChannelMediaListProvider = ({
25
18
  channel,
26
19
  children,
27
- }: PropsWithChildren<{ channel: Channel }>) => {
20
+ searchSource: searchSourceProp,
21
+ }: PropsWithChildren<{ channel: Channel; searchSource?: MessageSearchSource }>) => {
28
22
  const { client } = useChatContext();
29
- const [searchSource] = useState(() => {
23
+ const [defaultSearchSource] = useState(() => {
30
24
  const source = new MessageSearchSource(client, {
31
25
  allowEmptySearchString: true,
32
26
  pageSize: 25,
@@ -42,17 +36,15 @@ export const ChannelMediaListProvider = ({
42
36
  source.activate();
43
37
  return source;
44
38
  });
39
+ const searchSource = searchSourceProp ?? defaultSearchSource;
45
40
 
46
41
  return (
47
- <ChannelMediaListContext.Provider value={{ channel, searchSource }}>
42
+ <ChannelMediaListContext.Provider value={{ searchSource }}>
48
43
  {children}
49
44
  </ChannelMediaListContext.Provider>
50
45
  );
51
46
  };
52
47
 
53
- /**
54
- * @experimental This API is experimental and is subject to change.
55
- */
56
48
  export const useChannelMediaListContext = () => {
57
49
  const contextValue = useContext(
58
50
  ChannelMediaListContext,
@@ -5,11 +5,7 @@ import { Channel, ChannelMemberSearchSource } from 'stream-chat';
5
5
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
6
6
  import { isTestEnvironment } from '../utils/isTestEnvironment';
7
7
 
8
- /**
9
- * @experimental This API is experimental and is subject to change.
10
- */
11
8
  export type ChannelMemberListContextValue = {
12
- channel: Channel;
13
9
  searchSource: ChannelMemberSearchSource;
14
10
  };
15
11
 
@@ -17,14 +13,12 @@ export const ChannelMemberListContext = React.createContext(
17
13
  DEFAULT_BASE_CONTEXT_VALUE as ChannelMemberListContextValue,
18
14
  );
19
15
 
20
- /**
21
- * @experimental This API is experimental and is subject to change.
22
- */
23
16
  export const ChannelMemberListProvider = ({
24
17
  channel,
25
18
  children,
26
- }: PropsWithChildren<{ channel: Channel }>) => {
27
- const [searchSource] = useState(() => {
19
+ searchSource: searchSourceProp,
20
+ }: PropsWithChildren<{ channel: Channel; searchSource?: ChannelMemberSearchSource }>) => {
21
+ const [defaultSearchSource] = useState(() => {
28
22
  const source = new ChannelMemberSearchSource(
29
23
  channel,
30
24
  {
@@ -46,17 +40,15 @@ export const ChannelMemberListProvider = ({
46
40
  source.activate();
47
41
  return source;
48
42
  });
43
+ const searchSource = searchSourceProp ?? defaultSearchSource;
49
44
 
50
45
  return (
51
- <ChannelMemberListContext.Provider value={{ channel, searchSource }}>
46
+ <ChannelMemberListContext.Provider value={{ searchSource }}>
52
47
  {children}
53
48
  </ChannelMemberListContext.Provider>
54
49
  );
55
50
  };
56
51
 
57
- /**
58
- * @experimental This API is experimental and is subject to change.
59
- */
60
52
  export const useChannelMemberListContext = () => {
61
53
  const contextValue = useContext(
62
54
  ChannelMemberListContext,
@@ -6,11 +6,7 @@ import { useChatContext } from '..';
6
6
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
7
7
  import { isTestEnvironment } from '../utils/isTestEnvironment';
8
8
 
9
- /**
10
- * @experimental This API is experimental and is subject to change.
11
- */
12
9
  export type ChannelPinnedMessageListContextValue = {
13
- channel: Channel;
14
10
  searchSource: MessageSearchSource;
15
11
  };
16
12
 
@@ -18,15 +14,13 @@ export const ChannelPinnedMessageListContext = React.createContext(
18
14
  DEFAULT_BASE_CONTEXT_VALUE as ChannelPinnedMessageListContextValue,
19
15
  );
20
16
 
21
- /**
22
- * @experimental This API is experimental and is subject to change.
23
- */
24
17
  export const ChannelPinnedMessageListProvider = ({
25
18
  channel,
26
19
  children,
27
- }: PropsWithChildren<{ channel: Channel }>) => {
20
+ searchSource: searchSourceProp,
21
+ }: PropsWithChildren<{ channel: Channel; searchSource?: MessageSearchSource }>) => {
28
22
  const { client } = useChatContext();
29
- const [searchSource] = useState(() => {
23
+ const [defaultSearchSource] = useState(() => {
30
24
  const source = new MessageSearchSource(
31
25
  client,
32
26
  { pageSize: 25, allowEmptySearchString: true, resetOnNewSearchQuery: false },
@@ -46,17 +40,15 @@ export const ChannelPinnedMessageListProvider = ({
46
40
  source.activate();
47
41
  return source;
48
42
  });
43
+ const searchSource = searchSourceProp ?? defaultSearchSource;
49
44
 
50
45
  return (
51
- <ChannelPinnedMessageListContext.Provider value={{ channel, searchSource }}>
46
+ <ChannelPinnedMessageListContext.Provider value={{ searchSource }}>
52
47
  {children}
53
48
  </ChannelPinnedMessageListContext.Provider>
54
49
  );
55
50
  };
56
51
 
57
- /**
58
- * @experimental This API is experimental and is subject to change.
59
- */
60
52
  export const useChannelPinnedMessageListContext = () => {
61
53
  const contextValue = useContext(
62
54
  ChannelPinnedMessageListContext,
@@ -32,7 +32,10 @@ import { AutoCompleteSuggestionList } from '../../components/AutoCompleteInput/A
32
32
  import { InputView } from '../../components/AutoCompleteInput/InputView';
33
33
  import { ChannelDetailsContent } from '../../components/ChannelDetails/ChannelDetails';
34
34
  import {
35
- ChannelAddMembers,
35
+ ChannelAddMembersButton,
36
+ ChannelAddMembersForm,
37
+ ChannelAddMembersFormContent,
38
+ ChannelAddMembersFormHeader,
36
39
  ChannelDetailsActionsSection,
37
40
  ChannelDetailsActionItem,
38
41
  ChannelDetailsMemberSection,
@@ -40,7 +43,9 @@ import {
40
43
  ChannelDetailsProfile,
41
44
  ChannelDetailsEditButton,
42
45
  ChannelDetailsNavHeader,
43
- ChannelEditDetails,
46
+ ChannelEditDetailsForm,
47
+ ChannelEditDetailsFormContent,
48
+ ChannelEditDetailsFormHeader,
44
49
  ChannelEditImageSheet,
45
50
  ChannelEditName,
46
51
  ChannelMemberActionsSheet,
@@ -52,6 +57,8 @@ import {
52
57
  MediaList,
53
58
  PinnedMessageItem,
54
59
  PinnedMessageList,
60
+ RoleItem,
61
+ RoleList,
55
62
  } from '../../components/ChannelDetails/components';
56
63
  import { ChannelListFooterLoadingIndicator } from '../../components/ChannelList/ChannelListFooterLoadingIndicator';
57
64
  import { ChannelListHeaderErrorIndicator } from '../../components/ChannelList/ChannelListHeaderErrorIndicator';
@@ -319,7 +326,10 @@ const components = {
319
326
  ChannelDetailsHeader,
320
327
 
321
328
  // Channel Details Screen
322
- ChannelAddMembers,
329
+ ChannelAddMembersButton,
330
+ ChannelAddMembersForm,
331
+ ChannelAddMembersFormContent,
332
+ ChannelAddMembersFormHeader,
323
333
  ChannelDetailsActionsSection,
324
334
  ChannelDetailsActionItem,
325
335
  ChannelDetailsMemberSection,
@@ -328,12 +338,16 @@ const components = {
328
338
  ChannelDetailsContent,
329
339
  ChannelDetailsEditButton,
330
340
  ChannelDetailsNavHeader,
331
- ChannelEditDetails,
341
+ ChannelEditDetailsForm,
342
+ ChannelEditDetailsFormContent,
343
+ ChannelEditDetailsFormHeader,
332
344
  ChannelEditImageSheet,
333
345
  ChannelEditName,
334
346
  ChannelMemberActionsSheet,
335
347
  ChannelMemberItem,
336
348
  ChannelMemberList,
349
+ RoleItem,
350
+ RoleList,
337
351
  FileAttachmentItem,
338
352
  FileAttachmentList,
339
353
  MediaItem,
@@ -207,6 +207,7 @@ export type Theme = {
207
207
  trailingValue: TextStyle;
208
208
  };
209
209
  memberSection: {
210
+ addButtonWrapper: ViewStyle;
210
211
  confirmButton: ViewStyle;
211
212
  footer: ViewStyle;
212
213
  header: ViewStyle;
@@ -216,9 +217,19 @@ export type Theme = {
216
217
  memberItem: {
217
218
  container: ViewStyle;
218
219
  name: TextStyle;
219
- role: TextStyle;
220
220
  status: TextStyle;
221
221
  };
222
+ roleList: {
223
+ container: ViewStyle;
224
+ };
225
+ roleItem: {
226
+ container: ViewStyle;
227
+ ownerBackgroundColor: string;
228
+ ownerColor: string;
229
+ roleBackgroundColor: string;
230
+ roleColor: string;
231
+ text: TextStyle;
232
+ };
222
233
  memberList: {
223
234
  container: ViewStyle;
224
235
  list: ViewStyle;
@@ -1322,6 +1333,7 @@ export const defaultTheme: Theme = {
1322
1333
  trailingValue: {},
1323
1334
  },
1324
1335
  memberSection: {
1336
+ addButtonWrapper: {},
1325
1337
  confirmButton: {},
1326
1338
  footer: {},
1327
1339
  header: {},
@@ -1331,9 +1343,19 @@ export const defaultTheme: Theme = {
1331
1343
  memberItem: {
1332
1344
  container: {},
1333
1345
  name: {},
1334
- role: {},
1335
1346
  status: {},
1336
1347
  },
1348
+ roleList: {
1349
+ container: {},
1350
+ },
1351
+ roleItem: {
1352
+ container: {},
1353
+ ownerBackgroundColor: '',
1354
+ ownerColor: '',
1355
+ roleBackgroundColor: '',
1356
+ roleColor: '',
1357
+ text: {},
1358
+ },
1337
1359
  memberList: {
1338
1360
  container: {},
1339
1361
  list: {},
@@ -0,0 +1,43 @@
1
+ import { renderHook } from '@testing-library/react-native';
2
+ import type { Channel } from 'stream-chat';
3
+
4
+ import { useCanAddMembersToChannel } from '../useCanAddMembersToChannel';
5
+ import { useChannelOwnCapabilities } from '../useChannelOwnCapabilities';
6
+
7
+ jest.mock('../useChannelOwnCapabilities');
8
+
9
+ const mockedUseChannelOwnCapabilities = useChannelOwnCapabilities as jest.MockedFunction<
10
+ typeof useChannelOwnCapabilities
11
+ >;
12
+
13
+ const channel = {} as Channel;
14
+
15
+ describe('useCanAddMembersToChannel', () => {
16
+ beforeEach(() => {
17
+ jest.clearAllMocks();
18
+ });
19
+
20
+ it('returns true when the user can update channel members', () => {
21
+ mockedUseChannelOwnCapabilities.mockReturnValue(['update-channel-members']);
22
+
23
+ const { result } = renderHook(() => useCanAddMembersToChannel(channel));
24
+
25
+ expect(result.current).toBe(true);
26
+ });
27
+
28
+ it('returns false when the update-channel-members capability is missing', () => {
29
+ mockedUseChannelOwnCapabilities.mockReturnValue([]);
30
+
31
+ const { result } = renderHook(() => useCanAddMembersToChannel(channel));
32
+
33
+ expect(result.current).toBe(false);
34
+ });
35
+
36
+ it('returns false when there is no channel', () => {
37
+ mockedUseChannelOwnCapabilities.mockReturnValue(undefined);
38
+
39
+ const { result } = renderHook(() => useCanAddMembersToChannel());
40
+
41
+ expect(result.current).toBe(false);
42
+ });
43
+ });
@@ -0,0 +1,43 @@
1
+ import { renderHook } from '@testing-library/react-native';
2
+ import type { Channel } from 'stream-chat';
3
+
4
+ import { useCanEditChannel } from '../useCanEditChannel';
5
+ import { useChannelOwnCapabilities } from '../useChannelOwnCapabilities';
6
+
7
+ jest.mock('../useChannelOwnCapabilities');
8
+
9
+ const mockedUseChannelOwnCapabilities = useChannelOwnCapabilities as jest.MockedFunction<
10
+ typeof useChannelOwnCapabilities
11
+ >;
12
+
13
+ const channel = {} as Channel;
14
+
15
+ describe('useCanEditChannel', () => {
16
+ beforeEach(() => {
17
+ jest.clearAllMocks();
18
+ });
19
+
20
+ it('returns true when the user can update the channel', () => {
21
+ mockedUseChannelOwnCapabilities.mockReturnValue(['update-channel']);
22
+
23
+ const { result } = renderHook(() => useCanEditChannel(channel));
24
+
25
+ expect(result.current).toBe(true);
26
+ });
27
+
28
+ it('returns false when the update-channel capability is missing', () => {
29
+ mockedUseChannelOwnCapabilities.mockReturnValue([]);
30
+
31
+ const { result } = renderHook(() => useCanEditChannel(channel));
32
+
33
+ expect(result.current).toBe(false);
34
+ });
35
+
36
+ it('returns false when there is no channel', () => {
37
+ mockedUseChannelOwnCapabilities.mockReturnValue(undefined);
38
+
39
+ const { result } = renderHook(() => useCanEditChannel());
40
+
41
+ expect(result.current).toBe(false);
42
+ });
43
+ });
@@ -6,9 +6,12 @@ export * from './useChannelName';
6
6
  export * from './useChannelImage';
7
7
  export * from './useChannelMembershipState';
8
8
  export * from './useChannelOwnCapabilities';
9
+ export * from './useCanEditChannel';
10
+ export * from './useCanAddMembersToChannel';
9
11
  export * from './useChannelMuteActive';
10
12
  export * from './useIsDirectChat';
11
13
  export * from './useIsChannelMember';
14
+ export * from './useSelectedChannelState';
12
15
  export * from './useStreami18n';
13
16
  export * from './useViewport';
14
17
  export * from './useScreenDimensions';
@@ -0,0 +1,9 @@
1
+ import type { Channel } from 'stream-chat';
2
+
3
+ import { useChannelOwnCapabilities } from './useChannelOwnCapabilities';
4
+
5
+ /**
6
+ * Whether the current user can add members to the channel.
7
+ */
8
+ export const useCanAddMembersToChannel = (channel?: Channel) =>
9
+ useChannelOwnCapabilities(channel)?.includes('update-channel-members') ?? false;
@@ -0,0 +1,9 @@
1
+ import type { Channel } from 'stream-chat';
2
+
3
+ import { useChannelOwnCapabilities } from './useChannelOwnCapabilities';
4
+
5
+ /**
6
+ * Whether the current user can update (edit) the channel.
7
+ */
8
+ export const useCanEditChannel = (channel?: Channel) =>
9
+ useChannelOwnCapabilities(channel)?.includes('update-channel') ?? false;
@@ -5,13 +5,13 @@ import type { Channel } from 'stream-chat';
5
5
  import { useChannelMembersState } from '../components/ChannelList/hooks/useChannelMembersState';
6
6
  import { useChatContext } from '../contexts';
7
7
 
8
- export const useIsDirectChat = (channel: Channel) => {
8
+ export const useIsDirectChat = (channel?: Channel) => {
9
9
  const { client } = useChatContext();
10
10
  const ownUserId = client.userID;
11
11
  const members = useChannelMembersState(channel);
12
12
 
13
13
  const otherMembers = useMemo(
14
- () => Object.values(members).filter((member) => member.user?.id !== ownUserId),
14
+ () => Object.values(members ?? {}).filter((member) => member.user?.id !== ownUserId),
15
15
  [members, ownUserId],
16
16
  );
17
17