stream-chat-react-native-core 9.5.0-beta.7 → 9.5.0-beta.9
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.
- package/lib/commonjs/components/ChannelDetails/ChannelDetails.js +16 -37
- package/lib/commonjs/components/ChannelDetails/ChannelDetails.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsActionItem.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsActionsSection.js +10 -3
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsActionsSection.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsEditButton.js +23 -16
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsEditButton.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsMemberSection.js +43 -59
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsMemberSection.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavHeader.js +2 -2
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavHeader.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavigationSection.js +8 -3
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsNavigationSection.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelDetailsProfile.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsForm.js +35 -0
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsForm.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/{ChannelEditDetails.js → ChannelEditDetailsFormContent.js} +5 -5
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsFormContent.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js +81 -0
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditImageSheet.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditName.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/index.js +30 -8
- package/lib/commonjs/components/ChannelDetails/components/index.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/AddMemberSearchResultItem.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersButton.js +77 -0
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersButton.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersForm.js +33 -0
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersForm.js.map +1 -0
- package/lib/{module/components/ChannelDetails/components/members/ChannelAddMembers.js → commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js} +5 -5
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js +86 -0
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js +4 -2
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberItem.js +12 -20
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberItem.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberList.js +13 -15
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelMemberList.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/MemberListLoadingSkeleton.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/UserListLoadingSkeleton.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/members/index.js +23 -12
- package/lib/commonjs/components/ChannelDetails/components/members/index.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/modal/Modal.js +16 -1
- package/lib/commonjs/components/ChannelDetails/components/modal/Modal.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/modal/ModalHeader.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentItem.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentList.js +9 -4
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentList.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaItem.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaList.js +9 -4
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaList.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageItem.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageList.js +9 -4
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageList.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/components/roles/RoleItem.js +61 -0
- package/lib/commonjs/components/ChannelDetails/components/roles/RoleItem.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/roles/RoleList.js +38 -0
- package/lib/commonjs/components/ChannelDetails/components/roles/RoleList.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/components/roles/index.js +26 -0
- package/lib/commonjs/components/ChannelDetails/components/roles/index.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/hooks/members/index.js +4 -4
- package/lib/commonjs/components/ChannelDetails/hooks/members/index.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/members/{useMemberRoleLabel.js → useMemberRoles.js} +27 -17
- package/lib/commonjs/components/ChannelDetails/hooks/members/useMemberRoles.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsActionItems.js +5 -4
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsActionItems.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js +3 -5
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useEditChannelImage.js +3 -3
- package/lib/commonjs/components/ChannelDetails/hooks/useEditChannelImage.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useFileAttachmentListSections.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useMediaList.js.map +1 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useUserActivityStatus.js.map +1 -1
- package/lib/commonjs/components/UIComponents/EmptyList.js.map +1 -1
- package/lib/commonjs/components/UIComponents/EmptySearchResult.js.map +1 -1
- package/lib/commonjs/components/UIComponents/GenericListLoadingSkeleton.js.map +1 -1
- package/lib/commonjs/components/UIComponents/SearchInput.js.map +1 -1
- package/lib/commonjs/components/UIComponents/SelectionCircle.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/UserAvatar.js +2 -4
- package/lib/commonjs/components/ui/Avatar/UserAvatar.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/constants.js +33 -1
- package/lib/commonjs/components/ui/Avatar/constants.js.map +1 -1
- package/lib/commonjs/components/ui/Badge/OnlineIndicator.js +2 -23
- package/lib/commonjs/components/ui/Badge/OnlineIndicator.js.map +1 -1
- package/lib/commonjs/contexts/channelAddMembersContext/ChannelAddMembersContext.js +50 -6
- package/lib/commonjs/contexts/channelAddMembersContext/ChannelAddMembersContext.js.map +1 -1
- package/lib/commonjs/contexts/channelDetailsContext/channelDetailsContext.js +20 -6
- package/lib/commonjs/contexts/channelDetailsContext/channelDetailsContext.js.map +1 -1
- package/lib/commonjs/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js +60 -6
- package/lib/commonjs/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js.map +1 -1
- package/lib/commonjs/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js +4 -3
- package/lib/commonjs/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js.map +1 -1
- package/lib/commonjs/contexts/channelMediaListContext/ChannelMediaListContext.js +4 -3
- package/lib/commonjs/contexts/channelMediaListContext/ChannelMediaListContext.js.map +1 -1
- package/lib/commonjs/contexts/channelMemberListContext/ChannelMemberListContext.js +4 -3
- package/lib/commonjs/contexts/channelMemberListContext/ChannelMemberListContext.js.map +1 -1
- package/lib/commonjs/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js +4 -3
- package/lib/commonjs/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js.map +1 -1
- package/lib/commonjs/contexts/componentsContext/defaultComponents.js +9 -2
- package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +12 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/hooks/index.js +33 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useCanAddMembersToChannel.js +8 -0
- package/lib/commonjs/hooks/useCanAddMembersToChannel.js.map +1 -0
- package/lib/commonjs/hooks/useCanEditChannel.js +8 -0
- package/lib/commonjs/hooks/useCanEditChannel.js.map +1 -0
- package/lib/commonjs/hooks/useIsDirectChat.js +1 -1
- package/lib/commonjs/hooks/useIsDirectChat.js.map +1 -1
- package/lib/commonjs/state-store/edit-channel-details-store.js +18 -13
- package/lib/commonjs/state-store/edit-channel-details-store.js.map +1 -1
- package/lib/commonjs/state-store/index.js +33 -0
- package/lib/commonjs/state-store/index.js.map +1 -1
- package/lib/commonjs/state-store/selection-store.js.map +1 -1
- package/lib/commonjs/state-store/signal-store.js +29 -0
- package/lib/commonjs/state-store/signal-store.js.map +1 -0
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelDetails/ChannelDetails.js +16 -37
- package/lib/module/components/ChannelDetails/ChannelDetails.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsActionItem.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsActionsSection.js +10 -3
- package/lib/module/components/ChannelDetails/components/ChannelDetailsActionsSection.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsEditButton.js +23 -16
- package/lib/module/components/ChannelDetails/components/ChannelDetailsEditButton.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsMemberSection.js +43 -59
- package/lib/module/components/ChannelDetails/components/ChannelDetailsMemberSection.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsNavHeader.js +2 -2
- package/lib/module/components/ChannelDetails/components/ChannelDetailsNavHeader.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsNavigationSection.js +8 -3
- package/lib/module/components/ChannelDetails/components/ChannelDetailsNavigationSection.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelDetailsProfile.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsForm.js +35 -0
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsForm.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/{ChannelEditDetails.js → ChannelEditDetailsFormContent.js} +5 -5
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsFormContent.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js +81 -0
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsFormHeader.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/ChannelEditImageSheet.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/ChannelEditName.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/index.js +30 -8
- package/lib/module/components/ChannelDetails/components/index.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/AddMemberSearchResultItem.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersButton.js +77 -0
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersButton.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersForm.js +33 -0
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersForm.js.map +1 -0
- package/lib/{commonjs/components/ChannelDetails/components/members/ChannelAddMembers.js → module/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js} +5 -5
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersFormContent.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js +86 -0
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js +4 -2
- package/lib/module/components/ChannelDetails/components/members/ChannelMemberActionsSheet.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/ChannelMemberItem.js +12 -20
- package/lib/module/components/ChannelDetails/components/members/ChannelMemberItem.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/ChannelMemberList.js +13 -15
- package/lib/module/components/ChannelDetails/components/members/ChannelMemberList.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/MemberListLoadingSkeleton.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/UserListLoadingSkeleton.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/members/index.js +23 -12
- package/lib/module/components/ChannelDetails/components/members/index.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/modal/Modal.js +16 -1
- package/lib/module/components/ChannelDetails/components/modal/Modal.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/modal/ModalHeader.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentItem.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentList.js +9 -4
- package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentList.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/MediaItem.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/MediaList.js +9 -4
- package/lib/module/components/ChannelDetails/components/navigation-section/MediaList.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageItem.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageList.js +9 -4
- package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageList.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.js.map +1 -1
- package/lib/module/components/ChannelDetails/components/roles/RoleItem.js +61 -0
- package/lib/module/components/ChannelDetails/components/roles/RoleItem.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/roles/RoleList.js +38 -0
- package/lib/module/components/ChannelDetails/components/roles/RoleList.js.map +1 -0
- package/lib/module/components/ChannelDetails/components/roles/index.js +26 -0
- package/lib/module/components/ChannelDetails/components/roles/index.js.map +1 -0
- package/lib/module/components/ChannelDetails/hooks/members/index.js +4 -4
- package/lib/module/components/ChannelDetails/hooks/members/index.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/members/{useMemberRoleLabel.js → useMemberRoles.js} +27 -17
- package/lib/module/components/ChannelDetails/hooks/members/useMemberRoles.js.map +1 -0
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsActionItems.js +5 -4
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsActionItems.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js +3 -5
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useEditChannelImage.js +3 -3
- package/lib/module/components/ChannelDetails/hooks/useEditChannelImage.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useFileAttachmentListSections.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useMediaList.js.map +1 -1
- package/lib/module/components/ChannelDetails/hooks/useUserActivityStatus.js.map +1 -1
- package/lib/module/components/UIComponents/EmptyList.js.map +1 -1
- package/lib/module/components/UIComponents/EmptySearchResult.js.map +1 -1
- package/lib/module/components/UIComponents/GenericListLoadingSkeleton.js.map +1 -1
- package/lib/module/components/UIComponents/SearchInput.js.map +1 -1
- package/lib/module/components/UIComponents/SelectionCircle.js.map +1 -1
- package/lib/module/components/ui/Avatar/UserAvatar.js +2 -4
- package/lib/module/components/ui/Avatar/UserAvatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/constants.js +33 -1
- package/lib/module/components/ui/Avatar/constants.js.map +1 -1
- package/lib/module/components/ui/Badge/OnlineIndicator.js +2 -23
- package/lib/module/components/ui/Badge/OnlineIndicator.js.map +1 -1
- package/lib/module/contexts/channelAddMembersContext/ChannelAddMembersContext.js +50 -6
- package/lib/module/contexts/channelAddMembersContext/ChannelAddMembersContext.js.map +1 -1
- package/lib/module/contexts/channelDetailsContext/channelDetailsContext.js +20 -6
- package/lib/module/contexts/channelDetailsContext/channelDetailsContext.js.map +1 -1
- package/lib/module/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js +60 -6
- package/lib/module/contexts/channelEditDetailsContext/ChannelEditDetailsContext.js.map +1 -1
- package/lib/module/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js +4 -3
- package/lib/module/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.js.map +1 -1
- package/lib/module/contexts/channelMediaListContext/ChannelMediaListContext.js +4 -3
- package/lib/module/contexts/channelMediaListContext/ChannelMediaListContext.js.map +1 -1
- package/lib/module/contexts/channelMemberListContext/ChannelMemberListContext.js +4 -3
- package/lib/module/contexts/channelMemberListContext/ChannelMemberListContext.js.map +1 -1
- package/lib/module/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js +4 -3
- package/lib/module/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js.map +1 -1
- package/lib/module/contexts/componentsContext/defaultComponents.js +9 -2
- package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +12 -1
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/hooks/index.js +33 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useCanAddMembersToChannel.js +8 -0
- package/lib/module/hooks/useCanAddMembersToChannel.js.map +1 -0
- package/lib/module/hooks/useCanEditChannel.js +8 -0
- package/lib/module/hooks/useCanEditChannel.js.map +1 -0
- package/lib/module/hooks/useIsDirectChat.js +1 -1
- package/lib/module/hooks/useIsDirectChat.js.map +1 -1
- package/lib/module/state-store/edit-channel-details-store.js +18 -13
- package/lib/module/state-store/edit-channel-details-store.js.map +1 -1
- package/lib/module/state-store/index.js +33 -0
- package/lib/module/state-store/index.js.map +1 -1
- package/lib/module/state-store/selection-store.js.map +1 -1
- package/lib/module/state-store/signal-store.js +29 -0
- package/lib/module/state-store/signal-store.js.map +1 -0
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/ChannelDetails.d.ts +2 -95
- package/lib/typescript/components/ChannelDetails/ChannelDetails.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionItem.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionItem.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionsSection.d.ts +17 -4
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsActionsSection.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsEditButton.d.ts +8 -4
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsEditButton.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsMemberSection.d.ts +7 -4
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsMemberSection.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavHeader.d.ts +3 -4
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavHeader.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavigationSection.d.ts +13 -4
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsNavigationSection.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsProfile.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/ChannelDetailsProfile.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsForm.d.ts +20 -0
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsForm.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormContent.d.ts +3 -0
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormContent.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormHeader.d.ts +7 -0
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsFormHeader.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/ChannelEditImageSheet.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/ChannelEditImageSheet.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelEditName.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/ChannelEditName.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/index.d.ts +4 -2
- package/lib/typescript/components/ChannelDetails/components/index.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/AddMemberSearchResultItem.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/members/AddMemberSearchResultItem.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersButton.d.ts +12 -0
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersButton.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersForm.d.ts +19 -0
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersForm.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/members/{ChannelAddMembers.d.ts → ChannelAddMembersFormContent.d.ts} +3 -6
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersFormContent.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.d.ts +7 -0
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberActionsSheet.d.ts +10 -4
- package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberActionsSheet.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberItem.d.ts +8 -4
- package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberItem.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberList.d.ts +8 -3
- package/lib/typescript/components/ChannelDetails/components/members/ChannelMemberList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/MemberListLoadingSkeleton.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/members/MemberListLoadingSkeleton.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/UserListLoadingSkeleton.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/members/UserListLoadingSkeleton.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/members/index.d.ts +4 -3
- package/lib/typescript/components/ChannelDetails/components/members/index.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/modal/Modal.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/modal/ModalHeader.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/modal/ModalHeader.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentItem.d.ts +0 -5
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentItem.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentList.d.ts +8 -4
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaItem.d.ts +0 -5
- package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaItem.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaList.d.ts +8 -4
- package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.d.ts +0 -2
- package/lib/typescript/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageItem.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageItem.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageList.d.ts +8 -5
- package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/components/roles/RoleItem.d.ts +16 -0
- package/lib/typescript/components/ChannelDetails/components/roles/RoleItem.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/roles/RoleList.d.ts +11 -0
- package/lib/typescript/components/ChannelDetails/components/roles/RoleList.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/components/roles/index.d.ts +3 -0
- package/lib/typescript/components/ChannelDetails/components/roles/index.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/hooks/members/index.d.ts +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/members/index.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoles.d.ts +35 -0
- package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoles.d.ts.map +1 -0
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsActionItems.d.ts +5 -5
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsActionItems.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.d.ts +0 -1
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.d.ts +3 -9
- package/lib/typescript/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useEditChannelImage.d.ts +1 -2
- package/lib/typescript/components/ChannelDetails/hooks/useEditChannelImage.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useFileAttachmentListSections.d.ts +0 -3
- package/lib/typescript/components/ChannelDetails/hooks/useFileAttachmentListSections.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useMediaList.d.ts +0 -4
- package/lib/typescript/components/ChannelDetails/hooks/useMediaList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelDetails/hooks/useUserActivityStatus.d.ts +0 -1
- package/lib/typescript/components/ChannelDetails/hooks/useUserActivityStatus.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/EmptyList.d.ts +0 -3
- package/lib/typescript/components/UIComponents/EmptyList.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/EmptySearchResult.d.ts +0 -3
- package/lib/typescript/components/UIComponents/EmptySearchResult.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/GenericListLoadingSkeleton.d.ts +0 -3
- package/lib/typescript/components/UIComponents/GenericListLoadingSkeleton.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/SearchInput.d.ts +0 -3
- package/lib/typescript/components/UIComponents/SearchInput.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/SelectionCircle.d.ts +0 -3
- package/lib/typescript/components/UIComponents/SelectionCircle.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/UserAvatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/constants.d.ts +10 -1
- package/lib/typescript/components/ui/Avatar/constants.d.ts.map +1 -1
- package/lib/typescript/components/ui/Badge/OnlineIndicator.d.ts.map +1 -1
- package/lib/typescript/contexts/channelAddMembersContext/ChannelAddMembersContext.d.ts +18 -9
- package/lib/typescript/contexts/channelAddMembersContext/ChannelAddMembersContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelDetailsContext/channelDetailsContext.d.ts +14 -15
- package/lib/typescript/contexts/channelDetailsContext/channelDetailsContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelEditDetailsContext/ChannelEditDetailsContext.d.ts +28 -13
- package/lib/typescript/contexts/channelEditDetailsContext/ChannelEditDetailsContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.d.ts +2 -11
- package/lib/typescript/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelMediaListContext/ChannelMediaListContext.d.ts +2 -11
- package/lib/typescript/contexts/channelMediaListContext/ChannelMediaListContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelMemberListContext/ChannelMemberListContext.d.ts +2 -11
- package/lib/typescript/contexts/channelMemberListContext/ChannelMemberListContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.d.ts +2 -11
- package/lib/typescript/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.d.ts.map +1 -1
- package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +21 -14
- package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/ThemeContext.d.ts +12 -1
- package/lib/typescript/contexts/themeContext/ThemeContext.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +12 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +3 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useCanAddMembersToChannel.d.ts +6 -0
- package/lib/typescript/hooks/useCanAddMembersToChannel.d.ts.map +1 -0
- package/lib/typescript/hooks/useCanEditChannel.d.ts +6 -0
- package/lib/typescript/hooks/useCanEditChannel.d.ts.map +1 -0
- package/lib/typescript/hooks/useIsDirectChat.d.ts +1 -1
- package/lib/typescript/hooks/useIsDirectChat.d.ts.map +1 -1
- package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
- package/lib/typescript/state-store/edit-channel-details-store.d.ts +10 -11
- package/lib/typescript/state-store/edit-channel-details-store.d.ts.map +1 -1
- package/lib/typescript/state-store/index.d.ts +3 -0
- package/lib/typescript/state-store/index.d.ts.map +1 -1
- package/lib/typescript/state-store/selection-store.d.ts +0 -6
- package/lib/typescript/state-store/selection-store.d.ts.map +1 -1
- package/lib/typescript/state-store/signal-store.d.ts +9 -0
- package/lib/typescript/state-store/signal-store.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/components/ChannelDetails/ChannelDetails.tsx +14 -160
- package/src/components/ChannelDetails/__tests__/ChannelDetails.test.tsx +51 -38
- package/src/components/ChannelDetails/__tests__/ChannelDetailsActionsSection.test.tsx +1 -1
- package/src/components/ChannelDetails/__tests__/ChannelDetailsEditButton.test.tsx +52 -22
- package/src/components/ChannelDetails/__tests__/ChannelDetailsMemberSection.test.tsx +10 -45
- package/src/components/ChannelDetails/__tests__/ChannelDetailsNavHeader.test.tsx +4 -4
- package/src/components/ChannelDetails/__tests__/ChannelDetailsNavigationSection.test.tsx +6 -3
- package/src/components/ChannelDetails/__tests__/ChannelDetailsProfile.test.tsx +1 -1
- package/src/components/ChannelDetails/__tests__/{ChannelEditDetailsModal.test.tsx → ChannelEditDetailsForm.test.tsx} +30 -35
- package/src/components/ChannelDetails/__tests__/{ChannelEditDetails.test.tsx → ChannelEditDetailsFormContent.test.tsx} +8 -8
- package/src/components/ChannelDetails/__tests__/ChannelEditImageSheet.test.tsx +1 -1
- package/src/components/ChannelDetails/__tests__/ChannelEditName.test.tsx +1 -1
- package/src/components/ChannelDetails/__tests__/members/ChannelAddMembersButton.test.tsx +163 -0
- package/src/components/ChannelDetails/__tests__/members/{ChannelAddMembersModal.test.tsx → ChannelAddMembersForm.test.tsx} +23 -25
- package/src/components/ChannelDetails/__tests__/members/{ChannelAddMembers.test.tsx → ChannelAddMembersFormContent.test.tsx} +5 -3
- package/src/components/ChannelDetails/__tests__/members/ChannelMemberActionsSheet.test.tsx +8 -3
- package/src/components/ChannelDetails/__tests__/members/ChannelMemberItem.test.tsx +11 -11
- package/src/components/ChannelDetails/__tests__/members/ChannelMemberList.test.tsx +35 -21
- package/src/components/ChannelDetails/__tests__/members/useMemberRoles.test.tsx +122 -0
- package/src/components/ChannelDetails/__tests__/useChannelDetailsActionItems.test.tsx +13 -9
- package/src/components/ChannelDetails/__tests__/useEditChannelImage.test.tsx +10 -3
- package/src/components/ChannelDetails/components/ChannelDetailsActionItem.tsx +0 -3
- package/src/components/ChannelDetails/components/ChannelDetailsActionsSection.tsx +26 -6
- package/src/components/ChannelDetails/components/ChannelDetailsEditButton.tsx +34 -18
- package/src/components/ChannelDetails/components/ChannelDetailsMemberSection.tsx +51 -59
- package/src/components/ChannelDetails/components/ChannelDetailsNavHeader.tsx +8 -5
- package/src/components/ChannelDetails/components/ChannelDetailsNavigationSection.tsx +18 -5
- package/src/components/ChannelDetails/components/ChannelDetailsProfile.tsx +0 -3
- package/src/components/ChannelDetails/components/ChannelEditDetailsForm.tsx +48 -0
- package/src/components/ChannelDetails/components/{ChannelEditDetails.tsx → ChannelEditDetailsFormContent.tsx} +1 -4
- package/src/components/ChannelDetails/components/ChannelEditDetailsFormHeader.tsx +65 -0
- package/src/components/ChannelDetails/components/ChannelEditImageSheet.tsx +0 -3
- package/src/components/ChannelDetails/components/ChannelEditName.tsx +0 -3
- package/src/components/ChannelDetails/components/__tests__/navigation-section/FileAttachmentList.test.tsx +1 -2
- package/src/components/ChannelDetails/components/__tests__/navigation-section/MediaList.test.tsx +2 -2
- package/src/components/ChannelDetails/components/__tests__/navigation-section/PinnedMessageList.test.tsx +1 -2
- package/src/components/ChannelDetails/components/index.ts +4 -2
- package/src/components/ChannelDetails/components/members/AddMemberSearchResultItem.tsx +0 -3
- package/src/components/ChannelDetails/components/members/ChannelAddMembersButton.tsx +83 -0
- package/src/components/ChannelDetails/components/members/ChannelAddMembersForm.tsx +41 -0
- package/src/components/ChannelDetails/components/members/{ChannelAddMembers.tsx → ChannelAddMembersFormContent.tsx} +4 -5
- package/src/components/ChannelDetails/components/members/ChannelAddMembersFormHeader.tsx +75 -0
- package/src/components/ChannelDetails/components/members/ChannelMemberActionsSheet.tsx +17 -5
- package/src/components/ChannelDetails/components/members/ChannelMemberItem.tsx +16 -29
- package/src/components/ChannelDetails/components/members/ChannelMemberList.tsx +26 -19
- package/src/components/ChannelDetails/components/members/MemberListLoadingSkeleton.tsx +0 -3
- package/src/components/ChannelDetails/components/members/UserListLoadingSkeleton.tsx +0 -3
- package/src/components/ChannelDetails/components/members/index.ts +4 -3
- package/src/components/ChannelDetails/components/modal/Modal.tsx +19 -6
- package/src/components/ChannelDetails/components/modal/ModalHeader.tsx +0 -3
- package/src/components/ChannelDetails/components/navigation-section/FileAttachmentItem.tsx +0 -5
- package/src/components/ChannelDetails/components/navigation-section/FileAttachmentList.tsx +11 -7
- package/src/components/ChannelDetails/components/navigation-section/FileAttachmentListLoadingSkeleton.tsx +0 -3
- package/src/components/ChannelDetails/components/navigation-section/FileAttachmentListSectionHeader.tsx +0 -3
- package/src/components/ChannelDetails/components/navigation-section/MediaItem.tsx +0 -5
- package/src/components/ChannelDetails/components/navigation-section/MediaList.tsx +16 -7
- package/src/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.tsx +0 -2
- package/src/components/ChannelDetails/components/navigation-section/PinnedMessageItem.tsx +0 -3
- package/src/components/ChannelDetails/components/navigation-section/PinnedMessageList.tsx +11 -7
- package/src/components/ChannelDetails/components/navigation-section/PinnedMessageListLoadingSkeleton.tsx +0 -3
- package/src/components/ChannelDetails/components/roles/RoleItem.tsx +74 -0
- package/src/components/ChannelDetails/components/roles/RoleList.tsx +51 -0
- package/src/components/ChannelDetails/components/roles/__tests__/RoleItem.test.tsx +58 -0
- package/src/components/ChannelDetails/components/roles/__tests__/RoleList.test.tsx +31 -0
- package/src/components/ChannelDetails/components/roles/index.ts +2 -0
- package/src/components/ChannelDetails/hooks/members/index.ts +1 -1
- package/src/components/ChannelDetails/hooks/members/useMemberRoles.ts +63 -0
- package/src/components/ChannelDetails/hooks/useChannelDetailsActionItems.ts +9 -5
- package/src/components/ChannelDetails/hooks/useChannelDetailsMemberStatusText.ts +0 -1
- package/src/components/ChannelDetails/hooks/useChannelDetailsMembersPreview.ts +0 -3
- package/src/components/ChannelDetails/hooks/useChannelDetailsNavigationItems.ts +5 -11
- package/src/components/ChannelDetails/hooks/useEditChannelImage.ts +3 -4
- package/src/components/ChannelDetails/hooks/useFileAttachmentListSections.ts +0 -3
- package/src/components/ChannelDetails/hooks/useMediaList.ts +0 -4
- package/src/components/ChannelDetails/hooks/useUserActivityStatus.ts +0 -1
- package/src/components/UIComponents/EmptyList.tsx +0 -3
- package/src/components/UIComponents/EmptySearchResult.tsx +0 -3
- package/src/components/UIComponents/GenericListLoadingSkeleton.tsx +0 -3
- package/src/components/UIComponents/SearchInput.tsx +0 -3
- package/src/components/UIComponents/SelectionCircle.tsx +0 -3
- package/src/components/ui/Avatar/UserAvatar.tsx +8 -4
- package/src/components/ui/Avatar/constants.ts +48 -1
- package/src/components/ui/Badge/OnlineIndicator.tsx +10 -24
- package/src/contexts/channelAddMembersContext/ChannelAddMembersContext.tsx +76 -12
- package/src/contexts/channelDetailsContext/channelDetailsContext.tsx +24 -19
- package/src/contexts/channelEditDetailsContext/ChannelEditDetailsContext.tsx +101 -18
- package/src/contexts/channelFileAttachmentListContext/ChannelFileAttachmentListContext.tsx +5 -13
- package/src/contexts/channelMediaListContext/ChannelMediaListContext.tsx +5 -13
- package/src/contexts/channelMemberListContext/ChannelMemberListContext.tsx +5 -13
- package/src/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.tsx +5 -13
- package/src/contexts/componentsContext/defaultComponents.ts +18 -4
- package/src/contexts/themeContext/utils/theme.ts +24 -2
- package/src/hooks/__tests__/useCanAddMembersToChannel.test.tsx +43 -0
- package/src/hooks/__tests__/useCanEditChannel.test.tsx +43 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useCanAddMembersToChannel.ts +9 -0
- package/src/hooks/useCanEditChannel.ts +9 -0
- package/src/hooks/useIsDirectChat.ts +2 -2
- package/src/state-store/__tests__/edit-channel-details-store.test.ts +72 -17
- package/src/state-store/__tests__/signal-store.test.ts +35 -0
- package/src/state-store/edit-channel-details-store.ts +22 -17
- package/src/state-store/index.ts +3 -0
- package/src/state-store/selection-store.ts +0 -6
- package/src/state-store/signal-store.ts +18 -0
- package/src/version.json +1 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetails.js.map +0 -1
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsModal.js +0 -152
- package/lib/commonjs/components/ChannelDetails/components/ChannelEditDetailsModal.js.map +0 -1
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembers.js.map +0 -1
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersModal.js +0 -133
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAddMembersModal.js.map +0 -1
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAllMembersModal.js +0 -64
- package/lib/commonjs/components/ChannelDetails/components/members/ChannelAllMembersModal.js.map +0 -1
- package/lib/commonjs/components/ChannelDetails/hooks/members/useMemberRoleLabel.js.map +0 -1
- package/lib/module/components/ChannelDetails/components/ChannelEditDetails.js.map +0 -1
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsModal.js +0 -152
- package/lib/module/components/ChannelDetails/components/ChannelEditDetailsModal.js.map +0 -1
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembers.js.map +0 -1
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersModal.js +0 -133
- package/lib/module/components/ChannelDetails/components/members/ChannelAddMembersModal.js.map +0 -1
- package/lib/module/components/ChannelDetails/components/members/ChannelAllMembersModal.js +0 -64
- package/lib/module/components/ChannelDetails/components/members/ChannelAllMembersModal.js.map +0 -1
- package/lib/module/components/ChannelDetails/hooks/members/useMemberRoleLabel.js.map +0 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetails.d.ts +0 -6
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetails.d.ts.map +0 -1
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsModal.d.ts +0 -18
- package/lib/typescript/components/ChannelDetails/components/ChannelEditDetailsModal.d.ts.map +0 -1
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembers.d.ts.map +0 -1
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersModal.d.ts +0 -18
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAddMembersModal.d.ts.map +0 -1
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAllMembersModal.d.ts +0 -17
- package/lib/typescript/components/ChannelDetails/components/members/ChannelAllMembersModal.d.ts.map +0 -1
- package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoleLabel.d.ts +0 -10
- package/lib/typescript/components/ChannelDetails/hooks/members/useMemberRoleLabel.d.ts.map +0 -1
- package/src/components/ChannelDetails/__tests__/members/ChannelAllMembersModal.test.tsx +0 -159
- package/src/components/ChannelDetails/__tests__/members/useMemberRoleLabel.test.tsx +0 -130
- package/src/components/ChannelDetails/components/ChannelEditDetailsModal.tsx +0 -152
- package/src/components/ChannelDetails/components/members/ChannelAddMembersModal.tsx +0 -126
- package/src/components/ChannelDetails/components/members/ChannelAllMembersModal.tsx +0 -71
- package/src/components/ChannelDetails/hooks/members/useMemberRoleLabel.ts +0 -32
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { useChannelDetailsContext } from '../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
4
|
+
import { ChannelEditDetailsProvider } from '../../../contexts/channelEditDetailsContext/ChannelEditDetailsContext';
|
|
5
|
+
import { useComponentsContext } from '../../../contexts/componentsContext/ComponentsContext';
|
|
6
|
+
import type { GlobalFileUploadRequest } from '../../../types/types';
|
|
7
|
+
import { NotificationList } from '../../Notifications/NotificationList';
|
|
8
|
+
|
|
9
|
+
export type ChannelEditDetailsFormProps = {
|
|
10
|
+
/** Called when the form is dismissed via the close button or after a successful save. */
|
|
11
|
+
onClose: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Compress image with quality (from 0 to 1, where 1 is best quality) applied
|
|
14
|
+
* to the channel image picked during editing.
|
|
15
|
+
*/
|
|
16
|
+
compressImageQuality?: number;
|
|
17
|
+
/** Override the upload request used to upload the channel image. */
|
|
18
|
+
doFileUploadRequest?: GlobalFileUploadRequest;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Renders the channel edit details form: a header with a confirm action, the
|
|
23
|
+
* editable fields, and the notification list. Wrap-free — mount it wherever the
|
|
24
|
+
* edit UI should appear (e.g. inside a modal or a navigation screen).
|
|
25
|
+
*/
|
|
26
|
+
export const ChannelEditDetailsForm = ({
|
|
27
|
+
compressImageQuality,
|
|
28
|
+
doFileUploadRequest,
|
|
29
|
+
onClose,
|
|
30
|
+
}: ChannelEditDetailsFormProps) => {
|
|
31
|
+
const { channel } = useChannelDetailsContext();
|
|
32
|
+
const { ChannelEditDetailsFormContent, ChannelEditDetailsFormHeader } = useComponentsContext();
|
|
33
|
+
|
|
34
|
+
if (!channel?.cid) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<ChannelEditDetailsProvider
|
|
40
|
+
compressImageQuality={compressImageQuality}
|
|
41
|
+
doFileUploadRequest={doFileUploadRequest}
|
|
42
|
+
>
|
|
43
|
+
<ChannelEditDetailsFormHeader onClose={onClose} />
|
|
44
|
+
<ChannelEditDetailsFormContent />
|
|
45
|
+
<NotificationList />
|
|
46
|
+
</ChannelEditDetailsProvider>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
@@ -18,10 +18,7 @@ const selector = (state: EditChannelDetailsState) => ({
|
|
|
18
18
|
updatedImage: state.updatedImage,
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
* @experimental This component is experimental and is subject to change.
|
|
23
|
-
*/
|
|
24
|
-
export const ChannelEditDetails = () => {
|
|
21
|
+
export const ChannelEditDetailsFormContent = () => {
|
|
25
22
|
const { channel } = useChannelDetailsContext();
|
|
26
23
|
const { store } = useChannelEditDetailsContext();
|
|
27
24
|
const { ChannelEditImageSheet, ChannelEditName } = useComponentsContext();
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { ActivityIndicator, Keyboard } from 'react-native';
|
|
4
|
+
|
|
5
|
+
import { ModalHeader } from './modal/ModalHeader';
|
|
6
|
+
|
|
7
|
+
import { useChannelEditDetailsContext } from '../../../contexts/channelEditDetailsContext/ChannelEditDetailsContext';
|
|
8
|
+
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
9
|
+
import { useStableCallback } from '../../../hooks/useStableCallback';
|
|
10
|
+
import { Checkmark } from '../../../icons/checkmark-1';
|
|
11
|
+
import { useAreChannelDetailsEdited } from '../../../state-store/edit-channel-details-store';
|
|
12
|
+
import { Button } from '../../ui/Button/Button';
|
|
13
|
+
|
|
14
|
+
const loadingIconStyle = { margin: 0 };
|
|
15
|
+
const LoadingButtonIcon = ({ height, width }: { height?: number; width?: number }) => (
|
|
16
|
+
<ActivityIndicator style={{ ...loadingIconStyle, ...{ height, width } }} />
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export type ChannelEditDetailsFormHeaderProps = {
|
|
20
|
+
/** Called when the form is dismissed via the close button or after a successful save. */
|
|
21
|
+
onClose: () => void;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const ChannelEditDetailsFormHeader = ({ onClose }: ChannelEditDetailsFormHeaderProps) => {
|
|
25
|
+
const { store, submit } = useChannelEditDetailsContext();
|
|
26
|
+
const { t } = useTranslationContext();
|
|
27
|
+
const [saving, setSaving] = useState(false);
|
|
28
|
+
const channelDetailsEdited = useAreChannelDetailsEdited(store);
|
|
29
|
+
const confirmEnabled = channelDetailsEdited && !saving;
|
|
30
|
+
|
|
31
|
+
const handleConfirm = useStableCallback(async () => {
|
|
32
|
+
if (!confirmEnabled) return;
|
|
33
|
+
Keyboard.dismiss();
|
|
34
|
+
setSaving(true);
|
|
35
|
+
try {
|
|
36
|
+
await submit();
|
|
37
|
+
onClose();
|
|
38
|
+
} catch {
|
|
39
|
+
// failure notification already surfaced by the channel action
|
|
40
|
+
} finally {
|
|
41
|
+
setSaving(false);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<ModalHeader
|
|
47
|
+
onClose={onClose}
|
|
48
|
+
rightAction={
|
|
49
|
+
<Button
|
|
50
|
+
accessibilityLabel={t('a11y/Confirm edit channel')}
|
|
51
|
+
accessibilityRole='button'
|
|
52
|
+
accessibilityState={{ busy: saving, disabled: !confirmEnabled }}
|
|
53
|
+
disabled={!confirmEnabled}
|
|
54
|
+
iconOnly
|
|
55
|
+
LeadingIcon={saving ? LoadingButtonIcon : Checkmark}
|
|
56
|
+
onPress={handleConfirm}
|
|
57
|
+
testID='channel-details-edit-confirm-button'
|
|
58
|
+
type='solid'
|
|
59
|
+
variant='primary'
|
|
60
|
+
/>
|
|
61
|
+
}
|
|
62
|
+
title={t('Edit')}
|
|
63
|
+
/>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
@@ -165,9 +165,6 @@ const ChannelEditImageSheetInner = () => {
|
|
|
165
165
|
);
|
|
166
166
|
};
|
|
167
167
|
|
|
168
|
-
/**
|
|
169
|
-
* @experimental This component is experimental and is subject to change.
|
|
170
|
-
*/
|
|
171
168
|
export const ChannelEditImageSheet = ({ onClose, visible }: ChannelEditImageSheetProps) => (
|
|
172
169
|
<BottomSheetModal enableDynamicSizing onClose={onClose} visible={visible}>
|
|
173
170
|
<ChannelEditImageSheetInner />
|
|
@@ -11,9 +11,6 @@ const selectCurrentName = (state: EditChannelDetailsState) => ({
|
|
|
11
11
|
currentName: state.currentName,
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* @experimental This component is experimental and is subject to change.
|
|
16
|
-
*/
|
|
17
14
|
export const ChannelEditName = () => {
|
|
18
15
|
const { store } = useChannelEditDetailsContext();
|
|
19
16
|
const { t } = useTranslationContext();
|
|
@@ -81,7 +81,6 @@ jest.mock(
|
|
|
81
81
|
return children;
|
|
82
82
|
},
|
|
83
83
|
useChannelFileAttachmentListContext: () => ({
|
|
84
|
-
channel: mockChannel,
|
|
85
84
|
searchSource: mockCurrentSearchSource,
|
|
86
85
|
}),
|
|
87
86
|
}),
|
|
@@ -135,7 +134,7 @@ const tree = (
|
|
|
135
134
|
<ThemeProvider theme={defaultTheme}>
|
|
136
135
|
<TranslationProvider value={props.translators ?? fakeTranslators}>
|
|
137
136
|
<ChannelDetailsContextProvider
|
|
138
|
-
|
|
137
|
+
channel={mockChannel as unknown as ChannelDetailsContextValue['channel']}
|
|
139
138
|
>
|
|
140
139
|
<FileAttachmentList
|
|
141
140
|
additionalSectionListProps={props.additionalSectionListProps as never}
|
package/src/components/ChannelDetails/components/__tests__/navigation-section/MediaList.test.tsx
CHANGED
|
@@ -105,7 +105,7 @@ jest.mock('../../../../../contexts/channelMediaListContext/ChannelMediaListConte
|
|
|
105
105
|
mockProviderProbe.push({ channel: providedChannel });
|
|
106
106
|
return ReactLib.createElement(
|
|
107
107
|
actual.ChannelMediaListContext.Provider,
|
|
108
|
-
{ value: {
|
|
108
|
+
{ value: { searchSource: mockCurrentSearchSource } },
|
|
109
109
|
children,
|
|
110
110
|
);
|
|
111
111
|
},
|
|
@@ -165,7 +165,7 @@ const tree = (searchSource: FakeSearchSource, props: { additionalFlatListProps?:
|
|
|
165
165
|
}}
|
|
166
166
|
>
|
|
167
167
|
<ChannelDetailsContextProvider
|
|
168
|
-
|
|
168
|
+
channel={mockChannel as unknown as ChannelDetailsContextValue['channel']}
|
|
169
169
|
>
|
|
170
170
|
<MediaList additionalFlatListProps={props.additionalFlatListProps as never} />
|
|
171
171
|
</ChannelDetailsContextProvider>
|
|
@@ -74,7 +74,6 @@ jest.mock(
|
|
|
74
74
|
return children;
|
|
75
75
|
},
|
|
76
76
|
useChannelPinnedMessageListContext: () => ({
|
|
77
|
-
channel: mockChannel,
|
|
78
77
|
searchSource: mockCurrentSearchSource,
|
|
79
78
|
}),
|
|
80
79
|
}),
|
|
@@ -148,7 +147,7 @@ const tree = (searchSource: FakeSearchSource, props: { additionalFlatListProps?:
|
|
|
148
147
|
}}
|
|
149
148
|
>
|
|
150
149
|
<ChannelDetailsContextProvider
|
|
151
|
-
|
|
150
|
+
channel={mockChannel as unknown as ChannelDetailsContextValue['channel']}
|
|
152
151
|
>
|
|
153
152
|
<PinnedMessageList additionalFlatListProps={props.additionalFlatListProps as never} />
|
|
154
153
|
</ChannelDetailsContextProvider>
|
|
@@ -5,10 +5,12 @@ export * from './ChannelDetailsNavigationSection';
|
|
|
5
5
|
export * from './ChannelDetailsProfile';
|
|
6
6
|
export * from './ChannelDetailsEditButton';
|
|
7
7
|
export * from './ChannelDetailsNavHeader';
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
8
|
+
export * from './ChannelEditDetailsForm';
|
|
9
|
+
export * from './ChannelEditDetailsFormContent';
|
|
10
|
+
export * from './ChannelEditDetailsFormHeader';
|
|
10
11
|
export * from './ChannelEditImageSheet';
|
|
11
12
|
export * from './ChannelEditName';
|
|
12
13
|
export * from './ChannelDetailsEditButton';
|
|
13
14
|
export * from './members';
|
|
14
15
|
export * from './navigation-section';
|
|
16
|
+
export * from './roles';
|
|
@@ -17,9 +17,6 @@ export type AddMemberSearchResultItemProps = {
|
|
|
17
17
|
user: UserResponse;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* @experimental This component is experimental and is subject to change.
|
|
22
|
-
*/
|
|
23
20
|
export const AddMemberSearchResultItem = ({ onPress, user }: AddMemberSearchResultItemProps) => {
|
|
24
21
|
const { t } = useTranslationContext();
|
|
25
22
|
const { selectionStore } = useChannelAddMembersContext();
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { useChannelDetailsContext } from '../../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
4
|
+
import { useComponentsContext } from '../../../../contexts/componentsContext/ComponentsContext';
|
|
5
|
+
import { useTranslationContext } from '../../../../contexts/translationContext/TranslationContext';
|
|
6
|
+
import { useCanAddMembersToChannel } from '../../../../hooks/useCanAddMembersToChannel';
|
|
7
|
+
import { UserAdd } from '../../../../icons/user-add';
|
|
8
|
+
import { Button, ButtonProps } from '../../../ui/Button/Button';
|
|
9
|
+
import { ChannelDetailsModal } from '../modal/Modal';
|
|
10
|
+
|
|
11
|
+
export type ChannelAddMembersButtonProps = {
|
|
12
|
+
/** Override the default behavior, which opens the Add-members modal. */
|
|
13
|
+
onPress?: () => void;
|
|
14
|
+
/** Style forwarded to the underlying Button. */
|
|
15
|
+
style?: ButtonProps['style'];
|
|
16
|
+
testID?: string;
|
|
17
|
+
variant?: 'icon' | 'text';
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const ChannelAddMembersButton = ({
|
|
21
|
+
onPress,
|
|
22
|
+
style,
|
|
23
|
+
testID,
|
|
24
|
+
variant = 'text',
|
|
25
|
+
}: ChannelAddMembersButtonProps) => {
|
|
26
|
+
const { channel } = useChannelDetailsContext();
|
|
27
|
+
const { ChannelAddMembersForm } = useComponentsContext();
|
|
28
|
+
const { t } = useTranslationContext();
|
|
29
|
+
const isVisible = useCanAddMembersToChannel(channel);
|
|
30
|
+
const [isAddMembersVisible, setAddMembersVisible] = useState(false);
|
|
31
|
+
|
|
32
|
+
// The built-in modal is only used by the default press behavior. When a custom handler
|
|
33
|
+
// (onPress prop) is provided, the consumer owns the modal, so we must not render the built-in one.
|
|
34
|
+
const usesDefaultModal = !onPress;
|
|
35
|
+
|
|
36
|
+
const handlePress = useCallback(() => {
|
|
37
|
+
if (onPress) {
|
|
38
|
+
onPress();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
setAddMembersVisible(true);
|
|
42
|
+
}, [onPress]);
|
|
43
|
+
|
|
44
|
+
const handleClose = useCallback(() => setAddMembersVisible(false), []);
|
|
45
|
+
|
|
46
|
+
if (!isVisible) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<>
|
|
52
|
+
{variant === 'icon' ? (
|
|
53
|
+
<Button
|
|
54
|
+
accessibilityLabelKey='a11y/Add members'
|
|
55
|
+
iconOnly
|
|
56
|
+
LeadingIcon={UserAdd}
|
|
57
|
+
onPress={handlePress}
|
|
58
|
+
size='md'
|
|
59
|
+
style={style}
|
|
60
|
+
testID={testID}
|
|
61
|
+
type='outline'
|
|
62
|
+
variant='secondary'
|
|
63
|
+
/>
|
|
64
|
+
) : (
|
|
65
|
+
<Button
|
|
66
|
+
accessibilityLabelKey='a11y/Add members'
|
|
67
|
+
label={t('Add')}
|
|
68
|
+
onPress={handlePress}
|
|
69
|
+
size='sm'
|
|
70
|
+
style={style}
|
|
71
|
+
testID={testID}
|
|
72
|
+
type='outline'
|
|
73
|
+
variant='secondary'
|
|
74
|
+
/>
|
|
75
|
+
)}
|
|
76
|
+
{usesDefaultModal ? (
|
|
77
|
+
<ChannelDetailsModal onClose={handleClose} visible={isAddMembersVisible}>
|
|
78
|
+
<ChannelAddMembersForm onClose={handleClose} />
|
|
79
|
+
</ChannelDetailsModal>
|
|
80
|
+
) : null}
|
|
81
|
+
</>
|
|
82
|
+
);
|
|
83
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { UserSearchSource } from 'stream-chat';
|
|
4
|
+
|
|
5
|
+
import { ChannelAddMembersProvider } from '../../../../contexts/channelAddMembersContext/ChannelAddMembersContext';
|
|
6
|
+
import { useChannelDetailsContext } from '../../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
7
|
+
import { useComponentsContext } from '../../../../contexts/componentsContext/ComponentsContext';
|
|
8
|
+
import { NotificationList } from '../../../Notifications/NotificationList';
|
|
9
|
+
|
|
10
|
+
export type ChannelAddMembersFormProps = {
|
|
11
|
+
/** Called when the form is dismissed via the close button or after members are added. */
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
/**
|
|
14
|
+
* A custom `UserSearchSource` used to query and paginate the users to add.
|
|
15
|
+
* Overrides the source the provider creates by default (pre-configured to
|
|
16
|
+
* autocomplete by `name`).
|
|
17
|
+
*/
|
|
18
|
+
searchSource?: UserSearchSource;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Renders the add-members form: a header with a confirm action, the user search
|
|
23
|
+
* list, and the notification list. Mount it wherever the add-members UI should
|
|
24
|
+
* appear (e.g. inside a modal or a navigation screen).
|
|
25
|
+
*/
|
|
26
|
+
export const ChannelAddMembersForm = ({ onClose, searchSource }: ChannelAddMembersFormProps) => {
|
|
27
|
+
const { channel } = useChannelDetailsContext();
|
|
28
|
+
const { ChannelAddMembersFormContent, ChannelAddMembersFormHeader } = useComponentsContext();
|
|
29
|
+
|
|
30
|
+
if (!channel?.cid) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<ChannelAddMembersProvider searchSource={searchSource}>
|
|
36
|
+
<ChannelAddMembersFormHeader onClose={onClose} />
|
|
37
|
+
<ChannelAddMembersFormContent />
|
|
38
|
+
<NotificationList />
|
|
39
|
+
</ChannelAddMembersProvider>
|
|
40
|
+
);
|
|
41
|
+
};
|
|
@@ -17,7 +17,7 @@ import { useNotificationApi } from '../../../Notifications/hooks/useNotification
|
|
|
17
17
|
import { EmptySearchResult } from '../../../UIComponents/EmptySearchResult';
|
|
18
18
|
import { SearchInput } from '../../../UIComponents/SearchInput';
|
|
19
19
|
|
|
20
|
-
export type
|
|
20
|
+
export type ChannelAddMembersFormContentProps = {
|
|
21
21
|
/**
|
|
22
22
|
* Besides the existing default behavior of the user list, you can attach
|
|
23
23
|
* additional props to the underlying React Native FlatList.
|
|
@@ -38,10 +38,9 @@ const listStateSelector = (state: SearchSourceState<UserResponse>) => {
|
|
|
38
38
|
};
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
export const ChannelAddMembers = ({ additionalFlatListProps }: ChannelAddMembersProps) => {
|
|
41
|
+
export const ChannelAddMembersFormContent = ({
|
|
42
|
+
additionalFlatListProps,
|
|
43
|
+
}: ChannelAddMembersFormContentProps) => {
|
|
45
44
|
const { t } = useTranslationContext();
|
|
46
45
|
const styles = useStyles();
|
|
47
46
|
const {
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { ActivityIndicator } from 'react-native';
|
|
4
|
+
|
|
5
|
+
import { useChannelAddMembersContext } from '../../../../contexts/channelAddMembersContext/ChannelAddMembersContext';
|
|
6
|
+
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
7
|
+
import { useTranslationContext } from '../../../../contexts/translationContext/TranslationContext';
|
|
8
|
+
import { useStableCallback } from '../../../../hooks/useStableCallback';
|
|
9
|
+
import { Checkmark } from '../../../../icons/checkmark-1';
|
|
10
|
+
import { useIsSelectionEmpty } from '../../../../state-store/selection-store';
|
|
11
|
+
import { Button } from '../../../ui/Button/Button';
|
|
12
|
+
import { ModalHeader } from '../modal/ModalHeader';
|
|
13
|
+
|
|
14
|
+
const loadingIconStyle = { margin: 0 };
|
|
15
|
+
const LoadingButtonIcon = ({ height, width }: { height?: number; width?: number }) => (
|
|
16
|
+
<ActivityIndicator style={{ ...loadingIconStyle, ...{ height, width } }} />
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export type ChannelAddMembersFormHeaderProps = {
|
|
20
|
+
/** Called when the form is dismissed via the close button or after members are added. */
|
|
21
|
+
onClose: () => void;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const ChannelAddMembersFormHeader = ({ onClose }: ChannelAddMembersFormHeaderProps) => {
|
|
25
|
+
const { selectionStore, submit } = useChannelAddMembersContext();
|
|
26
|
+
const { t } = useTranslationContext();
|
|
27
|
+
const {
|
|
28
|
+
theme: {
|
|
29
|
+
channelDetails: {
|
|
30
|
+
memberSection: { confirmButton: confirmButtonOverride },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
} = useTheme();
|
|
34
|
+
const isSelectionEmpty = useIsSelectionEmpty(selectionStore);
|
|
35
|
+
const [addingMembers, setAddingMembers] = useState(false);
|
|
36
|
+
const confirmEnabled = !isSelectionEmpty && !addingMembers;
|
|
37
|
+
|
|
38
|
+
const handleClose = useCallback(() => {
|
|
39
|
+
onClose();
|
|
40
|
+
}, [onClose]);
|
|
41
|
+
|
|
42
|
+
const handleConfirm = useStableCallback(async () => {
|
|
43
|
+
setAddingMembers(true);
|
|
44
|
+
try {
|
|
45
|
+
await submit();
|
|
46
|
+
onClose();
|
|
47
|
+
} catch {
|
|
48
|
+
// failure notification already surfaced by the channel action
|
|
49
|
+
} finally {
|
|
50
|
+
setAddingMembers(false);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<ModalHeader
|
|
56
|
+
onClose={handleClose}
|
|
57
|
+
rightAction={
|
|
58
|
+
<Button
|
|
59
|
+
accessibilityLabel={t('a11y/Confirm add members')}
|
|
60
|
+
accessibilityRole='button'
|
|
61
|
+
accessibilityState={{ busy: addingMembers, disabled: !confirmEnabled }}
|
|
62
|
+
disabled={!confirmEnabled}
|
|
63
|
+
variant='primary'
|
|
64
|
+
onPress={handleConfirm}
|
|
65
|
+
type='solid'
|
|
66
|
+
LeadingIcon={addingMembers ? LoadingButtonIcon : Checkmark}
|
|
67
|
+
iconOnly
|
|
68
|
+
testID='channel-details-add-members-confirm-button'
|
|
69
|
+
style={confirmButtonOverride}
|
|
70
|
+
/>
|
|
71
|
+
}
|
|
72
|
+
title={t('Add Members')}
|
|
73
|
+
/>
|
|
74
|
+
);
|
|
75
|
+
};
|
|
@@ -8,6 +8,7 @@ import { useComponentsContext } from '../../../../contexts/componentsContext/Com
|
|
|
8
8
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
9
9
|
import {
|
|
10
10
|
ChannelMemberActionItem,
|
|
11
|
+
GetChannelMemberActionItems,
|
|
11
12
|
useChannelMemberActionItems,
|
|
12
13
|
} from '../../../../hooks/actions/useChannelMemberActionItems';
|
|
13
14
|
import { BottomSheetModal } from '../../../UIComponents/BottomSheetModal';
|
|
@@ -17,15 +18,24 @@ export type ChannelMemberActionsSheetProps = {
|
|
|
17
18
|
member: ChannelMemberResponse;
|
|
18
19
|
onClose: () => void;
|
|
19
20
|
visible: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Customize the list of action items rendered in the per-member actions bottom sheet.
|
|
23
|
+
*
|
|
24
|
+
* Receives the default items the SDK produces for the tapped member (e.g. `muteUser`,
|
|
25
|
+
* `block`) and returns the final list to render. Use this to filter, reorder, replace,
|
|
26
|
+
* or add items — for example, to inject a "Send Direct Message" action in your app.
|
|
27
|
+
*/
|
|
28
|
+
getChannelMemberActionItems?: GetChannelMemberActionItems;
|
|
20
29
|
};
|
|
21
30
|
|
|
22
31
|
const keyExtractor = (item: ChannelMemberActionItem) => item.id;
|
|
23
32
|
|
|
24
33
|
const ChannelMemberActionsSheetInner = ({
|
|
34
|
+
getChannelMemberActionItems,
|
|
25
35
|
member,
|
|
26
36
|
onClose,
|
|
27
37
|
}: Omit<ChannelMemberActionsSheetProps, 'visible'>) => {
|
|
28
|
-
const { channel
|
|
38
|
+
const { channel } = useChannelDetailsContext();
|
|
29
39
|
const { ChannelDetailsActionItem, ChannelMemberItem } = useComponentsContext();
|
|
30
40
|
const {
|
|
31
41
|
theme: {
|
|
@@ -79,16 +89,18 @@ const ChannelMemberActionsSheetInner = ({
|
|
|
79
89
|
);
|
|
80
90
|
};
|
|
81
91
|
|
|
82
|
-
/**
|
|
83
|
-
* @experimental This component is experimental and is subject to change.
|
|
84
|
-
*/
|
|
85
92
|
export const ChannelMemberActionsSheet = ({
|
|
93
|
+
getChannelMemberActionItems,
|
|
86
94
|
member,
|
|
87
95
|
onClose,
|
|
88
96
|
visible,
|
|
89
97
|
}: ChannelMemberActionsSheetProps) => (
|
|
90
98
|
<BottomSheetModal enableDynamicSizing onClose={onClose} visible={visible}>
|
|
91
|
-
<ChannelMemberActionsSheetInner
|
|
99
|
+
<ChannelMemberActionsSheetInner
|
|
100
|
+
getChannelMemberActionItems={getChannelMemberActionItems}
|
|
101
|
+
member={member}
|
|
102
|
+
onClose={onClose}
|
|
103
|
+
/>
|
|
92
104
|
</BottomSheetModal>
|
|
93
105
|
);
|
|
94
106
|
|
|
@@ -5,19 +5,26 @@ import type { ChannelMemberResponse } from 'stream-chat';
|
|
|
5
5
|
|
|
6
6
|
import { composeAccessibilityLabel } from '../../../../a11y/a11yUtils';
|
|
7
7
|
import { useChatContext } from '../../../../contexts/chatContext/ChatContext';
|
|
8
|
+
import { useComponentsContext } from '../../../../contexts/componentsContext/ComponentsContext';
|
|
8
9
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
9
10
|
import { useTranslationContext } from '../../../../contexts/translationContext/TranslationContext';
|
|
10
11
|
import { Mute } from '../../../../icons';
|
|
11
12
|
import { primitives } from '../../../../theme';
|
|
12
13
|
import { useUserMuteActive } from '../../../Message/hooks/useUserMuteActive';
|
|
13
14
|
import { UserAvatar } from '../../../ui/Avatar/UserAvatar';
|
|
14
|
-
import {
|
|
15
|
+
import { GetMemberRoles, useMemberRoles } from '../../hooks/members/useMemberRoles';
|
|
15
16
|
import { useUserActivityStatus } from '../../hooks/useUserActivityStatus';
|
|
16
17
|
|
|
17
18
|
export type ChannelMemberItemSize = 'sm' | 'lg';
|
|
18
19
|
|
|
19
20
|
export type ChannelMemberItemProps = {
|
|
20
21
|
member: ChannelMemberResponse;
|
|
22
|
+
/**
|
|
23
|
+
* Override the roles shown next to the member. Receives `{ channel, defaultRoleLabels, member, t }`
|
|
24
|
+
* and returns an array of `{ key, label }` (or an empty array to render none). Defaults to the
|
|
25
|
+
* built-in Owner / Admin / Moderator logic, returning every role that applies.
|
|
26
|
+
*/
|
|
27
|
+
getMemberRoles?: GetMemberRoles;
|
|
21
28
|
onPress?: (member: ChannelMemberResponse) => void;
|
|
22
29
|
/**
|
|
23
30
|
* Visual size of the row.
|
|
@@ -29,10 +36,8 @@ export type ChannelMemberItemProps = {
|
|
|
29
36
|
testID?: string;
|
|
30
37
|
};
|
|
31
38
|
|
|
32
|
-
/**
|
|
33
|
-
* @experimental This component is experimental and is subject to change.
|
|
34
|
-
*/
|
|
35
39
|
export const ChannelMemberItem = ({
|
|
40
|
+
getMemberRoles,
|
|
36
41
|
member,
|
|
37
42
|
onPress,
|
|
38
43
|
size = 'sm',
|
|
@@ -40,22 +45,18 @@ export const ChannelMemberItem = ({
|
|
|
40
45
|
}: ChannelMemberItemProps) => {
|
|
41
46
|
const { t } = useTranslationContext();
|
|
42
47
|
const { client } = useChatContext();
|
|
48
|
+
const { RoleList } = useComponentsContext();
|
|
43
49
|
const {
|
|
44
50
|
theme: {
|
|
45
51
|
channelDetails: {
|
|
46
|
-
memberItem: {
|
|
47
|
-
container: containerOverride,
|
|
48
|
-
name: nameOverride,
|
|
49
|
-
role: roleOverride,
|
|
50
|
-
status: statusOverride,
|
|
51
|
-
},
|
|
52
|
+
memberItem: { container: containerOverride, name: nameOverride, status: statusOverride },
|
|
52
53
|
},
|
|
53
54
|
semantics,
|
|
54
55
|
},
|
|
55
56
|
} = useTheme();
|
|
56
57
|
const styles = useStyles();
|
|
57
58
|
const statusLine = useUserActivityStatus(member.user);
|
|
58
|
-
const
|
|
59
|
+
const roles = useMemberRoles(member, getMemberRoles);
|
|
59
60
|
const isMuted = useUserMuteActive(member.user);
|
|
60
61
|
|
|
61
62
|
const user = member.user;
|
|
@@ -66,7 +67,7 @@ export const ChannelMemberItem = ({
|
|
|
66
67
|
const displayName = isCurrentUser ? t('You') : (user.name ?? user.id);
|
|
67
68
|
const accessibilityLabel = composeAccessibilityLabel(
|
|
68
69
|
displayName,
|
|
69
|
-
|
|
70
|
+
roles.map((role) => role.label).join(', ') || undefined,
|
|
70
71
|
isMuted ? t('Muted') : undefined,
|
|
71
72
|
statusLine,
|
|
72
73
|
);
|
|
@@ -98,7 +99,7 @@ export const ChannelMemberItem = ({
|
|
|
98
99
|
</Text>
|
|
99
100
|
) : null}
|
|
100
101
|
</View>
|
|
101
|
-
{isMuted ||
|
|
102
|
+
{isMuted || roles.length > 0 ? (
|
|
102
103
|
<View style={styles.trailing}>
|
|
103
104
|
{isMuted ? (
|
|
104
105
|
<Mute
|
|
@@ -108,14 +109,7 @@ export const ChannelMemberItem = ({
|
|
|
108
109
|
width={16}
|
|
109
110
|
/>
|
|
110
111
|
) : null}
|
|
111
|
-
{
|
|
112
|
-
<Text
|
|
113
|
-
numberOfLines={1}
|
|
114
|
-
style={[styles.role, { color: semantics.textTertiary }, roleOverride]}
|
|
115
|
-
>
|
|
116
|
-
{roleLabel}
|
|
117
|
-
</Text>
|
|
118
|
-
) : null}
|
|
112
|
+
<RoleList roles={roles} />
|
|
119
113
|
</View>
|
|
120
114
|
) : null}
|
|
121
115
|
</>
|
|
@@ -171,7 +165,7 @@ const useStyles = () => {
|
|
|
171
165
|
flexDirection: 'row',
|
|
172
166
|
gap: primitives.spacingSm,
|
|
173
167
|
minHeight: 48,
|
|
174
|
-
paddingHorizontal: primitives.
|
|
168
|
+
paddingHorizontal: primitives.spacingSm,
|
|
175
169
|
paddingVertical: primitives.spacingXs,
|
|
176
170
|
},
|
|
177
171
|
containerLarge: {
|
|
@@ -193,13 +187,6 @@ const useStyles = () => {
|
|
|
193
187
|
lineHeight: primitives.typographyLineHeightNormal,
|
|
194
188
|
writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',
|
|
195
189
|
},
|
|
196
|
-
role: {
|
|
197
|
-
flexShrink: 0,
|
|
198
|
-
fontSize: primitives.typographyFontSizeSm,
|
|
199
|
-
fontWeight: primitives.typographyFontWeightRegular,
|
|
200
|
-
lineHeight: primitives.typographyLineHeightNormal,
|
|
201
|
-
writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',
|
|
202
|
-
},
|
|
203
190
|
status: {
|
|
204
191
|
fontSize: primitives.typographyFontSizeXs,
|
|
205
192
|
fontWeight: primitives.typographyFontWeightRegular,
|