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
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import React, { useCallback, useEffect,
|
|
1
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
2
|
import { ActivityIndicator, FlatList, type FlatListProps, StyleSheet, View } from 'react-native';
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
ChannelMemberResponse,
|
|
6
|
+
ChannelMemberSearchSource,
|
|
7
|
+
SearchSourceState,
|
|
8
|
+
} from 'stream-chat';
|
|
5
9
|
|
|
6
10
|
import { MemberListLoadingSkeleton } from './MemberListLoadingSkeleton';
|
|
7
11
|
|
|
@@ -14,6 +18,7 @@ import { useComponentsContext } from '../../../../contexts/componentsContext/Com
|
|
|
14
18
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
15
19
|
import { useTranslationContext } from '../../../../contexts/translationContext/TranslationContext';
|
|
16
20
|
import { getNotificationErrorOptions } from '../../../../hooks/actions/useChannelActions';
|
|
21
|
+
import { useChannelMemberCount } from '../../../../hooks/useChannelMemberCount';
|
|
17
22
|
import { useStateStore } from '../../../../hooks/useStateStore';
|
|
18
23
|
import { primitives } from '../../../../theme';
|
|
19
24
|
import { useNotificationApi } from '../../../Notifications/hooks/useNotificationApi';
|
|
@@ -41,6 +46,12 @@ export type ChannelMemberListProps = {
|
|
|
41
46
|
*/
|
|
42
47
|
additionalFlatListProps?: Partial<FlatListProps<ChannelMemberResponse>>;
|
|
43
48
|
searchInputProps?: SearchInputProps;
|
|
49
|
+
/**
|
|
50
|
+
* A custom `ChannelMemberSearchSource` used to query and paginate the member
|
|
51
|
+
* list. Overrides the source the provider creates by default (pre-configured
|
|
52
|
+
* to autocomplete by `name`).
|
|
53
|
+
*/
|
|
54
|
+
searchSource?: ChannelMemberSearchSource;
|
|
44
55
|
};
|
|
45
56
|
|
|
46
57
|
const ChannelMemberListContent = ({
|
|
@@ -53,11 +64,11 @@ const ChannelMemberListContent = ({
|
|
|
53
64
|
channelDetails: { memberList },
|
|
54
65
|
},
|
|
55
66
|
} = useTheme();
|
|
56
|
-
const { onMemberPress } = useChannelDetailsContext();
|
|
57
67
|
const { ChannelMemberActionsSheet, ChannelMemberItem } = useComponentsContext();
|
|
58
68
|
const { addNotification } = useNotificationApi();
|
|
59
69
|
|
|
60
|
-
const { channel
|
|
70
|
+
const { channel } = useChannelDetailsContext();
|
|
71
|
+
const { searchSource } = useChannelMemberListContext();
|
|
61
72
|
const { error, hasNext, loading, members, searchQuery } = useStateStore(
|
|
62
73
|
searchSource.state,
|
|
63
74
|
listStateSelector,
|
|
@@ -65,13 +76,16 @@ const ChannelMemberListContent = ({
|
|
|
65
76
|
|
|
66
77
|
const [selectedMember, setSelectedMember] = useState<ChannelMemberResponse | null>(null);
|
|
67
78
|
|
|
68
|
-
const
|
|
79
|
+
const memberCount = useChannelMemberCount(channel);
|
|
80
|
+
|
|
81
|
+
// Fetch members on mount and when the member count changes
|
|
82
|
+
// Member count changes used when add member modal is opened above member list modal
|
|
69
83
|
useEffect(() => {
|
|
70
|
-
if (!
|
|
71
|
-
|
|
84
|
+
if (!searchSource.state.getLatestValue().searchQuery) {
|
|
85
|
+
searchSource.resetStateAndActivate();
|
|
72
86
|
searchSource.search();
|
|
73
87
|
}
|
|
74
|
-
}, [searchSource]);
|
|
88
|
+
}, [memberCount, searchSource]);
|
|
75
89
|
|
|
76
90
|
useEffect(() => {
|
|
77
91
|
if (!error) {
|
|
@@ -91,14 +105,8 @@ const ChannelMemberListContent = ({
|
|
|
91
105
|
const handleMemberActionsClose = useCallback(() => setSelectedMember(null), []);
|
|
92
106
|
|
|
93
107
|
const handleMemberPress = useCallback(
|
|
94
|
-
(member: ChannelMemberResponse) =>
|
|
95
|
-
|
|
96
|
-
onMemberPress(member);
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
setSelectedMember(member);
|
|
100
|
-
},
|
|
101
|
-
[onMemberPress],
|
|
108
|
+
(member: ChannelMemberResponse) => setSelectedMember(member),
|
|
109
|
+
[],
|
|
102
110
|
);
|
|
103
111
|
|
|
104
112
|
const renderItem = useCallback(
|
|
@@ -164,9 +172,8 @@ const ChannelMemberListContent = ({
|
|
|
164
172
|
|
|
165
173
|
/**
|
|
166
174
|
* Lists all channel members with the ability to search them.
|
|
167
|
-
* @experimental This component is experimental and is subject to change.
|
|
168
175
|
*/
|
|
169
|
-
export const ChannelMemberList = (props: ChannelMemberListProps = {}) => {
|
|
176
|
+
export const ChannelMemberList = ({ searchSource, ...props }: ChannelMemberListProps = {}) => {
|
|
170
177
|
const { channel } = useChannelDetailsContext();
|
|
171
178
|
const notificationHostId = channel?.cid ? `channel-member-list:${channel.cid}` : undefined;
|
|
172
179
|
|
|
@@ -175,7 +182,7 @@ export const ChannelMemberList = (props: ChannelMemberListProps = {}) => {
|
|
|
175
182
|
}
|
|
176
183
|
|
|
177
184
|
return (
|
|
178
|
-
<ChannelMemberListProvider channel={channel}>
|
|
185
|
+
<ChannelMemberListProvider channel={channel} searchSource={searchSource}>
|
|
179
186
|
<NotificationTargetProvider hostId={notificationHostId} panel='channel-details'>
|
|
180
187
|
<ChannelMemberListContent {...props} />
|
|
181
188
|
</NotificationTargetProvider>
|
|
@@ -3,9 +3,6 @@ import React from 'react';
|
|
|
3
3
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
4
4
|
import { GenericListLoadingSkeleton } from '../../../UIComponents/GenericListLoadingSkeleton';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @experimental This component is experimental and is subject to change.
|
|
8
|
-
*/
|
|
9
6
|
export const MemberListLoadingSkeleton = () => {
|
|
10
7
|
const {
|
|
11
8
|
theme: { memberListSkeleton },
|
|
@@ -3,9 +3,6 @@ import React from 'react';
|
|
|
3
3
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
4
4
|
import { GenericListLoadingSkeleton } from '../../../UIComponents/GenericListLoadingSkeleton';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @experimental This component is experimental and is subject to change.
|
|
8
|
-
*/
|
|
9
6
|
export const UserListLoadingSkeleton = () => {
|
|
10
7
|
const {
|
|
11
8
|
theme: { userListSkeleton },
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './AddMemberSearchResultItem';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
2
|
+
export * from './ChannelAddMembersButton';
|
|
3
|
+
export * from './ChannelAddMembersForm';
|
|
4
|
+
export * from './ChannelAddMembersFormContent';
|
|
5
|
+
export * from './ChannelAddMembersFormHeader';
|
|
5
6
|
export * from './ChannelMemberActionsSheet';
|
|
6
7
|
export * from './ChannelMemberItem';
|
|
7
8
|
export * from './ChannelMemberList';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
2
|
-
import { Modal } from 'react-native';
|
|
1
|
+
import React, { useEffect, useMemo } from 'react';
|
|
2
|
+
import { Modal, Platform } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
5
5
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
6
6
|
|
|
7
|
+
import { useChannelDetailsContext } from '../../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
7
8
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
8
9
|
|
|
9
10
|
type ChannelDetailsModalProps = {
|
|
@@ -13,9 +14,6 @@ type ChannelDetailsModalProps = {
|
|
|
13
14
|
presentationStyle?: 'pageSheet' | 'formSheet' | 'fullScreen';
|
|
14
15
|
};
|
|
15
16
|
|
|
16
|
-
/**
|
|
17
|
-
* @experimental This component is experimental and is subject to change.
|
|
18
|
-
*/
|
|
19
17
|
export const ChannelDetailsModal = ({
|
|
20
18
|
children,
|
|
21
19
|
onClose,
|
|
@@ -31,6 +29,19 @@ export const ChannelDetailsModal = ({
|
|
|
31
29
|
} = useTheme();
|
|
32
30
|
const styles = useStyles();
|
|
33
31
|
const { top } = useSafeAreaInsets();
|
|
32
|
+
const { signalStore } = useChannelDetailsContext();
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const unsubscribe = signalStore.state.subscribeWithSelector(
|
|
36
|
+
(state) => ({ signal: state.signal }),
|
|
37
|
+
({ signal }) => {
|
|
38
|
+
if (signal) {
|
|
39
|
+
onClose();
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
return unsubscribe;
|
|
44
|
+
}, [signalStore, onClose]);
|
|
34
45
|
|
|
35
46
|
return (
|
|
36
47
|
<Modal
|
|
@@ -42,7 +53,9 @@ export const ChannelDetailsModal = ({
|
|
|
42
53
|
<GestureHandlerRootView
|
|
43
54
|
style={[
|
|
44
55
|
styles.body,
|
|
45
|
-
presentationStyle === 'fullScreen'
|
|
56
|
+
presentationStyle === 'fullScreen' || Platform.OS === 'android'
|
|
57
|
+
? { paddingTop: top }
|
|
58
|
+
: {},
|
|
46
59
|
bodyOverride,
|
|
47
60
|
]}
|
|
48
61
|
>
|
|
@@ -11,8 +11,6 @@ import { openUrlSafely } from '../../../Attachment/utils/openUrlSafely';
|
|
|
11
11
|
/**
|
|
12
12
|
* The shape passed to `FileAttachmentItem`'s `onPress` callback, identifying the rendered
|
|
13
13
|
* attachment and the message it belongs to.
|
|
14
|
-
*
|
|
15
|
-
* @experimental This type is experimental and is subject to change.
|
|
16
14
|
*/
|
|
17
15
|
export type FileAttachmentItemPressParams = {
|
|
18
16
|
attachment: Attachment;
|
|
@@ -31,9 +29,6 @@ export type FileAttachmentItemProps = {
|
|
|
31
29
|
onPress?: (params: FileAttachmentItemPressParams) => void;
|
|
32
30
|
};
|
|
33
31
|
|
|
34
|
-
/**
|
|
35
|
-
* @experimental This component is experimental and is subject to change.
|
|
36
|
-
*/
|
|
37
32
|
export const FileAttachmentItem = (props: FileAttachmentItemProps) => {
|
|
38
33
|
const { attachment, message, onPress } = props;
|
|
39
34
|
const {
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
View,
|
|
8
8
|
} from 'react-native';
|
|
9
9
|
|
|
10
|
-
import type { MessageResponse, SearchSourceState } from 'stream-chat';
|
|
10
|
+
import type { MessageResponse, MessageSearchSource, SearchSourceState } from 'stream-chat';
|
|
11
11
|
|
|
12
12
|
import { FileAttachmentListLoadingSkeleton } from './FileAttachmentListLoadingSkeleton';
|
|
13
13
|
import { FileAttachmentListSectionHeader } from './FileAttachmentListSectionHeader';
|
|
@@ -42,6 +42,12 @@ export type FileAttachmentListProps = {
|
|
|
42
42
|
* See https://reactnative.dev/docs/sectionlist#props for the full list.
|
|
43
43
|
*/
|
|
44
44
|
additionalSectionListProps?: Partial<SectionListProps<FileAttachmentTile, FileAttachmentSection>>;
|
|
45
|
+
/**
|
|
46
|
+
* A custom `MessageSearchSource` used to query and paginate the file/audio
|
|
47
|
+
* attachments. Overrides the source the provider creates by default
|
|
48
|
+
* (pre-configured to fetch file/audio attachments, newest first).
|
|
49
|
+
*/
|
|
50
|
+
searchSource?: MessageSearchSource;
|
|
45
51
|
};
|
|
46
52
|
|
|
47
53
|
const keyExtractor = (item: FileAttachmentTile, index: number) => `${item.message.id}-${index}`;
|
|
@@ -65,7 +71,8 @@ const FileAttachmentListContent = ({ additionalSectionListProps }: FileAttachmen
|
|
|
65
71
|
|
|
66
72
|
const { addNotification } = useNotificationApi();
|
|
67
73
|
|
|
68
|
-
const { channel
|
|
74
|
+
const { channel } = useChannelDetailsContext();
|
|
75
|
+
const { searchSource } = useChannelFileAttachmentListContext();
|
|
69
76
|
const { error, hasNext, loading, messages } = useStateStore(
|
|
70
77
|
searchSource.state,
|
|
71
78
|
listStateSelector,
|
|
@@ -164,10 +171,7 @@ const FileAttachmentListContent = ({ additionalSectionListProps }: FileAttachmen
|
|
|
164
171
|
);
|
|
165
172
|
};
|
|
166
173
|
|
|
167
|
-
|
|
168
|
-
* @experimental This component is experimental and is subject to change.
|
|
169
|
-
*/
|
|
170
|
-
export const FileAttachmentList = (props: FileAttachmentListProps) => {
|
|
174
|
+
export const FileAttachmentList = ({ searchSource, ...props }: FileAttachmentListProps) => {
|
|
171
175
|
const { channel } = useChannelDetailsContext();
|
|
172
176
|
const notificationHostId = channel?.cid ? `file-attachment-list:${channel.cid}` : undefined;
|
|
173
177
|
|
|
@@ -176,7 +180,7 @@ export const FileAttachmentList = (props: FileAttachmentListProps) => {
|
|
|
176
180
|
}
|
|
177
181
|
|
|
178
182
|
return (
|
|
179
|
-
<ChannelFileAttachmentListProvider channel={channel}>
|
|
183
|
+
<ChannelFileAttachmentListProvider channel={channel} searchSource={searchSource}>
|
|
180
184
|
<NotificationTargetProvider hostId={notificationHostId} panel='channel-details'>
|
|
181
185
|
<FileAttachmentListContent {...props} />
|
|
182
186
|
</NotificationTargetProvider>
|
|
@@ -3,9 +3,6 @@ import React from 'react';
|
|
|
3
3
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
4
4
|
import { GenericListLoadingSkeleton } from '../../../UIComponents/GenericListLoadingSkeleton';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @experimental This component is experimental and is subject to change.
|
|
8
|
-
*/
|
|
9
6
|
export const FileAttachmentListLoadingSkeleton = () => {
|
|
10
7
|
const {
|
|
11
8
|
theme: { fileAttachmentListSkeleton },
|
|
@@ -9,9 +9,6 @@ export type FileAttachmentListSectionHeaderProps = {
|
|
|
9
9
|
title: string;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* @experimental This component is experimental and is subject to change.
|
|
14
|
-
*/
|
|
15
12
|
export const FileAttachmentListSectionHeader = ({
|
|
16
13
|
title,
|
|
17
14
|
}: FileAttachmentListSectionHeaderProps) => {
|
|
@@ -18,8 +18,6 @@ import { UserAvatar } from '../../../ui/Avatar/UserAvatar';
|
|
|
18
18
|
* The shape passed to `MediaItem`'s `onPress` callback, identifying the rendered attachment, the
|
|
19
19
|
* message it belongs to, and the tile's native node handle (used as the open-animation origin when
|
|
20
20
|
* launching the fullscreen image gallery).
|
|
21
|
-
*
|
|
22
|
-
* @experimental This type is experimental and is subject to change.
|
|
23
21
|
*/
|
|
24
22
|
export type MediaItemPressParams = {
|
|
25
23
|
attachment: Attachment;
|
|
@@ -41,9 +39,6 @@ export type MediaItemProps = {
|
|
|
41
39
|
onPress?: (params: MediaItemPressParams) => void;
|
|
42
40
|
};
|
|
43
41
|
|
|
44
|
-
/**
|
|
45
|
-
* @experimental This component is experimental and is subject to change.
|
|
46
|
-
*/
|
|
47
42
|
export const MediaItem = (props: MediaItemProps) => {
|
|
48
43
|
const { ImageComponent: Image } = useComponentsContext();
|
|
49
44
|
const { attachment, message, onPress, size } = props;
|
|
@@ -8,7 +8,12 @@ import {
|
|
|
8
8
|
View,
|
|
9
9
|
} from 'react-native';
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
formatMessage,
|
|
13
|
+
type MessageResponse,
|
|
14
|
+
type MessageSearchSource,
|
|
15
|
+
type SearchSourceState,
|
|
16
|
+
} from 'stream-chat';
|
|
12
17
|
|
|
13
18
|
import { type MediaItemPressParams } from './MediaItem';
|
|
14
19
|
import { MediaListLoadingSkeleton } from './MediaListLoadingSkeleton';
|
|
@@ -48,6 +53,12 @@ export type MediaListProps = {
|
|
|
48
53
|
* See https://reactnative.dev/docs/flatlist#props for the full list.
|
|
49
54
|
*/
|
|
50
55
|
additionalFlatListProps?: Partial<FlatListProps<MediaTile>>;
|
|
56
|
+
/**
|
|
57
|
+
* A custom `MessageSearchSource` used to query and paginate the media grid.
|
|
58
|
+
* Overrides the source the provider creates by default (pre-configured to
|
|
59
|
+
* fetch image/video attachments, newest first).
|
|
60
|
+
*/
|
|
61
|
+
searchSource?: MessageSearchSource;
|
|
51
62
|
};
|
|
52
63
|
|
|
53
64
|
const keyExtractor = (item: MediaTile, index: number) => `${item.message.id}-${index}`;
|
|
@@ -72,7 +83,8 @@ const MediaListContent = ({ additionalFlatListProps }: MediaListProps) => {
|
|
|
72
83
|
|
|
73
84
|
const { addNotification } = useNotificationApi();
|
|
74
85
|
|
|
75
|
-
const { channel
|
|
86
|
+
const { channel } = useChannelDetailsContext();
|
|
87
|
+
const { searchSource } = useChannelMediaListContext();
|
|
76
88
|
const { imageGalleryStateStore } = useImageGalleryContext();
|
|
77
89
|
const { setOverlay } = useOverlayContext();
|
|
78
90
|
const { error, hasNext, loading, messages } = useStateStore(
|
|
@@ -201,10 +213,7 @@ const MediaListContent = ({ additionalFlatListProps }: MediaListProps) => {
|
|
|
201
213
|
);
|
|
202
214
|
};
|
|
203
215
|
|
|
204
|
-
|
|
205
|
-
* @experimental This component is experimental and is subject to change.
|
|
206
|
-
*/
|
|
207
|
-
export const MediaList = (props: MediaListProps) => {
|
|
216
|
+
export const MediaList = ({ searchSource, ...props }: MediaListProps) => {
|
|
208
217
|
const { channel } = useChannelDetailsContext();
|
|
209
218
|
const notificationHostId = channel?.cid ? `media-list:${channel.cid}` : undefined;
|
|
210
219
|
|
|
@@ -213,7 +222,7 @@ export const MediaList = (props: MediaListProps) => {
|
|
|
213
222
|
}
|
|
214
223
|
|
|
215
224
|
return (
|
|
216
|
-
<ChannelMediaListProvider channel={channel}>
|
|
225
|
+
<ChannelMediaListProvider channel={channel} searchSource={searchSource}>
|
|
217
226
|
<NotificationTargetProvider hostId={notificationHostId} panel='channel-details'>
|
|
218
227
|
<MediaListContent {...props} />
|
|
219
228
|
</NotificationTargetProvider>
|
package/src/components/ChannelDetails/components/navigation-section/MediaListLoadingSkeleton.tsx
CHANGED
|
@@ -12,8 +12,6 @@ const ANIMATION_TIME = 1000;
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Grid of shimmering placeholder tiles shown while the media list is loading.
|
|
15
|
-
*
|
|
16
|
-
* @experimental This component is experimental and is subject to change.
|
|
17
15
|
*/
|
|
18
16
|
export const MediaListLoadingSkeleton = () => {
|
|
19
17
|
const {
|
|
@@ -16,9 +16,6 @@ export type PinnedMessageItemProps = {
|
|
|
16
16
|
message: MessageResponse;
|
|
17
17
|
} & { formatMessageDate?: ChannelPreviewStatusProps['formatLatestMessageDate'] };
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
* @experimental This component is experimental and is subject to change.
|
|
21
|
-
*/
|
|
22
19
|
export const PinnedMessageItem = (props: PinnedMessageItemProps) => {
|
|
23
20
|
const { channel, message, formatMessageDate } = props;
|
|
24
21
|
const {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { ActivityIndicator, FlatList, type FlatListProps, StyleSheet, View } from 'react-native';
|
|
3
3
|
|
|
4
|
-
import type { MessageResponse, SearchSourceState } from 'stream-chat';
|
|
4
|
+
import type { MessageResponse, MessageSearchSource, SearchSourceState } from 'stream-chat';
|
|
5
5
|
|
|
6
6
|
import { PinnedMessageListLoadingSkeleton } from './PinnedMessageListLoadingSkeleton';
|
|
7
7
|
|
|
@@ -33,6 +33,12 @@ export type PinnedMessageListProps = {
|
|
|
33
33
|
*/
|
|
34
34
|
additionalFlatListProps?: Partial<FlatListProps<MessageResponse>>;
|
|
35
35
|
searchInputProps?: SearchInputProps;
|
|
36
|
+
/**
|
|
37
|
+
* A custom `MessageSearchSource` used to query and paginate the pinned
|
|
38
|
+
* messages. Overrides the source the provider creates by default
|
|
39
|
+
* (pre-configured to fetch pinned messages and search by `text`).
|
|
40
|
+
*/
|
|
41
|
+
searchSource?: MessageSearchSource;
|
|
36
42
|
};
|
|
37
43
|
|
|
38
44
|
const keyExtractor = (message: MessageResponse) => message.id;
|
|
@@ -60,7 +66,8 @@ const PinnedMessageListContent = ({
|
|
|
60
66
|
|
|
61
67
|
const { addNotification } = useNotificationApi();
|
|
62
68
|
|
|
63
|
-
const { channel
|
|
69
|
+
const { channel } = useChannelDetailsContext();
|
|
70
|
+
const { searchSource } = useChannelPinnedMessageListContext();
|
|
64
71
|
const { error, hasNext, loading, messages, searchQuery } = useStateStore(
|
|
65
72
|
searchSource.state,
|
|
66
73
|
listStateSelector,
|
|
@@ -158,10 +165,7 @@ const PinnedMessageListContent = ({
|
|
|
158
165
|
);
|
|
159
166
|
};
|
|
160
167
|
|
|
161
|
-
|
|
162
|
-
* @experimental This component is experimental and is subject to change.
|
|
163
|
-
*/
|
|
164
|
-
export const PinnedMessageList = (props: PinnedMessageListProps) => {
|
|
168
|
+
export const PinnedMessageList = ({ searchSource, ...props }: PinnedMessageListProps) => {
|
|
165
169
|
const { channel } = useChannelDetailsContext();
|
|
166
170
|
const notificationHostId = channel?.cid ? `pinned-message-list:${channel.cid}` : undefined;
|
|
167
171
|
|
|
@@ -170,7 +174,7 @@ export const PinnedMessageList = (props: PinnedMessageListProps) => {
|
|
|
170
174
|
}
|
|
171
175
|
|
|
172
176
|
return (
|
|
173
|
-
<ChannelPinnedMessageListProvider channel={channel}>
|
|
177
|
+
<ChannelPinnedMessageListProvider channel={channel} searchSource={searchSource}>
|
|
174
178
|
<NotificationTargetProvider hostId={notificationHostId} panel='channel-details'>
|
|
175
179
|
<PinnedMessageListContent {...props} />
|
|
176
180
|
</NotificationTargetProvider>
|
|
@@ -3,9 +3,6 @@ import React from 'react';
|
|
|
3
3
|
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
4
4
|
import { GenericListLoadingSkeleton } from '../../../UIComponents/GenericListLoadingSkeleton';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @experimental This component is experimental and is subject to change.
|
|
8
|
-
*/
|
|
9
6
|
export const PinnedMessageListLoadingSkeleton = () => {
|
|
10
7
|
const {
|
|
11
8
|
theme: { pinnedMessageListSkeleton },
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
|
|
3
|
+
import { I18nManager, StyleSheet, Text, View } from 'react-native';
|
|
4
|
+
|
|
5
|
+
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
6
|
+
import { primitives } from '../../../../theme';
|
|
7
|
+
import type { RoleLabel } from '../../hooks/members/useMemberRoles';
|
|
8
|
+
|
|
9
|
+
export type RoleItemProps = {
|
|
10
|
+
role: RoleLabel;
|
|
11
|
+
/** Style applied to the badge label, layered over the theme override. */
|
|
12
|
+
textStyle?: StyleProp<TextStyle>;
|
|
13
|
+
/** Style applied to the badge container, layered over the theme override. */
|
|
14
|
+
viewStyle?: StyleProp<ViewStyle>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Renders a single role badge (pill) next to a member row. `owner` roles use the accent
|
|
19
|
+
* (blue) palette; every other role uses the neutral (grey) palette.
|
|
20
|
+
*/
|
|
21
|
+
export const RoleItem = ({ role, textStyle, viewStyle }: RoleItemProps) => {
|
|
22
|
+
const {
|
|
23
|
+
theme: {
|
|
24
|
+
channelDetails: {
|
|
25
|
+
roleItem: {
|
|
26
|
+
container: containerOverride,
|
|
27
|
+
ownerBackgroundColor,
|
|
28
|
+
ownerColor,
|
|
29
|
+
roleBackgroundColor,
|
|
30
|
+
roleColor,
|
|
31
|
+
text: textOverride,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
semantics,
|
|
35
|
+
},
|
|
36
|
+
} = useTheme();
|
|
37
|
+
const styles = useStyles();
|
|
38
|
+
|
|
39
|
+
const isOwner = role.key === 'owner';
|
|
40
|
+
const backgroundColor = isOwner
|
|
41
|
+
? ownerBackgroundColor || semantics.brand150
|
|
42
|
+
: roleBackgroundColor || semantics.backgroundCoreSurfaceStrong;
|
|
43
|
+
const color = isOwner ? ownerColor || semantics.brand900 : roleColor || semantics.textPrimary;
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<View style={[styles.container, { backgroundColor }, containerOverride, viewStyle]}>
|
|
47
|
+
<Text numberOfLines={1} style={[styles.text, { color }, textOverride, textStyle]}>
|
|
48
|
+
{role.label}
|
|
49
|
+
</Text>
|
|
50
|
+
</View>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const useStyles = () =>
|
|
55
|
+
useMemo(
|
|
56
|
+
() =>
|
|
57
|
+
StyleSheet.create({
|
|
58
|
+
container: {
|
|
59
|
+
alignItems: 'center',
|
|
60
|
+
borderRadius: 14,
|
|
61
|
+
flexShrink: 0,
|
|
62
|
+
justifyContent: 'center',
|
|
63
|
+
paddingHorizontal: primitives.spacingXs,
|
|
64
|
+
paddingVertical: 0,
|
|
65
|
+
},
|
|
66
|
+
text: {
|
|
67
|
+
fontSize: primitives.typographyFontSizeXs,
|
|
68
|
+
fontWeight: primitives.typographyFontWeightMedium,
|
|
69
|
+
lineHeight: primitives.typographyLineHeightNormal,
|
|
70
|
+
writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',
|
|
71
|
+
},
|
|
72
|
+
}),
|
|
73
|
+
[],
|
|
74
|
+
);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { StyleSheet, View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { useComponentsContext } from '../../../../contexts/componentsContext/ComponentsContext';
|
|
5
|
+
import { useTheme } from '../../../../contexts/themeContext/ThemeContext';
|
|
6
|
+
import { primitives } from '../../../../theme';
|
|
7
|
+
import type { RoleLabel } from '../../hooks/members/useMemberRoles';
|
|
8
|
+
|
|
9
|
+
export type RoleListProps = {
|
|
10
|
+
roles: RoleLabel[];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Renders the horizontal list of role badges shown next to a member row. Each badge is
|
|
15
|
+
* rendered by the overridable `RoleItem` component. Returns `null` when there are no roles.
|
|
16
|
+
*/
|
|
17
|
+
export const RoleList = ({ roles }: RoleListProps) => {
|
|
18
|
+
const { RoleItem } = useComponentsContext();
|
|
19
|
+
const {
|
|
20
|
+
theme: {
|
|
21
|
+
channelDetails: {
|
|
22
|
+
roleList: { container: containerOverride },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
} = useTheme();
|
|
26
|
+
const styles = useStyles();
|
|
27
|
+
|
|
28
|
+
if (!roles.length) return null;
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<View style={[styles.container, containerOverride]}>
|
|
32
|
+
{roles.map((role) => (
|
|
33
|
+
<RoleItem key={role.key} role={role} />
|
|
34
|
+
))}
|
|
35
|
+
</View>
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const useStyles = () =>
|
|
40
|
+
useMemo(
|
|
41
|
+
() =>
|
|
42
|
+
StyleSheet.create({
|
|
43
|
+
container: {
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
flexDirection: 'row',
|
|
46
|
+
flexShrink: 0,
|
|
47
|
+
gap: primitives.spacingXxs,
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
[],
|
|
51
|
+
);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
|
|
5
|
+
import { render, screen } from '@testing-library/react-native';
|
|
6
|
+
|
|
7
|
+
import { ThemeProvider } from '../../../../../contexts';
|
|
8
|
+
import { defaultTheme } from '../../../../../contexts/themeContext/utils/theme';
|
|
9
|
+
import type { RoleLabel } from '../../../hooks/members/useMemberRoles';
|
|
10
|
+
import { RoleItem, type RoleItemProps } from '../RoleItem';
|
|
11
|
+
|
|
12
|
+
const renderItem = (role: RoleLabel, props: Partial<RoleItemProps> = {}) =>
|
|
13
|
+
render(
|
|
14
|
+
<ThemeProvider theme={defaultTheme}>
|
|
15
|
+
<RoleItem role={role} {...props} />
|
|
16
|
+
</ThemeProvider>,
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const containerStyleOf = (label: string) =>
|
|
20
|
+
StyleSheet.flatten(screen.getByText(label).parent?.parent?.props.style);
|
|
21
|
+
|
|
22
|
+
const textStyleOf = (label: string) => StyleSheet.flatten(screen.getByText(label).props.style);
|
|
23
|
+
|
|
24
|
+
const backgroundColorOf = (label: string) => containerStyleOf(label).backgroundColor;
|
|
25
|
+
|
|
26
|
+
describe('RoleItem', () => {
|
|
27
|
+
it('renders the role label', () => {
|
|
28
|
+
renderItem({ key: 'admin', label: 'Admin' });
|
|
29
|
+
expect(screen.getByText('Admin')).toBeTruthy();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('uses a distinct background color for owner vs other roles', () => {
|
|
33
|
+
renderItem({ key: 'owner', label: 'Owner' });
|
|
34
|
+
const ownerBg = backgroundColorOf('Owner');
|
|
35
|
+
|
|
36
|
+
screen.unmount();
|
|
37
|
+
|
|
38
|
+
renderItem({ key: 'admin', label: 'Admin' });
|
|
39
|
+
const roleBg = backgroundColorOf('Admin');
|
|
40
|
+
|
|
41
|
+
expect(ownerBg).toBeTruthy();
|
|
42
|
+
expect(roleBg).toBeTruthy();
|
|
43
|
+
expect(ownerBg).not.toBe(roleBg);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('applies viewStyle to the container, taking precedence over the theme background', () => {
|
|
47
|
+
renderItem(
|
|
48
|
+
{ key: 'admin', label: 'Admin' },
|
|
49
|
+
{ viewStyle: { backgroundColor: 'rgb(1, 2, 3)' } },
|
|
50
|
+
);
|
|
51
|
+
expect(backgroundColorOf('Admin')).toBe('rgb(1, 2, 3)');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('applies textStyle to the label, taking precedence over the theme color', () => {
|
|
55
|
+
renderItem({ key: 'admin', label: 'Admin' }, { textStyle: { color: 'rgb(4, 5, 6)' } });
|
|
56
|
+
expect(textStyleOf('Admin').color).toBe('rgb(4, 5, 6)');
|
|
57
|
+
});
|
|
58
|
+
});
|