stream-chat-react-native-core 9.5.0-beta.6 → 9.5.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +2 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- 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/AvatarGroup.js +2 -2
- 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/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +2 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +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/AvatarGroup.js +2 -2
- 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/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/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 +1 -1
- package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +1 -0
- 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/AvatarGroup.tsx +2 -2
- 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,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { render, screen } from '@testing-library/react-native';
|
|
4
|
+
|
|
5
|
+
import { ThemeProvider } from '../../../../../contexts';
|
|
6
|
+
import { defaultTheme } from '../../../../../contexts/themeContext/utils/theme';
|
|
7
|
+
import type { RoleLabel } from '../../../hooks/members/useMemberRoles';
|
|
8
|
+
import { RoleList } from '../RoleList';
|
|
9
|
+
|
|
10
|
+
const renderList = (roles: RoleLabel[]) =>
|
|
11
|
+
render(
|
|
12
|
+
<ThemeProvider theme={defaultTheme}>
|
|
13
|
+
<RoleList roles={roles} />
|
|
14
|
+
</ThemeProvider>,
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
describe('RoleList', () => {
|
|
18
|
+
it('renders a badge for each role', () => {
|
|
19
|
+
renderList([
|
|
20
|
+
{ key: 'owner', label: 'Owner' },
|
|
21
|
+
{ key: 'admin', label: 'Admin' },
|
|
22
|
+
]);
|
|
23
|
+
expect(screen.getByText('Owner')).toBeTruthy();
|
|
24
|
+
expect(screen.getByText('Admin')).toBeTruthy();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('renders nothing when there are no roles', () => {
|
|
28
|
+
const { toJSON } = renderList([]);
|
|
29
|
+
expect(toJSON()).toBeNull();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './useMemberRoles';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Channel, ChannelMemberResponse } from 'stream-chat';
|
|
2
|
+
|
|
3
|
+
import { useChannelDetailsContext } from '../../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
4
|
+
import type { TranslationContextValue } from '../../../../contexts/translationContext/TranslationContext';
|
|
5
|
+
import { useTranslationContext } from '../../../../contexts/translationContext/TranslationContext';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A single role shown next to a member row.
|
|
9
|
+
*
|
|
10
|
+
* - `key` is the raw role identifier (`'owner'`, `'admin'`, `'moderator'`, …).
|
|
11
|
+
* - `label` is the translated, user-facing text.
|
|
12
|
+
*/
|
|
13
|
+
export type RoleLabel = {
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Override the roles shown next to each member in the channel details screen.
|
|
20
|
+
*
|
|
21
|
+
* Receives `defaultRoleLabels` — the roles the default implementation computed for this member —
|
|
22
|
+
* so a custom implementation can reuse or extend them (e.g. `[...defaultRoleLabels, customRole]`),
|
|
23
|
+
* and returns the list of roles to render (or an empty array to render none). The default
|
|
24
|
+
* implementation marks members as `owner` (channel creator), `admin` (`user.role === 'admin'`)
|
|
25
|
+
* and `moderator` (`channel_role === 'channel_moderator'`), returning every role that applies.
|
|
26
|
+
*/
|
|
27
|
+
export type GetMemberRoles = (params: {
|
|
28
|
+
channel: Channel;
|
|
29
|
+
defaultRoleLabels: RoleLabel[];
|
|
30
|
+
member: ChannelMemberResponse;
|
|
31
|
+
t: TranslationContextValue['t'];
|
|
32
|
+
}) => RoleLabel[];
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Resolves the trailing role badges for a channel member row in the channel details screen.
|
|
36
|
+
*
|
|
37
|
+
* Returns every applicable role in the order Owner > Admin > Moderator. When a member matches
|
|
38
|
+
* none of the rules (and no custom `getMemberRoles` is provided), returns an empty array.
|
|
39
|
+
*/
|
|
40
|
+
export const useMemberRoles = (
|
|
41
|
+
member: ChannelMemberResponse,
|
|
42
|
+
getMemberRoles?: GetMemberRoles,
|
|
43
|
+
): RoleLabel[] => {
|
|
44
|
+
const { channel } = useChannelDetailsContext();
|
|
45
|
+
const { t } = useTranslationContext();
|
|
46
|
+
|
|
47
|
+
const defaultRoleLabels: RoleLabel[] = [];
|
|
48
|
+
const userId = member.user?.id;
|
|
49
|
+
if (userId && userId === channel?.data?.created_by?.id) {
|
|
50
|
+
defaultRoleLabels.push({ key: 'owner', label: t('Owner') });
|
|
51
|
+
}
|
|
52
|
+
if (member.user?.role === 'admin') {
|
|
53
|
+
defaultRoleLabels.push({ key: 'admin', label: t('Admin') });
|
|
54
|
+
}
|
|
55
|
+
if (member.channel_role === 'channel_moderator') {
|
|
56
|
+
defaultRoleLabels.push({ key: 'moderator', label: t('Moderator') });
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (getMemberRoles) {
|
|
60
|
+
return getMemberRoles({ channel, defaultRoleLabels, member, t }) ?? [];
|
|
61
|
+
}
|
|
62
|
+
return defaultRoleLabels;
|
|
63
|
+
};
|
|
@@ -3,14 +3,18 @@ import { useMemo } from 'react';
|
|
|
3
3
|
import { useChannelDetailsContext } from '../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
4
4
|
import {
|
|
5
5
|
ChannelActionItem,
|
|
6
|
+
GetChannelActionItems,
|
|
6
7
|
useChannelActionItems,
|
|
7
8
|
} from '../../../hooks/actions/useChannelActionItems';
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
export const useChannelDetailsActionItems = ({
|
|
11
|
+
getChannelActionItems,
|
|
12
|
+
onChannelDismiss,
|
|
13
|
+
}: {
|
|
14
|
+
getChannelActionItems?: GetChannelActionItems;
|
|
15
|
+
onChannelDismiss?: () => void;
|
|
16
|
+
} = {}): ChannelActionItem[] => {
|
|
17
|
+
const { channel } = useChannelDetailsContext();
|
|
14
18
|
|
|
15
19
|
const items = useChannelActionItems({ channel, getChannelActionItems, surface: 'details' });
|
|
16
20
|
|
|
@@ -12,7 +12,6 @@ import { useChannelOnlineMemberCount } from '../../ChannelList/hooks/useChannelO
|
|
|
12
12
|
* Resolves the subtitle status line shown under the channel title.
|
|
13
13
|
* - Direct chats: `t('Online')` when the other member is online, otherwise an empty string.
|
|
14
14
|
* - Group chats: `t('{{memberCount}} members, {{onlineCount}} online')`.
|
|
15
|
-
* @experimental This hook is experimental and is subject to change.
|
|
16
15
|
*/
|
|
17
16
|
export const useChannelDetailsMemberStatusText = (channel: Channel): string => {
|
|
18
17
|
const { t } = useTranslationContext();
|
|
@@ -13,9 +13,6 @@ export type ChannelDetailsMembersPreview = {
|
|
|
13
13
|
visible: ChannelMemberResponse[];
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* @experimental This hook is experimental and is subject to change.
|
|
18
|
-
*/
|
|
19
16
|
export const useChannelDetailsMembersPreview = (
|
|
20
17
|
channel: Channel,
|
|
21
18
|
max: number = DEFAULT_VISIBLE_MEMBER_COUNT,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
2
|
|
|
3
|
-
import { useChannelDetailsContext } from '../../../contexts/channelDetailsContext/channelDetailsContext';
|
|
4
3
|
import type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';
|
|
5
4
|
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
6
5
|
import { Picture } from '../../../icons';
|
|
@@ -13,8 +12,6 @@ import type { IconProps } from '../../../icons/utils/base';
|
|
|
13
12
|
* Identifies a navigation row. The literals are the built-in sections rendered by default;
|
|
14
13
|
* consumers can also add their own rows with arbitrary section identifiers via `getNavigationItems`,
|
|
15
14
|
* so any string is allowed.
|
|
16
|
-
*
|
|
17
|
-
* @experimental This type is experimental and is subject to change.
|
|
18
15
|
*/
|
|
19
16
|
export type ChannelDetailsNavigationSectionType =
|
|
20
17
|
| 'pinned-messages'
|
|
@@ -24,8 +21,6 @@ export type ChannelDetailsNavigationSectionType =
|
|
|
24
21
|
|
|
25
22
|
/**
|
|
26
23
|
* A single row in the channel details navigation section.
|
|
27
|
-
*
|
|
28
|
-
* @experimental This type is experimental and is subject to change.
|
|
29
24
|
*/
|
|
30
25
|
export type ChannelDetailsNavigationItem = {
|
|
31
26
|
/** Icon rendered at the start of the row and reused in the built-in modal header. */
|
|
@@ -66,8 +61,6 @@ export type ChannelDetailsNavigationItemsContext = {
|
|
|
66
61
|
* `defaultItems` to set a row's `onPress` (e.g. to push your own screen), or add/remove rows. Any
|
|
67
62
|
* row whose `onPress` you leave unset keeps its built-in behavior (opening the built-in modal) —
|
|
68
63
|
* including sections added in future SDK versions.
|
|
69
|
-
*
|
|
70
|
-
* @experimental This type is experimental and is subject to change.
|
|
71
64
|
*/
|
|
72
65
|
export type GetChannelDetailsNavigationItems = (params: {
|
|
73
66
|
context: ChannelDetailsNavigationItemsContext;
|
|
@@ -83,12 +76,13 @@ export const getChannelDetailsNavigationItems: GetChannelDetailsNavigationItems
|
|
|
83
76
|
* plain array — the section component owns the built-in modal and supplies the default open-modal
|
|
84
77
|
* behavior for any row without a custom `onPress`. Customize the rows by passing `getNavigationItems`
|
|
85
78
|
* to `ChannelDetails` (see {@link GetChannelDetailsNavigationItems}).
|
|
86
|
-
*
|
|
87
|
-
* @experimental This hook is experimental and is subject to change.
|
|
88
79
|
*/
|
|
89
|
-
export const useChannelDetailsNavigationItems = (
|
|
80
|
+
export const useChannelDetailsNavigationItems = ({
|
|
81
|
+
getNavigationItems = getChannelDetailsNavigationItems,
|
|
82
|
+
}: {
|
|
83
|
+
getNavigationItems?: GetChannelDetailsNavigationItems;
|
|
84
|
+
} = {}): ChannelDetailsNavigationItem[] => {
|
|
90
85
|
const { t } = useTranslationContext();
|
|
91
|
-
const { getNavigationItems = getChannelDetailsNavigationItems } = useChannelDetailsContext();
|
|
92
86
|
|
|
93
87
|
const context = useMemo<ChannelDetailsNavigationItemsContext>(() => ({ t }), [t]);
|
|
94
88
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { Alert, Linking } from 'react-native';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { useChannelEditDetailsContext } from '../../../contexts/channelEditDetailsContext/ChannelEditDetailsContext';
|
|
5
5
|
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
6
6
|
import { NativeHandlers } from '../../../native';
|
|
7
7
|
import type { File } from '../../../types/types';
|
|
@@ -31,11 +31,10 @@ export type UseEditChannelImageResult = {
|
|
|
31
31
|
* hook intentionally does NOT upload the picked file; the consumer receives a
|
|
32
32
|
* `File` and decides what to do with it.
|
|
33
33
|
*
|
|
34
|
-
* Reads `compressImageQuality` from `
|
|
35
|
-
* @experimental This hook is experimental and is subject to change.
|
|
34
|
+
* Reads `compressImageQuality` from `ChannelEditDetailsContext`.
|
|
36
35
|
*/
|
|
37
36
|
export const useEditChannelImage = (): UseEditChannelImageResult => {
|
|
38
|
-
const { compressImageQuality } =
|
|
37
|
+
const { compressImageQuality } = useChannelEditDetailsContext();
|
|
39
38
|
const { t } = useTranslationContext();
|
|
40
39
|
|
|
41
40
|
const takePhoto = useCallback(async (): Promise<File | undefined> => {
|
|
@@ -14,8 +14,6 @@ import { getDateString } from '../../../utils/i18n/getDateString';
|
|
|
14
14
|
/**
|
|
15
15
|
* A single file/audio attachment paired with the message it belongs to. The file attachment list
|
|
16
16
|
* renders one row per attachment, so a message with multiple file attachments yields multiple rows.
|
|
17
|
-
*
|
|
18
|
-
* @experimental This type is experimental and is subject to change.
|
|
19
17
|
*/
|
|
20
18
|
export type FileAttachmentTile = { attachment: Attachment; message: MessageResponse };
|
|
21
19
|
|
|
@@ -42,7 +40,6 @@ const getFileAttachments = (message: MessageResponse): Attachment[] =>
|
|
|
42
40
|
* pipeline used by message timestamps (see `useUserActivityStatus`), so the format
|
|
43
41
|
* follows the configured locale and can be customized via the
|
|
44
42
|
* `timestamp/FileAttachmentListSection` translation key.
|
|
45
|
-
* @experimental This hook is experimental and is subject to change.
|
|
46
43
|
*/
|
|
47
44
|
export const useFileAttachmentListSections = (
|
|
48
45
|
messages?: MessageResponse[],
|
|
@@ -7,8 +7,6 @@ import { FileTypes } from '../../../types/types';
|
|
|
7
7
|
/**
|
|
8
8
|
* A single image/video attachment paired with the message it belongs to. The media grid renders
|
|
9
9
|
* one tile per attachment, so a message with multiple media attachments yields multiple tiles.
|
|
10
|
-
*
|
|
11
|
-
* @experimental This type is experimental and is subject to change.
|
|
12
10
|
*/
|
|
13
11
|
export type MediaTile = {
|
|
14
12
|
attachment: Attachment;
|
|
@@ -44,8 +42,6 @@ const getMediaTiles = (messages: MessageResponse[] | undefined): MediaTile[] =>
|
|
|
44
42
|
* Gathers and filters the image/video attachments from a list of messages into a flat list of
|
|
45
43
|
* media tiles, ready to render in the media grid. Scraped/OG link-preview attachments and
|
|
46
44
|
* non-media attachments are excluded.
|
|
47
|
-
*
|
|
48
|
-
* @experimental This hook is experimental and is subject to change.
|
|
49
45
|
*/
|
|
50
46
|
export const useMediaList = (messages?: MessageResponse[]): MediaTile[] =>
|
|
51
47
|
useMemo(() => getMediaTiles(messages), [messages]);
|
|
@@ -14,7 +14,6 @@ import { getDateString } from '../../../utils/i18n/getDateString';
|
|
|
14
14
|
*
|
|
15
15
|
* The relative time is produced through the shared `getDateString` + translation-key
|
|
16
16
|
* pipeline used by message timestamps, so the format follows the configured locale.
|
|
17
|
-
* @experimental This hook is experimental and is subject to change.
|
|
18
17
|
*/
|
|
19
18
|
export const useUserActivityStatus = (user?: UserResponse): string => {
|
|
20
19
|
const { t, tDateTimeParser } = useTranslationContext();
|
|
@@ -13,9 +13,6 @@ import { Input, InputProps } from '../ui/Input/Input';
|
|
|
13
13
|
|
|
14
14
|
export type SearchInputProps = Partial<InputProps>;
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* @experimental This component is experimental and is subject to change.
|
|
18
|
-
*/
|
|
19
16
|
export const SearchInput = ({ onChangeText, ...props }: SearchInputProps) => {
|
|
20
17
|
const { t } = useTranslationContext();
|
|
21
18
|
const {
|
|
@@ -5,7 +5,13 @@ import { StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native';
|
|
|
5
5
|
import { UserResponse } from 'stream-chat';
|
|
6
6
|
|
|
7
7
|
import { Avatar, AvatarProps } from './Avatar';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
fontSizes,
|
|
10
|
+
iconSizes,
|
|
11
|
+
indicatorPositions,
|
|
12
|
+
indicatorSizes,
|
|
13
|
+
numberOfInitials,
|
|
14
|
+
} from './constants';
|
|
9
15
|
|
|
10
16
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
11
17
|
import { PeopleIcon } from '../../../icons/users';
|
|
@@ -57,7 +63,7 @@ export const UserAvatar = (props: UserAvatarProps) => {
|
|
|
57
63
|
style={style}
|
|
58
64
|
/>
|
|
59
65
|
{showOnlineIndicator ? (
|
|
60
|
-
<View style={styles.onlineIndicatorWrapper}>
|
|
66
|
+
<View style={[styles.onlineIndicatorWrapper, indicatorPositions[size]]}>
|
|
61
67
|
<OnlineIndicator online={true} size={indicatorSizes[size]} />
|
|
62
68
|
</View>
|
|
63
69
|
) : null}
|
|
@@ -71,8 +77,6 @@ const useStyles = () => {
|
|
|
71
77
|
StyleSheet.create({
|
|
72
78
|
onlineIndicatorWrapper: {
|
|
73
79
|
position: 'absolute',
|
|
74
|
-
right: -2,
|
|
75
|
-
top: -2,
|
|
76
80
|
},
|
|
77
81
|
}),
|
|
78
82
|
[],
|
|
@@ -41,6 +41,45 @@ const indicatorSizes: Record<UserAvatarProps['size'], OnlineIndicatorProps['size
|
|
|
41
41
|
xs: 'sm',
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
+
const onlineIndicatorSizes: Record<
|
|
45
|
+
OnlineIndicatorProps['size'],
|
|
46
|
+
{ borderWidth: number; height: number; width: number }
|
|
47
|
+
> = {
|
|
48
|
+
xl: {
|
|
49
|
+
borderWidth: 2,
|
|
50
|
+
height: 16,
|
|
51
|
+
width: 16,
|
|
52
|
+
},
|
|
53
|
+
lg: {
|
|
54
|
+
borderWidth: 2,
|
|
55
|
+
height: 14,
|
|
56
|
+
width: 14,
|
|
57
|
+
},
|
|
58
|
+
md: {
|
|
59
|
+
borderWidth: 2,
|
|
60
|
+
height: 12,
|
|
61
|
+
width: 12,
|
|
62
|
+
},
|
|
63
|
+
sm: {
|
|
64
|
+
borderWidth: 1,
|
|
65
|
+
height: 8,
|
|
66
|
+
width: 8,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Anchors the presence dot on the avatar's circular edge at 45°:
|
|
71
|
+
// offset = avatarWidth / 2 * (1 - Math.SQRT1_2) - indicatorDiameter / 2 (rounded to px)
|
|
72
|
+
const indicatorPositions = (Object.keys(avatarSizes) as UserAvatarProps['size'][]).reduce(
|
|
73
|
+
(acc, size) => {
|
|
74
|
+
const avatarDiameter = avatarSizes[size].width;
|
|
75
|
+
const indicatorDiameter = onlineIndicatorSizes[indicatorSizes[size]].width;
|
|
76
|
+
const offset = Math.round((avatarDiameter / 2) * (1 - Math.SQRT1_2) - indicatorDiameter / 2);
|
|
77
|
+
acc[size] = { right: offset, top: offset };
|
|
78
|
+
return acc;
|
|
79
|
+
},
|
|
80
|
+
{} as Record<UserAvatarProps['size'], { right: number; top: number }>,
|
|
81
|
+
);
|
|
82
|
+
|
|
44
83
|
const iconSizes: Record<UserAvatarProps['size'], number> = {
|
|
45
84
|
xs: 10,
|
|
46
85
|
sm: 12,
|
|
@@ -99,4 +138,12 @@ const numberOfInitials: Record<UserAvatarProps['size'], number> = {
|
|
|
99
138
|
'2xl': 2,
|
|
100
139
|
};
|
|
101
140
|
|
|
102
|
-
export {
|
|
141
|
+
export {
|
|
142
|
+
indicatorSizes,
|
|
143
|
+
onlineIndicatorSizes,
|
|
144
|
+
indicatorPositions,
|
|
145
|
+
iconSizes,
|
|
146
|
+
fontSizes,
|
|
147
|
+
numberOfInitials,
|
|
148
|
+
avatarSizes,
|
|
149
|
+
};
|
|
@@ -3,38 +3,24 @@ import { StyleSheet, View } from 'react-native';
|
|
|
3
3
|
|
|
4
4
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
5
5
|
import { primitives } from '../../../theme';
|
|
6
|
+
import { onlineIndicatorSizes } from '../Avatar/constants';
|
|
6
7
|
|
|
7
8
|
export type OnlineIndicatorProps = {
|
|
8
9
|
online: boolean;
|
|
9
10
|
size: 'xl' | 'lg' | 'sm' | 'md';
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
const sizes = {
|
|
13
|
-
xl: {
|
|
14
|
-
borderWidth: 2,
|
|
15
|
-
height: 16,
|
|
16
|
-
width: 16,
|
|
17
|
-
},
|
|
18
|
-
lg: {
|
|
19
|
-
borderWidth: 2,
|
|
20
|
-
height: 14,
|
|
21
|
-
width: 14,
|
|
22
|
-
},
|
|
23
|
-
md: {
|
|
24
|
-
borderWidth: 2,
|
|
25
|
-
height: 12,
|
|
26
|
-
width: 12,
|
|
27
|
-
},
|
|
28
|
-
sm: {
|
|
29
|
-
borderWidth: 1,
|
|
30
|
-
height: 8,
|
|
31
|
-
width: 8,
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
|
|
35
13
|
export const OnlineIndicator = ({ online, size = 'md' }: OnlineIndicatorProps) => {
|
|
36
14
|
const styles = useStyles();
|
|
37
|
-
return
|
|
15
|
+
return (
|
|
16
|
+
<View
|
|
17
|
+
style={[
|
|
18
|
+
styles.indicator,
|
|
19
|
+
onlineIndicatorSizes[size],
|
|
20
|
+
online ? styles.online : styles.offline,
|
|
21
|
+
]}
|
|
22
|
+
/>
|
|
23
|
+
);
|
|
38
24
|
};
|
|
39
25
|
|
|
40
26
|
const useStyles = () => {
|
|
@@ -1,31 +1,62 @@
|
|
|
1
|
-
import React, { PropsWithChildren, useContext, useState } from 'react';
|
|
1
|
+
import React, { PropsWithChildren, useContext, useMemo, useState } from 'react';
|
|
2
2
|
|
|
3
3
|
import { UserSearchSource } from 'stream-chat';
|
|
4
4
|
|
|
5
5
|
import { useChatContext } from '..';
|
|
6
|
+
import { NotificationTargetProvider } from '../../components/Notifications/NotificationTargetContext';
|
|
7
|
+
import { useChannelActions } from '../../hooks/actions/useChannelActions';
|
|
8
|
+
import { useStableCallback } from '../../hooks/useStableCallback';
|
|
6
9
|
import { SelectionStore } from '../../state-store/selection-store';
|
|
10
|
+
import { useChannelDetailsContext } from '../channelDetailsContext/channelDetailsContext';
|
|
7
11
|
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
|
|
8
12
|
import { isTestEnvironment } from '../utils/isTestEnvironment';
|
|
9
13
|
|
|
10
|
-
/**
|
|
11
|
-
* @experimental This API is experimental and is subject to change.
|
|
12
|
-
*/
|
|
13
14
|
export type ChannelAddMembersContextValue = {
|
|
14
15
|
selectionStore: SelectionStore;
|
|
15
16
|
searchSource: UserSearchSource;
|
|
17
|
+
/**
|
|
18
|
+
* Adds the currently selected members to the channel. Resolves on success and
|
|
19
|
+
* rejects if the request fails.
|
|
20
|
+
*/
|
|
21
|
+
submit: () => Promise<void>;
|
|
16
22
|
};
|
|
17
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Props for the {@link ChannelAddMembersProvider} that seed the add-members
|
|
26
|
+
* configuration into the context.
|
|
27
|
+
*/
|
|
28
|
+
export type ChannelAddMembersProviderProps = PropsWithChildren<{
|
|
29
|
+
/**
|
|
30
|
+
* A custom `UserSearchSource` used to query and paginate the users to add.
|
|
31
|
+
* Overrides the source the provider creates by default (pre-configured to
|
|
32
|
+
* autocomplete by `name`). The provider uses it as-is, so the consumer owns
|
|
33
|
+
* its activation/sorting.
|
|
34
|
+
*/
|
|
35
|
+
searchSource?: UserSearchSource;
|
|
36
|
+
}>;
|
|
37
|
+
|
|
18
38
|
export const ChannelAddMembersContext = React.createContext(
|
|
19
39
|
DEFAULT_BASE_CONTEXT_VALUE as ChannelAddMembersContextValue,
|
|
20
40
|
);
|
|
21
41
|
|
|
22
42
|
/**
|
|
23
|
-
*
|
|
43
|
+
* Builds the {@link ChannelAddMembersContextValue}. Rendered inside the
|
|
44
|
+
* {@link NotificationTargetProvider} so that notifications emitted by `submit`
|
|
45
|
+
* (via {@link useChannelActions}) resolve to the add-members host.
|
|
24
46
|
*/
|
|
25
|
-
|
|
47
|
+
const ChannelAddMembersContextProviderInner = ({
|
|
48
|
+
children,
|
|
49
|
+
searchSource: searchSourceProp,
|
|
50
|
+
}: ChannelAddMembersProviderProps) => {
|
|
26
51
|
const { client } = useChatContext();
|
|
52
|
+
const { channel } = useChannelDetailsContext();
|
|
53
|
+
const { addMembers } = useChannelActions(channel);
|
|
27
54
|
const [selectionStore] = useState(() => new SelectionStore());
|
|
28
55
|
const [searchSource] = useState(() => {
|
|
56
|
+
// A custom source is used as-is; the consumer owns its activation/sorting.
|
|
57
|
+
if (searchSourceProp) {
|
|
58
|
+
return searchSourceProp;
|
|
59
|
+
}
|
|
29
60
|
const source = new UserSearchSource(
|
|
30
61
|
client,
|
|
31
62
|
{ pageSize: 25, allowEmptySearchString: true, resetOnNewSearchQuery: false },
|
|
@@ -48,16 +79,49 @@ export const ChannelAddMembersProvider = ({ children }: PropsWithChildren<unknow
|
|
|
48
79
|
return source;
|
|
49
80
|
});
|
|
50
81
|
|
|
82
|
+
const submit = useStableCallback(async () => {
|
|
83
|
+
const ids = Array.from(selectionStore.state.getLatestValue().selectedIds);
|
|
84
|
+
let failed = false;
|
|
85
|
+
let firstError: unknown;
|
|
86
|
+
await addMembers(ids, {
|
|
87
|
+
onFailure: (error) => {
|
|
88
|
+
failed = true;
|
|
89
|
+
firstError = error;
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
if (failed) {
|
|
93
|
+
throw firstError;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const value = useMemo(
|
|
98
|
+
() => ({ selectionStore, searchSource, submit }),
|
|
99
|
+
[selectionStore, searchSource, submit],
|
|
100
|
+
);
|
|
101
|
+
|
|
51
102
|
return (
|
|
52
|
-
<ChannelAddMembersContext.Provider value={{
|
|
53
|
-
|
|
54
|
-
|
|
103
|
+
<ChannelAddMembersContext.Provider value={value}>{children}</ChannelAddMembersContext.Provider>
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export const ChannelAddMembersProvider = ({
|
|
108
|
+
children,
|
|
109
|
+
searchSource,
|
|
110
|
+
}: ChannelAddMembersProviderProps) => {
|
|
111
|
+
const { channel } = useChannelDetailsContext();
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<NotificationTargetProvider
|
|
115
|
+
hostId={`channel-add-members:${channel.cid}`}
|
|
116
|
+
panel='channel-details'
|
|
117
|
+
>
|
|
118
|
+
<ChannelAddMembersContextProviderInner searchSource={searchSource}>
|
|
119
|
+
{children}
|
|
120
|
+
</ChannelAddMembersContextProviderInner>
|
|
121
|
+
</NotificationTargetProvider>
|
|
55
122
|
);
|
|
56
123
|
};
|
|
57
124
|
|
|
58
|
-
/**
|
|
59
|
-
* @experimental This API is experimental and is subject to change.
|
|
60
|
-
*/
|
|
61
125
|
export const useChannelAddMembersContext = () => {
|
|
62
126
|
const contextValue = useContext(
|
|
63
127
|
ChannelAddMembersContext,
|
|
@@ -1,35 +1,40 @@
|
|
|
1
|
-
import React, { PropsWithChildren, useContext } from 'react';
|
|
1
|
+
import React, { PropsWithChildren, useCallback, useContext, useMemo, useState } from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import type { Channel } from 'stream-chat';
|
|
4
4
|
|
|
5
|
+
import { SignalStore } from '../../state-store/signal-store';
|
|
5
6
|
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
|
|
6
7
|
import { isTestEnvironment } from '../utils/isTestEnvironment';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export type ChannelDetailsContextValue = {
|
|
10
|
+
channel: Channel;
|
|
11
|
+
/**
|
|
12
|
+
* Signals all ChannelDetails modals to close themselves.
|
|
13
|
+
*/
|
|
14
|
+
closeModals: () => void;
|
|
15
|
+
signalStore: SignalStore;
|
|
16
|
+
};
|
|
12
17
|
export const ChannelDetailsContext = React.createContext(
|
|
13
18
|
DEFAULT_BASE_CONTEXT_VALUE as ChannelDetailsContextValue,
|
|
14
19
|
);
|
|
15
20
|
|
|
16
|
-
/**
|
|
17
|
-
* @experimental This API is experimental and is subject to change.
|
|
18
|
-
*/
|
|
19
21
|
export const ChannelDetailsContextProvider = ({
|
|
22
|
+
channel,
|
|
20
23
|
children,
|
|
21
|
-
value,
|
|
22
24
|
}: PropsWithChildren<{
|
|
23
|
-
|
|
24
|
-
}>) =>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
channel: Channel;
|
|
26
|
+
}>) => {
|
|
27
|
+
const [signalStore] = useState(() => new SignalStore());
|
|
28
|
+
const closeModals = useCallback(() => signalStore.signal(), [signalStore]);
|
|
29
|
+
|
|
30
|
+
const value = useMemo(
|
|
31
|
+
() => ({ channel, closeModals, signalStore }),
|
|
32
|
+
[channel, closeModals, signalStore],
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
return <ChannelDetailsContext.Provider value={value}>{children}</ChannelDetailsContext.Provider>;
|
|
36
|
+
};
|
|
29
37
|
|
|
30
|
-
/**
|
|
31
|
-
* @experimental This API is experimental and is subject to change.
|
|
32
|
-
*/
|
|
33
38
|
export const useChannelDetailsContext = () => {
|
|
34
39
|
const contextValue = useContext(ChannelDetailsContext) as unknown as ChannelDetailsContextValue;
|
|
35
40
|
|