@sendbird/uikit-react-native 3.1.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -42
- package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js +145 -0
- package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
- package/lib/commonjs/components/ChannelInput/SendInput.js +147 -312
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +238 -0
- package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -0
- package/lib/commonjs/components/ChannelInput/index.js +5 -1
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +100 -5
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/MessageSearchResultItem.js +1 -0
- package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +1 -0
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
- package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
- package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -1
- package/lib/commonjs/components/StatusComposition.js.map +1 -1
- package/lib/commonjs/constants.js +5 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js +1 -0
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +72 -34
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/PlatformServiceCtx.js +16 -12
- package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
- package/lib/commonjs/contexts/ReactionCtx.js +3 -2
- package/lib/commonjs/contexts/ReactionCtx.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js +2 -0
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +27 -42
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +109 -5
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/userList/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -4
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createMessageSearchFragment.js +1 -1
- package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
- package/lib/commonjs/hooks/useChannelInputItems.js +211 -0
- package/lib/commonjs/hooks/useChannelInputItems.js.map +1 -0
- package/lib/commonjs/hooks/useConnection.js +1 -1
- package/lib/commonjs/hooks/useConnection.js.map +1 -1
- package/lib/commonjs/hooks/useVoiceMessageInput.js +207 -0
- package/lib/commonjs/hooks/useVoiceMessageInput.js.map +1 -0
- package/lib/commonjs/index.js +32 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/libs/MentionManager.js.map +1 -1
- package/lib/commonjs/libs/SBUUtils.js +4 -0
- package/lib/commonjs/libs/SBUUtils.js.map +1 -1
- package/lib/commonjs/libs/VoiceMessageConfig.js +30 -0
- package/lib/commonjs/libs/VoiceMessageConfig.js.map +1 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +24 -9
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
- package/lib/commonjs/platform/createFileService.expo.js +10 -0
- package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js +19 -0
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/platform/createPlayerService.expo.js +137 -0
- package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -0
- package/lib/commonjs/platform/createPlayerService.native.js +139 -0
- package/lib/commonjs/platform/createPlayerService.native.js.map +1 -0
- package/lib/commonjs/platform/createRecorderService.expo.js +158 -0
- package/lib/commonjs/platform/createRecorderService.expo.js.map +1 -0
- package/lib/commonjs/platform/createRecorderService.native.js +157 -0
- package/lib/commonjs/platform/createRecorderService.native.js.map +1 -0
- package/lib/commonjs/platform/types.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/MessageToReplyPreview.js +137 -0
- package/lib/module/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
- package/lib/module/components/ChannelInput/SendInput.js +149 -314
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/VoiceMessageInput.js +228 -0
- package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -0
- package/lib/module/components/ChannelInput/index.js +5 -1
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +2 -2
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/index.js +99 -6
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/MessageSearchResultItem.js +2 -1
- package/lib/module/components/MessageSearchResultItem.js.map +1 -1
- package/lib/module/components/OpenChannelMessageRenderer/index.js +1 -0
- package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
- package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
- package/lib/module/components/ReactionBottomSheets/index.js.map +1 -1
- package/lib/module/components/StatusComposition.js.map +1 -1
- package/lib/module/constants.js +2 -0
- package/lib/module/constants.js.map +1 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js +2 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +74 -36
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/PlatformServiceCtx.js +14 -11
- package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
- package/lib/module/contexts/ReactionCtx.js +3 -2
- package/lib/module/contexts/ReactionCtx.js.map +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js +2 -0
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -43
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +111 -7
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/userList/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +32 -6
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createMessageSearchFragment.js +1 -1
- package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
- package/lib/module/hooks/useChannelInputItems.js +203 -0
- package/lib/module/hooks/useChannelInputItems.js.map +1 -0
- package/lib/module/hooks/useConnection.js +1 -1
- package/lib/module/hooks/useConnection.js.map +1 -1
- package/lib/module/hooks/useVoiceMessageInput.js +199 -0
- package/lib/module/hooks/useVoiceMessageInput.js.map +1 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/libs/MentionManager.js.map +1 -1
- package/lib/module/libs/SBUUtils.js +4 -0
- package/lib/module/libs/SBUUtils.js.map +1 -1
- package/lib/module/libs/VoiceMessageConfig.js +23 -0
- package/lib/module/libs/VoiceMessageConfig.js.map +1 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +25 -10
- package/lib/module/localization/createBaseStringSet.js.map +1 -1
- package/lib/module/platform/createFileService.expo.js +10 -0
- package/lib/module/platform/createFileService.expo.js.map +1 -1
- package/lib/module/platform/createFileService.native.js +19 -0
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/platform/createPlayerService.expo.js +129 -0
- package/lib/module/platform/createPlayerService.expo.js.map +1 -0
- package/lib/module/platform/createPlayerService.native.js +132 -0
- package/lib/module/platform/createPlayerService.native.js.map +1 -0
- package/lib/module/platform/createRecorderService.expo.js +150 -0
- package/lib/module/platform/createRecorderService.expo.js.map +1 -0
- package/lib/module/platform/createRecorderService.native.js +149 -0
- package/lib/module/platform/createRecorderService.native.js.map +1 -0
- package/lib/module/platform/types.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/components/ChannelCover.d.ts +2 -1
- package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +2 -1
- package/lib/typescript/src/components/ChannelInput/MessageToReplyPreview.d.ts +7 -0
- package/lib/typescript/src/components/ChannelInput/VoiceMessageInput.d.ts +11 -0
- package/lib/typescript/src/components/ChannelInput/index.d.ts +7 -3
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +1 -1
- package/lib/typescript/src/components/FileViewer.d.ts +2 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +2 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +1 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts +1 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +4 -2
- package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
- package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +2 -1
- package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
- package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +2 -1
- package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +2 -1
- package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +3 -2
- package/lib/typescript/src/components/ReactionAddons/index.d.ts +3 -2
- package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +2 -1
- package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +2 -1
- package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +4 -4
- package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
- package/lib/typescript/src/components/StatusComposition.d.ts +4 -4
- package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -1
- package/lib/typescript/src/components/UserActionBar.d.ts +2 -1
- package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -1
- package/lib/typescript/src/constants.d.ts +2 -0
- package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +2 -1
- package/lib/typescript/src/containers/InternalErrorBoundaryContainer.d.ts +3 -3
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
- package/lib/typescript/src/contexts/LocalizationCtx.d.ts +1 -1
- package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -8
- package/lib/typescript/src/contexts/ReactionCtx.d.ts +5 -2
- package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +6 -3
- package/lib/typescript/src/contexts/UserProfileCtx.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannel/types.d.ts +45 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +2 -1
- package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +2 -1
- package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +2 -1
- package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +2 -1
- package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +2 -2
- package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +2 -1
- package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +2 -1
- package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +3 -3
- package/lib/typescript/src/domain/userList/component/UserListList.d.ts +1 -1
- package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +2 -1
- package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +2 -1
- package/lib/typescript/src/domain/userList/types.d.ts +2 -2
- package/lib/typescript/src/hooks/useChannelInputItems.d.ts +10 -0
- package/lib/typescript/src/hooks/useVoiceMessageInput.d.ts +53 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/libs/MentionManager.d.ts +2 -1
- package/lib/typescript/src/libs/SBUUtils.d.ts +1 -0
- package/lib/typescript/src/libs/VoiceMessageConfig.d.ts +25 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +7 -0
- package/lib/typescript/src/platform/createPlayerService.expo.d.ts +7 -0
- package/lib/typescript/src/platform/createPlayerService.native.d.ts +9 -0
- package/lib/typescript/src/platform/createRecorderService.expo.d.ts +7 -0
- package/lib/typescript/src/platform/createRecorderService.native.d.ts +9 -0
- package/lib/typescript/src/platform/types.d.ts +100 -1
- package/lib/typescript/src/types.d.ts +1 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +9 -11
- package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
- package/src/components/ChannelInput/SendInput.tsx +129 -320
- package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
- package/src/components/ChannelInput/index.tsx +12 -4
- package/src/components/ChannelMessageList/index.tsx +3 -1
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
- package/src/components/GroupChannelMessageRenderer/index.tsx +80 -3
- package/src/components/MessageSearchResultItem.tsx +2 -1
- package/src/components/OpenChannelMessageRenderer/index.tsx +1 -0
- package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +2 -2
- package/src/components/ReactionBottomSheets/index.tsx +3 -2
- package/src/components/StatusComposition.tsx +3 -3
- package/src/constants.ts +2 -0
- package/src/containers/GroupChannelPreviewContainer.tsx +2 -0
- package/src/containers/InternalErrorBoundaryContainer.tsx +1 -1
- package/src/containers/SendbirdUIKitContainer.tsx +103 -59
- package/src/contexts/PlatformServiceCtx.tsx +22 -20
- package/src/contexts/ReactionCtx.tsx +7 -5
- package/src/contexts/SendbirdChatCtx.tsx +10 -2
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +29 -43
- package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
- package/src/domain/groupChannel/types.ts +41 -0
- package/src/domain/userList/types.ts +2 -2
- package/src/fragments/createGroupChannelFragment.tsx +32 -5
- package/src/fragments/createMessageSearchFragment.tsx +1 -1
- package/src/hooks/useChannelInputItems.ts +215 -0
- package/src/hooks/useConnection.ts +1 -1
- package/src/hooks/useVoiceMessageInput.ts +237 -0
- package/src/index.ts +4 -0
- package/src/libs/MentionManager.tsx +1 -1
- package/src/libs/SBUUtils.ts +5 -0
- package/src/libs/VoiceMessageConfig.ts +28 -0
- package/src/localization/StringSet.type.ts +8 -0
- package/src/localization/createBaseStringSet.ts +27 -11
- package/src/platform/createFileService.expo.ts +10 -0
- package/src/platform/createFileService.native.ts +19 -0
- package/src/platform/createPlayerService.expo.tsx +142 -0
- package/src/platform/createPlayerService.native.tsx +148 -0
- package/src/platform/createRecorderService.expo.tsx +160 -0
- package/src/platform/createRecorderService.native.tsx +170 -0
- package/src/platform/types.ts +114 -1
- package/src/types.ts +1 -1
- package/src/version.ts +1 -1
|
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
|
|
9
9
|
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
10
10
|
var _ProviderLayout = _interopRequireDefault(require("../../../components/ProviderLayout"));
|
|
11
|
+
var _constants = require("../../../constants");
|
|
11
12
|
var _useContext = require("../../../hooks/useContext");
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -25,6 +26,18 @@ const GroupChannelContexts = {
|
|
|
25
26
|
PubSub: /*#__PURE__*/(0, _react.createContext)({
|
|
26
27
|
publish: _uikitUtils.NOOP,
|
|
27
28
|
subscribe: () => _uikitUtils.NOOP
|
|
29
|
+
}),
|
|
30
|
+
MessageList: /*#__PURE__*/(0, _react.createContext)({
|
|
31
|
+
flatListRef: {
|
|
32
|
+
current: null
|
|
33
|
+
},
|
|
34
|
+
scrollToMessage: () => false,
|
|
35
|
+
lazyScrollToBottom: () => {
|
|
36
|
+
// noop
|
|
37
|
+
},
|
|
38
|
+
lazyScrollToIndex: () => {
|
|
39
|
+
// noop
|
|
40
|
+
}
|
|
28
41
|
})
|
|
29
42
|
};
|
|
30
43
|
exports.GroupChannelContexts = GroupChannelContexts;
|
|
@@ -34,7 +47,9 @@ const GroupChannelContextsProvider = _ref => {
|
|
|
34
47
|
channel,
|
|
35
48
|
enableTypingIndicator,
|
|
36
49
|
keyboardAvoidOffset = 0,
|
|
37
|
-
groupChannelPubSub
|
|
50
|
+
groupChannelPubSub,
|
|
51
|
+
messages,
|
|
52
|
+
onUpdateSearchItem
|
|
38
53
|
} = _ref;
|
|
39
54
|
if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');
|
|
40
55
|
const handlerId = (0, _uikitUtils.useUniqHandlerId)('GroupChannelContextsProvider');
|
|
@@ -48,6 +63,15 @@ const GroupChannelContextsProvider = _ref => {
|
|
|
48
63
|
const [typingUsers, setTypingUsers] = (0, _react.useState)([]);
|
|
49
64
|
const [messageToEdit, setMessageToEdit] = (0, _react.useState)();
|
|
50
65
|
const [messageToReply, setMessageToReply] = (0, _react.useState)();
|
|
66
|
+
const {
|
|
67
|
+
flatListRef,
|
|
68
|
+
lazyScrollToIndex,
|
|
69
|
+
lazyScrollToBottom,
|
|
70
|
+
scrollToMessage
|
|
71
|
+
} = useScrollActions({
|
|
72
|
+
messages,
|
|
73
|
+
onUpdateSearchItem
|
|
74
|
+
});
|
|
51
75
|
const updateInputMode = (mode, message) => {
|
|
52
76
|
if (mode === 'send' || !message) {
|
|
53
77
|
setMessageToEdit(undefined);
|
|
@@ -71,7 +95,9 @@ const GroupChannelContextsProvider = _ref => {
|
|
|
71
95
|
},
|
|
72
96
|
onChannelFrozen(frozenChannel) {
|
|
73
97
|
if (frozenChannel.url === channel.url) {
|
|
74
|
-
|
|
98
|
+
if (frozenChannel.isGroupChannel() && (0, _uikitUtils.getGroupChannelChatAvailableState)(channel).frozen) {
|
|
99
|
+
setMessageToReply(undefined);
|
|
100
|
+
}
|
|
75
101
|
}
|
|
76
102
|
},
|
|
77
103
|
onUserMuted(mutedChannel, user) {
|
|
@@ -96,13 +122,91 @@ const GroupChannelContextsProvider = _ref => {
|
|
|
96
122
|
messageToReply,
|
|
97
123
|
setMessageToReply: (0, _react.useCallback)(message => updateInputMode('reply', message), [])
|
|
98
124
|
}
|
|
125
|
+
}, /*#__PURE__*/_react.default.createElement(GroupChannelContexts.PubSub.Provider, {
|
|
126
|
+
value: groupChannelPubSub
|
|
99
127
|
}, /*#__PURE__*/_react.default.createElement(GroupChannelContexts.TypingIndicator.Provider, {
|
|
100
128
|
value: {
|
|
101
129
|
typingUsers
|
|
102
130
|
}
|
|
103
|
-
}, /*#__PURE__*/_react.default.createElement(GroupChannelContexts.
|
|
104
|
-
value:
|
|
105
|
-
|
|
131
|
+
}, /*#__PURE__*/_react.default.createElement(GroupChannelContexts.MessageList.Provider, {
|
|
132
|
+
value: {
|
|
133
|
+
flatListRef,
|
|
134
|
+
scrollToMessage,
|
|
135
|
+
lazyScrollToIndex,
|
|
136
|
+
lazyScrollToBottom
|
|
137
|
+
}
|
|
138
|
+
}, children)))));
|
|
106
139
|
};
|
|
107
140
|
exports.GroupChannelContextsProvider = GroupChannelContextsProvider;
|
|
141
|
+
const useScrollActions = params => {
|
|
142
|
+
const {
|
|
143
|
+
messages,
|
|
144
|
+
onUpdateSearchItem
|
|
145
|
+
} = params;
|
|
146
|
+
const flatListRef = (0, _react.useRef)(null);
|
|
147
|
+
|
|
148
|
+
// FIXME: Workaround, should run after data has been applied to UI.
|
|
149
|
+
const lazyScrollToBottom = (0, _uikitUtils.useFreshCallback)(params => {
|
|
150
|
+
if (!flatListRef.current) {
|
|
151
|
+
logFlatListRefWarning();
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
setTimeout(() => {
|
|
155
|
+
var _flatListRef$current;
|
|
156
|
+
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 ? void 0 : _flatListRef$current.scrollToOffset({
|
|
157
|
+
offset: 0,
|
|
158
|
+
animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false
|
|
159
|
+
});
|
|
160
|
+
}, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// FIXME: Workaround, should run after data has been applied to UI.
|
|
164
|
+
const lazyScrollToIndex = (0, _uikitUtils.useFreshCallback)(params => {
|
|
165
|
+
if (!flatListRef.current) {
|
|
166
|
+
logFlatListRefWarning();
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
var _flatListRef$current2;
|
|
171
|
+
(_flatListRef$current2 = flatListRef.current) === null || _flatListRef$current2 === void 0 ? void 0 : _flatListRef$current2.scrollToIndex({
|
|
172
|
+
index: (params === null || params === void 0 ? void 0 : params.index) ?? 0,
|
|
173
|
+
animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false,
|
|
174
|
+
viewPosition: (params === null || params === void 0 ? void 0 : params.viewPosition) ?? 0.5
|
|
175
|
+
});
|
|
176
|
+
}, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
|
|
177
|
+
});
|
|
178
|
+
const scrollToMessage = (0, _uikitUtils.useFreshCallback)((messageId, options) => {
|
|
179
|
+
if (!flatListRef.current) {
|
|
180
|
+
logFlatListRefWarning();
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
const foundMessageIndex = messages.findIndex(it => it.messageId === messageId);
|
|
184
|
+
const isIncludedInList = foundMessageIndex > -1;
|
|
185
|
+
if (isIncludedInList) {
|
|
186
|
+
if (options !== null && options !== void 0 && options.focusAnimated) {
|
|
187
|
+
setTimeout(() => onUpdateSearchItem({
|
|
188
|
+
startingPoint: messages[foundMessageIndex].createdAt
|
|
189
|
+
}), _constants.MESSAGE_FOCUS_ANIMATION_DELAY);
|
|
190
|
+
}
|
|
191
|
+
lazyScrollToIndex({
|
|
192
|
+
index: foundMessageIndex,
|
|
193
|
+
animated: true,
|
|
194
|
+
timeout: 0,
|
|
195
|
+
viewPosition: options === null || options === void 0 ? void 0 : options.viewPosition
|
|
196
|
+
});
|
|
197
|
+
return true;
|
|
198
|
+
} else {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
flatListRef,
|
|
204
|
+
lazyScrollToIndex,
|
|
205
|
+
lazyScrollToBottom,
|
|
206
|
+
scrollToMessage
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
const logFlatListRefWarning = () => {
|
|
210
|
+
_uikitUtils.Logger.warn('Cannot find flatListRef.current, please render FlatList and pass the flatListRef' + 'or please try again after FlatList has been rendered.');
|
|
211
|
+
};
|
|
108
212
|
//# sourceMappingURL=moduleContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitChatHooks","_uikitUtils","_ProviderLayout","_interopRequireDefault","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelContexts","Fragment","createContext","headerTitle","channel","setMessageToEdit","NOOP","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","exports","GroupChannelContextsProvider","_ref","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","Error","handlerId","useUniqHandlerId","STRINGS","useLocalization","currentUser","sdk","useSendbirdChat","setTypingUsers","useState","messageToEdit","messageToReply","updateInputMode","mode","message","undefined","useChannelHandler","onMessageDeleted","_","messageId","onChannelFrozen","frozenChannel","url","onUserMuted","mutedChannel","user","_sdk$currentUser","userId","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","createElement","Provider","value","GROUP_CHANNEL","HEADER_TITLE","useCallback"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useState } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserMessage,\n isDifferentChannel,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type { GroupChannelContextsType, GroupChannelModule, GroupChannelPubSubContextPayload } from '../types';\n\nexport const GroupChannelContexts: GroupChannelContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n setMessageToEdit: NOOP,\n setMessageToReply: NOOP,\n }),\n TypingIndicator: createContext({\n typingUsers: [] as SendbirdUser[],\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelPubSubContextPayload>),\n};\n\nexport const GroupChannelContextsProvider: GroupChannelModule['Provider'] = ({\n children,\n channel,\n enableTypingIndicator,\n keyboardAvoidOffset = 0,\n groupChannelPubSub,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');\n\n const handlerId = useUniqHandlerId('GroupChannelContextsProvider');\n const { STRINGS } = useLocalization();\n const { currentUser, sdk } = useSendbirdChat();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const [messageToReply, setMessageToReply] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n\n const updateInputMode = (mode: 'send' | 'edit' | 'reply', message?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (mode === 'send' || !message) {\n setMessageToEdit(undefined);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'edit') {\n setMessageToEdit(message);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'reply') {\n setMessageToEdit(undefined);\n setMessageToReply(message);\n return;\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n onMessageDeleted(_, messageId) {\n if (messageToReply?.messageId === messageId) {\n setMessageToReply(undefined);\n }\n },\n onChannelFrozen(frozenChannel) {\n if (frozenChannel.url === channel.url) {\n setMessageToReply(undefined);\n }\n },\n onUserMuted(mutedChannel, user) {\n if (mutedChannel.url === channel.url && user.userId === sdk.currentUser?.userId) {\n setMessageToReply(undefined);\n }\n },\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n return (\n <ProviderLayout>\n <GroupChannelContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL.HEADER_TITLE(currentUser?.userId ?? '', channel),\n channel,\n keyboardAvoidOffset,\n messageToEdit,\n setMessageToEdit: useCallback((message) => updateInputMode('edit', message), []),\n messageToReply,\n setMessageToReply: useCallback((message) => updateInputMode('reply', message), []),\n }}\n >\n <GroupChannelContexts.TypingIndicator.Provider value={{ typingUsers }}>\n <GroupChannelContexts.PubSub.Provider value={groupChannelPubSub}>\n {children}\n </GroupChannelContexts.PubSub.Provider>\n </GroupChannelContexts.TypingIndicator.Provider>\n </GroupChannelContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitChatHooks","_uikitUtils","_ProviderLayout","_interopRequireDefault","_constants","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelContexts","Fragment","createContext","headerTitle","channel","setMessageToEdit","NOOP","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","exports","GroupChannelContextsProvider","_ref","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","Error","handlerId","useUniqHandlerId","STRINGS","useLocalization","currentUser","sdk","useSendbirdChat","setTypingUsers","useState","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","useChannelHandler","onMessageDeleted","_","messageId","onChannelFrozen","frozenChannel","url","isGroupChannel","getGroupChannelChatAvailableState","frozen","onUserMuted","mutedChannel","user","_sdk$currentUser","userId","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","createElement","Provider","value","GROUP_CHANNEL","HEADER_TITLE","useCallback","params","useRef","useFreshCallback","logFlatListRefWarning","setTimeout","_flatListRef$current","scrollToOffset","offset","animated","timeout","_flatListRef$current2","scrollToIndex","index","viewPosition","options","foundMessageIndex","findIndex","it","isIncludedInList","focusAnimated","startingPoint","createdAt","MESSAGE_FOCUS_ANIMATION_DELAY","Logger","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY } from '../../../constants';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type { GroupChannelContextsType, GroupChannelModule, GroupChannelPubSubContextPayload } from '../types';\nimport { GroupChannelProps } from '../types';\n\nexport const GroupChannelContexts: GroupChannelContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n setMessageToEdit: NOOP,\n setMessageToReply: NOOP,\n }),\n TypingIndicator: createContext({\n typingUsers: [] as SendbirdUser[],\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelContextsProvider: GroupChannelModule['Provider'] = ({\n children,\n channel,\n enableTypingIndicator,\n keyboardAvoidOffset = 0,\n groupChannelPubSub,\n messages,\n onUpdateSearchItem,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');\n\n const handlerId = useUniqHandlerId('GroupChannelContextsProvider');\n const { STRINGS } = useLocalization();\n const { currentUser, sdk } = useSendbirdChat();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const [messageToReply, setMessageToReply] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n messages,\n onUpdateSearchItem,\n });\n\n const updateInputMode = (mode: 'send' | 'edit' | 'reply', message?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (mode === 'send' || !message) {\n setMessageToEdit(undefined);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'edit') {\n setMessageToEdit(message);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'reply') {\n setMessageToEdit(undefined);\n setMessageToReply(message);\n return;\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n onMessageDeleted(_, messageId) {\n if (messageToReply?.messageId === messageId) {\n setMessageToReply(undefined);\n }\n },\n onChannelFrozen(frozenChannel) {\n if (frozenChannel.url === channel.url) {\n if (frozenChannel.isGroupChannel() && getGroupChannelChatAvailableState(channel).frozen) {\n setMessageToReply(undefined);\n }\n }\n },\n onUserMuted(mutedChannel, user) {\n if (mutedChannel.url === channel.url && user.userId === sdk.currentUser?.userId) {\n setMessageToReply(undefined);\n }\n },\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n return (\n <ProviderLayout>\n <GroupChannelContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL.HEADER_TITLE(currentUser?.userId ?? '', channel),\n channel,\n keyboardAvoidOffset,\n messageToEdit,\n setMessageToEdit: useCallback((message) => updateInputMode('edit', message), []),\n messageToReply,\n setMessageToReply: useCallback((message) => updateInputMode('reply', message), []),\n }}\n >\n <GroupChannelContexts.PubSub.Provider value={groupChannelPubSub}>\n <GroupChannelContexts.TypingIndicator.Provider value={{ typingUsers }}>\n <GroupChannelContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n }}\n >\n {children}\n </GroupChannelContexts.MessageList.Provider>\n </GroupChannelContexts.TypingIndicator.Provider>\n </GroupChannelContexts.PubSub.Provider>\n </GroupChannelContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelProps['Provider'], 'messages' | 'onUpdateSearchItem'>) => {\n const { messages, onUpdateSearchItem } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({ offset: 0, animated: params?.animated ?? false });\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = messages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (options?.focusAnimated) {\n setTimeout(\n () => onUpdateSearchItem({ startingPoint: messages[foundMessageIndex].createdAt }),\n MESSAGE_FOCUS_ANIMATION_DELAY,\n );\n }\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: (callback?: () => void) => void;\n onResetMessageListWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: Pick<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = CommonComponent<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n };\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: (callback?: () => void) => void;\n onResetMessageListWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: Pick<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = CommonComponent<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n };\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { ContextValue } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface UserListProps<User> {\n /** Props for `UserListModule.Header` **/\n Header: {\n right?: React.
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { ContextValue } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface UserListProps<User> {\n /** Props for `UserListModule.Header` **/\n Header: {\n right?: React.ReactNode;\n left?: React.ReactNode;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: (selectedUsers: User[]) => Promise<void>;\n shouldActivateHeaderRight?: (selectedUsers: User[]) => boolean;\n };\n /** Props for `UserListModule.List` **/\n List: {\n /** User list from SendbirdChat SDK or Custom query {@link Fragment.queryCreator} **/\n users: User[];\n /** Render user component **/\n renderUser: (\n user: User,\n selectedUsers: ContextValue<UserListContextsType<User>['List']>['selectedUsers'],\n setSelectedUsers: ContextValue<UserListContextsType<User>['List']>['setSelectedUsers'],\n ) => React.ReactElement | null;\n /** Load next user list **/\n onLoadNext: () => Promise<void>;\n /** Refresh user list **/\n onRefresh?: () => Promise<void>;\n /** Refreshing state **/\n refreshing?: boolean;\n /** List empty component **/\n ListEmptyComponent?: React.ReactElement;\n };\n /** Props for `UserListModule.Provider` **/\n Provider: {\n headerTitle: string;\n headerRight: (selectedUsers: Array<User>) => string;\n };\n StatusError: {\n onPressRetry: () => void;\n };\n}\n\n/**\n * Internal context for UserList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface UserListContextsType<User> {\n Fragment: React.Context<{\n headerTitle: string;\n headerRight: string;\n }>;\n List: React.Context<{\n selectedUsers: User[];\n setSelectedUsers: React.Dispatch<React.SetStateAction<User[]>>;\n }>;\n}\n\nexport interface UserListModule<User> {\n Provider: CommonComponent<UserListProps<User>['Provider']>;\n Header: CommonComponent<UserListProps<User>['Header']>;\n List: CommonComponent<UserListProps<User>['List']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n StatusError: CommonComponent<UserListProps<User>['StatusError']>;\n}\n"],"mappings":""}
|
|
@@ -42,6 +42,10 @@ const createGroupChannelFragment = initModule => {
|
|
|
42
42
|
sortComparator = _uikitUtils.messageComparator,
|
|
43
43
|
flatListProps
|
|
44
44
|
} = _ref;
|
|
45
|
+
const {
|
|
46
|
+
playerService,
|
|
47
|
+
recorderService
|
|
48
|
+
} = (0, _useContext.usePlatformService)();
|
|
45
49
|
const {
|
|
46
50
|
sdk,
|
|
47
51
|
currentUser,
|
|
@@ -95,6 +99,26 @@ const createGroupChannelFragment = initModule => {
|
|
|
95
99
|
startingPoint: internalSearchItem === null || internalSearchItem === void 0 ? void 0 : internalSearchItem.startingPoint,
|
|
96
100
|
enableCollectionWithoutLocalCache: true
|
|
97
101
|
});
|
|
102
|
+
const onBlurFragment = () => {
|
|
103
|
+
return Promise.allSettled([playerService.reset(), recorderService.reset()]);
|
|
104
|
+
};
|
|
105
|
+
const _onPressHeaderLeft = (0, _uikitUtils.useFreshCallback)(async () => {
|
|
106
|
+
await onBlurFragment();
|
|
107
|
+
onPressHeaderLeft();
|
|
108
|
+
});
|
|
109
|
+
const _onPressHeaderRight = (0, _uikitUtils.useFreshCallback)(async () => {
|
|
110
|
+
await onBlurFragment();
|
|
111
|
+
onPressHeaderRight();
|
|
112
|
+
});
|
|
113
|
+
const _onPressMediaMessage = (0, _uikitUtils.useFreshCallback)(async (message, deleteMessage, uri) => {
|
|
114
|
+
await onBlurFragment();
|
|
115
|
+
onPressMediaMessage(message, deleteMessage, uri);
|
|
116
|
+
});
|
|
117
|
+
(0, _react.useEffect)(() => {
|
|
118
|
+
return () => {
|
|
119
|
+
onBlurFragment();
|
|
120
|
+
};
|
|
121
|
+
}, []);
|
|
98
122
|
const renderItem = (0, _uikitUtils.useFreshCallback)(props => {
|
|
99
123
|
if (renderMessage) return renderMessage(props);
|
|
100
124
|
return /*#__PURE__*/_react.default.createElement(_GroupChannelMessageRenderer.default, props);
|
|
@@ -161,11 +185,13 @@ const createGroupChannelFragment = initModule => {
|
|
|
161
185
|
channel: channel,
|
|
162
186
|
groupChannelPubSub: groupChannelPubSub,
|
|
163
187
|
enableTypingIndicator: enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator,
|
|
164
|
-
keyboardAvoidOffset: keyboardAvoidOffset
|
|
188
|
+
keyboardAvoidOffset: keyboardAvoidOffset,
|
|
189
|
+
messages: messages,
|
|
190
|
+
onUpdateSearchItem: onUpdateSearchItem
|
|
165
191
|
}, /*#__PURE__*/_react.default.createElement(GroupChannelModule.Header, {
|
|
166
192
|
shouldHideRight: navigateFromMessageSearch,
|
|
167
|
-
onPressHeaderLeft:
|
|
168
|
-
onPressHeaderRight:
|
|
193
|
+
onPressHeaderLeft: _onPressHeaderLeft,
|
|
194
|
+
onPressHeaderRight: _onPressHeaderRight
|
|
169
195
|
}), /*#__PURE__*/_react.default.createElement(_StatusComposition.default, {
|
|
170
196
|
loading: loading,
|
|
171
197
|
LoadingComponent: /*#__PURE__*/_react.default.createElement(GroupChannelModule.StatusLoading, null)
|
|
@@ -189,7 +215,7 @@ const createGroupChannelFragment = initModule => {
|
|
|
189
215
|
renderScrollToBottomButton: renderScrollToBottomButton,
|
|
190
216
|
onResendFailedMessage: resendMessage,
|
|
191
217
|
onDeleteMessage: deleteMessage,
|
|
192
|
-
onPressMediaMessage:
|
|
218
|
+
onPressMediaMessage: _onPressMediaMessage,
|
|
193
219
|
flatListProps: memoizedFlatListProps
|
|
194
220
|
}), /*#__PURE__*/_react.default.createElement(GroupChannelModule.Input, {
|
|
195
221
|
SuggestedMentionList: GroupChannelModule.SuggestedMentionList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_message","_uikitChatHooks","_uikitUtils","_GroupChannelMessageRenderer","_interopRequireDefault","_NewMessagesButton","_ScrollToBottomButton","_StatusComposition","_createGroupChannelModule","_useContext","_pubsub","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","collectionCreator","sortComparator","messageComparator","flatListProps","sdk","currentUser","sbOptions","useSendbirdChat","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","next","prev","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","userId","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","startingPoint","enableCollectionWithoutLocalCache","renderItem","useFreshCallback","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","callback","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","message","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react';\n\nimport { ReplyType } from '@sendbird/chat/message';\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport {\n NOOP,\n PASS,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n }) => {\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n next,\n prev,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n collectionCreator,\n sortComparator,\n onChannelDeleted,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n enableCollectionWithoutLocalCache: true,\n });\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n if (renderMessage) return renderMessage(props);\n return <GroupChannelMessageRenderer {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback((callback?: () => void) => {\n resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback((startingPoint: number, callback?: () => void) => {\n resetWithStartingPoint(startingPoint, callback);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={onPressHeaderLeft}\n onPressHeaderRight={onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={prev}\n onBottomReached={next}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_message","_uikitChatHooks","_uikitUtils","_GroupChannelMessageRenderer","_interopRequireDefault","_NewMessagesButton","_ScrollToBottomButton","_StatusComposition","_createGroupChannelModule","_useContext","_pubsub","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","collectionCreator","sortComparator","messageComparator","flatListProps","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","useSendbirdChat","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","next","prev","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","userId","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","startingPoint","enableCollectionWithoutLocalCache","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","useFreshCallback","_onPressHeaderRight","_onPressMediaMessage","message","uri","useEffect","renderItem","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","callback","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ReplyType } from '@sendbird/chat/message';\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport {\n NOOP,\n PASS,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n next,\n prev,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n collectionCreator,\n sortComparator,\n onChannelDeleted,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n enableCollectionWithoutLocalCache: true,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n if (renderMessage) return renderMessage(props);\n return <GroupChannelMessageRenderer {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback((callback?: () => void) => {\n resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback((startingPoint: number, callback?: () => void) => {\n resetWithStartingPoint(startingPoint, callback);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={prev}\n onBottomReached={next}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAYA,IAAAI,4BAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAD,sBAAA,CAAAL,OAAA;AACA,IAAAO,qBAAA,GAAAF,sBAAA,CAAAL,OAAA;AACA,IAAAQ,kBAAA,GAAAH,sBAAA,CAAAL,OAAA;AACA,IAAAS,yBAAA,GAAAJ,sBAAA,CAAAL,OAAA;AAOA,IAAAU,WAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAN,sBAAA,CAAAL,OAAA;AAAqC,SAAAK,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAjB,wBAAAa,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAErC,MAAMW,0BAA0B,GAAIC,UAAwC,IAA2B;EACrG,MAAMC,kBAAkB,GAAG,IAAAC,iCAAwB,EAACF,UAAU,CAAC;EAE/D,OAAOG,IAAA,IAoBD;IAAA,IApBE;MACNC,UAAU;MACVC,uBAAuB,GAAIC,KAAK,iBAAK3C,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACpC,kBAAA,CAAAQ,OAAiB,EAAK2B,KAAK,CAAI;MACrEE,0BAA0B,GAAIF,KAAK,iBAAK3C,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACnC,qBAAA,CAAAO,OAAoB,EAAK2B,KAAK,CAAI;MAC3EG,aAAa;MACbC,qBAAqB,GAAG,IAAI;MAC5BC,qBAAqB;MACrBC,iBAAiB,GAAGC,gBAAI;MACxBC,kBAAkB,GAAGD,gBAAI;MACzBE,mBAAmB,GAAGF,gBAAI;MAC1BG,gBAAgB,GAAGH,gBAAI;MACvBI,uBAAuB,GAAGC,gBAAI;MAC9BC,uBAAuB,GAAGD,gBAAI;MAC9BE,yBAAyB,GAAGF,gBAAI;MAChCG,yBAAyB,GAAGH,gBAAI;MAChCI,OAAO;MACPC,mBAAmB;MACnBC,iBAAiB;MACjBC,cAAc,GAAGC,6BAAiB;MAClCC;IACF,CAAC,GAAAxB,IAAA;IACC,MAAM;MAAEyB,aAAa;MAAEC;IAAgB,CAAC,GAAG,IAAAC,8BAAkB,GAAE;IAC/D,MAAM;MAAEC,GAAG;MAAEC,WAAW;MAAEC;IAAU,CAAC,GAAG,IAAAC,2BAAe,GAAE;IAEzD,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAG,IAAAC,eAAQ,EAACjC,UAAU,CAAC;IACxE,MAAMkC,yBAAyB,GAAG,IAAAC,kBAAW,EAAC,MAAMC,OAAO,CAACpC,UAAU,CAAC,EAAE,EAAE,CAAC;IAE5E,MAAM,CAACqC,kBAAkB,CAAC,GAAG,IAAAJ,eAAQ,EAAC,MAAM,IAAAK,eAAM,GAAoC,CAAC;IACvF,MAAM,CAACC,sBAAsB,EAAEC,yBAAyB,CAAC,GAAG,IAAAP,eAAQ,EAAC,KAAK,CAAC;IAC3E,MAAMQ,yBAAyB,GAAG,IAAAC,yBAAa,EAACH,sBAAsB,CAAC;IAEvE,MAAMI,SAAS,GAAG,IAAAC,mBAAO,EAAC,MAAM;MAC9B,IAAIf,SAAS,CAACgB,KAAK,CAACC,YAAY,CAAC5B,OAAO,CAACyB,SAAS,KAAK,MAAM,EAAE,OAAOI,kBAAS,CAACC,IAAI,CAAC,KAChF,OAAOD,kBAAS,CAACE,qBAAqB;IAC7C,CAAC,CAAC;IAEF,MAAM;MACJC,OAAO;MACPC,QAAQ;MACRC,WAAW;MACXC,gBAAgB;MAChBC,IAAI;MACJC,IAAI;MACJC,OAAO;MACPC,eAAe;MACfC,eAAe;MACfC,iBAAiB;MACjBC,iBAAiB;MACjBC,aAAa;MACbC,aAAa;MACbC;IACF,CAAC,GAAG,IAAAC,uCAAuB,EAACrC,GAAG,EAAET,OAAO,EAAEU,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqC,MAAM,EAAE;MAC7DC,sBAAsB,EAAEA,CAAA,KAAMzB,yBAAyB,CAAC0B,OAAO;MAC/DC,kBAAkBA,CAACjB,QAAQ,EAAE;QAC3Bd,kBAAkB,CAACgC,OAAO,CAAC;UAAEC,IAAI,EAAE,mBAAmB;UAAEC,IAAI,EAAE;YAAEpB;UAAS;QAAE,CAAC,CAAC;MAC/E,CAAC;MACDqB,iBAAiBA,CAACrB,QAAQ,EAAE;QAC1Bd,kBAAkB,CAACgC,OAAO,CAAC;UAAEC,IAAI,EAAE,kBAAkB;UAAEC,IAAI,EAAE;YAAEpB;UAAS;QAAE,CAAC,CAAC;MAC9E,CAAC;MACD/B,iBAAiB;MACjBC,cAAc;MACdT,gBAAgB;MAChB+B,SAAS;MACT8B,aAAa,EAAE1C,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE0C,aAAa;MAChDC,iCAAiC,EAAE;IACrC,CAAC,CAAC;IAEF,MAAMC,cAAc,GAAGA,CAAA,KAAM;MAC3B,OAAOC,OAAO,CAACC,UAAU,CAAC,CAACrD,aAAa,CAACsD,KAAK,EAAE,EAAErD,eAAe,CAACqD,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAMC,kBAAkB,GAAG,IAAAC,4BAAgB,EAAC,YAAY;MACtD,MAAML,cAAc,EAAE;MACtBnE,iBAAiB,EAAE;IACrB,CAAC,CAAC;IACF,MAAMyE,mBAAmB,GAAG,IAAAD,4BAAgB,EAAC,YAAY;MACvD,MAAML,cAAc,EAAE;MACtBjE,kBAAkB,EAAE;IACtB,CAAC,CAAC;IACF,MAAMwE,oBAA0F,GAAG,IAAAF,4BAAgB,EACjH,OAAOG,OAAO,EAAErB,aAAa,EAAEsB,GAAG,KAAK;MACrC,MAAMT,cAAc,EAAE;MACtBhE,mBAAmB,CAACwE,OAAO,EAAErB,aAAa,EAAEsB,GAAG,CAAC;IAClD,CAAC,CACF;IAED,IAAAC,gBAAS,EAAC,MAAM;MACd,OAAO,MAAM;QACXV,cAAc,EAAE;MAClB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMW,UAA6D,GAAG,IAAAN,4BAAgB,EAAE9E,KAAK,IAAK;MAChG,IAAIG,aAAa,EAAE,OAAOA,aAAa,CAACH,KAAK,CAAC;MAC9C,oBAAO3C,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACtC,4BAAA,CAAAU,OAA2B,EAAK2B,KAAK,CAAI;IACnD,CAAC,CAAC;IAEF,MAAMqF,qBAAqB,GAAG,IAAAC,cAAO,EACnC,OAAO;MACLC,kBAAkB,eAAElI,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACN,kBAAkB,CAAC6F,WAAW,OAAG;MACtDC,qBAAqB,EAAE;QAAEC,QAAQ,EAAE;MAAE,CAAC;MACtC,GAAGrE;IACL,CAAC,CAAC,EACF,CAACA,aAAa,CAAC,CAChB;IAED,MAAMsE,kBAAkB,GAAG,IAAA1D,kBAAW,EAAE2D,QAAqB,IAAK;MAChE/B,sBAAsB,CAACgC,MAAM,CAACC,gBAAgB,EAAEF,QAAQ,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMG,mCAAmC,GAAG,IAAA9D,kBAAW,EAAC,CAACsC,aAAqB,EAAEqB,QAAqB,KAAK;MACxG/B,sBAAsB,CAACU,aAAa,EAAEqB,QAAQ,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC;;IAEN;IACA,MAAMI,kBAA0E,GAAG,IAAA/D,kBAAW,EAAEnC,UAAU,IAAK;MAC7G;MACAgC,qBAAqB,CAACmE,SAAS,CAAC;MAChCnE,qBAAqB,CAAChC,UAAU,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMoG,SAAS,GAAIjB,OAAkD,IAAK;MACxE9C,kBAAkB,CAACgC,OAAO,CAAC;QAAEC,IAAI,EAAE,sBAAsB;QAAEC,IAAI,EAAE;UAAEY;QAAQ;MAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAMkB,MAAM,GAAIlB,OAAkD,IAAK;MACrE9C,kBAAkB,CAACgC,OAAO,CAAC;QAAEC,IAAI,EAAE,sBAAsB;QAAEC,IAAI,EAAE;UAAEY;QAAQ;MAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAMmB,sBAA4E,GAAG,IAAAtB,4BAAgB,EACnG,MAAOuB,MAAM,IAAK;MAChB,MAAMC,eAAe,GAAG,MAAM3F,uBAAuB,CAAC0F,MAAM,CAAC;MAC7D,MAAMpB,OAAO,GAAG,MAAMzB,eAAe,CAAC8C,eAAe,EAAEJ,SAAS,CAAC;MACjEC,MAAM,CAAClB,OAAO,CAAC;IACjB,CAAC,CACF;IACD,MAAMsB,sBAA4E,GAAG,IAAAzB,4BAAgB,EACnG,MAAOuB,MAAM,IAAK;MAChB,MAAMC,eAAe,GAAG,MAAMzF,uBAAuB,CAACwF,MAAM,CAAC;MAC7D,MAAMpB,OAAO,GAAG,MAAM1B,eAAe,CAAC+C,eAAe,EAAEJ,SAAS,CAAC;MACjEC,MAAM,CAAClB,OAAO,CAAC;IACjB,CAAC,CACF;IACD,MAAMuB,wBAAgF,GAAG,IAAA1B,4BAAgB,EACvG,OAAOG,OAAO,EAAEoB,MAAM,KAAK;MACzB,MAAMC,eAAe,GAAG,MAAMxF,yBAAyB,CAACuF,MAAM,CAAC;MAC/D,MAAM3C,iBAAiB,CAACuB,OAAO,CAACwB,SAAS,EAAEH,eAAe,CAAC;IAC7D,CAAC,CACF;IACD,MAAMI,wBAAgF,GAAG,IAAA5B,4BAAgB,EACvG,OAAOG,OAAO,EAAEoB,MAAM,KAAK;MACzB,MAAMC,eAAe,GAAG,MAAMvF,yBAAyB,CAACsF,MAAM,CAAC;MAC/D,MAAM5C,iBAAiB,CAACwB,OAAO,CAACwB,SAAS,EAAEH,eAAe,CAAC;IAC7D,CAAC,CACF;IACD,MAAMK,wBAAwB,GAAG,IAAA7B,4BAAgB,EAAE8B,KAAc,IAAK;MACpE,IAAI,CAACA,KAAK,EAAEzD,gBAAgB,EAAE;MAC9Bb,yBAAyB,CAACsE,KAAK,CAAC;IAClC,CAAC,CAAC;IAEF,oBACEvJ,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACN,kBAAkB,CAACkH,QAAQ;MAC1B7F,OAAO,EAAEA,OAAQ;MACjBmB,kBAAkB,EAAEA,kBAAmB;MACvC9B,qBAAqB,EAAEA,qBAAqB,IAAIsB,SAAS,CAACgB,KAAK,CAACC,YAAY,CAAC5B,OAAO,CAACX,qBAAsB;MAC3GY,mBAAmB,EAAEA,mBAAoB;MACzCgC,QAAQ,EAAEA,QAAS;MACnB+C,kBAAkB,EAAEA;IAAmB,gBAEvC3I,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACN,kBAAkB,CAACmH,MAAM;MACxBC,eAAe,EAAE/E,yBAA0B;MAC3C1B,iBAAiB,EAAEuE,kBAAmB;MACtCrE,kBAAkB,EAAEuE;IAAoB,EACxC,eACF1H,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAAClC,kBAAA,CAAAM,OAAiB;MAAC2E,OAAO,EAAEA,OAAQ;MAACgE,gBAAgB,eAAE3J,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACN,kBAAkB,CAACsH,aAAa;IAAI,gBAC1F5J,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACN,kBAAkB,CAACuH,WAAW;MAC7BlG,OAAO,EAAEA,OAAQ;MACjBlB,UAAU,EAAE+B,kBAAmB;MAC/B8D,kBAAkB,EAAEA,kBAAmB;MACvCI,mCAAmC,EAAEA,mCAAoC;MACzEC,kBAAkB,EAAEA,kBAAmB;MACvC5F,qBAAqB,EAAEA,qBAAsB;MAC7C+G,aAAa,EAAEzF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqC,MAAO;MACnC5D,aAAa,EAAEiF,UAAW;MAC1BnC,QAAQ,EAAEA,QAAS;MACnBC,WAAW,EAAEA,WAAY;MACzBkE,YAAY,EAAE/D,IAAK;MACnBgE,eAAe,EAAEjE,IAAK;MACtBE,OAAO,EAAEA,OAAQ;MACjBjB,sBAAsB,EAAEA,sBAAuB;MAC/CsE,wBAAwB,EAAEA,wBAAyB;MACnD5G,uBAAuB,EAAEA,uBAAwB;MACjDG,0BAA0B,EAAEA,0BAA2B;MACvDoH,qBAAqB,EAAE3D,aAAc;MACrC4D,eAAe,EAAE3D,aAAc;MAC/BnD,mBAAmB,EAAEuE,oBAAqB;MAC1C3D,aAAa,EAAEgE;IAAsB,EACrC,eACFhI,MAAA,CAAAgB,OAAA,CAAA4B,aAAA,CAACN,kBAAkB,CAAC6H,KAAK;MACvBC,oBAAoB,EAAE9H,kBAAkB,CAAC8H,oBAAqB;MAC9DC,iBAAiB,EAAEA,iBAAiB,CAAC1G,OAAO,CAAE;MAC9CoF,sBAAsB,EAAEA,sBAAuB;MAC/CG,sBAAsB,EAAEA,sBAAuB;MAC/CC,wBAAwB,EAAEA,wBAAyB;MACnDE,wBAAwB,EAAEA;IAAyB,EACnD,CACgB,CACQ;EAElC,CAAC;AACH,CAAC;AAED,SAASgB,iBAAiBA,CAAC1G,OAA6B,EAAE;EACxD,IAAIA,OAAO,CAAC2G,WAAW,EAAE;IACvB,OAAO3G,OAAO,CAAC4G,MAAM,KAAK,UAAU;EACtC;EAEA,OAAO,IAAI;AACb;AAAC,IAAAC,QAAA,GAEcpI,0BAA0B;AAAAqI,OAAA,CAAAzJ,OAAA,GAAAwJ,QAAA"}
|
|
@@ -96,7 +96,7 @@ const useMessageSearch = (sdk, _ref2) => {
|
|
|
96
96
|
const query = getMessageSearchQuery(sdk, {
|
|
97
97
|
keyword,
|
|
98
98
|
channelUrl: channel.url,
|
|
99
|
-
messageTimestampFrom:
|
|
99
|
+
messageTimestampFrom: channel.messageOffsetTimestamp,
|
|
100
100
|
order: _message.MessageSearchOrder.TIMESTAMP,
|
|
101
101
|
queryCreator
|
|
102
102
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_message","_uikitUtils","_MessageSearchResultItem","_interopRequireDefault","_StatusComposition","_messageSearch","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getMessageSearchQuery","sdk","options","queryCreator","createMessageSearchQuery","createMessageSearchFragment","initModule","MessageSearchModule","createMessageSearchModule","_ref","onPressHeaderLeft","NOOP","channel","renderSearchResultItem","onPressSearchResultItem","padding","useSafeAreaPadding","useSendbirdChat","keyword","setKeyword","search","searchResults","loading","next","error","query","useMessageSearch","renderItem","useFreshCallback","props","createElement","Provider","Header","onChangeKeyword","onPressHeaderRight","LoadingComponent","StatusLoading","Boolean","ErrorComponent","StatusError","onPressRetry","List","messages","flatListProps","keyboardDismissMode","keyboardShouldPersistTaps","onEndReached","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","_ref2","setQuery","useState","setLoading","setError","setSearchResults","queryInProgress","useRef","length","current","channelUrl","url","messageTimestampFrom","Math","max","joinedAt","invitedAt","order","MessageSearchOrder","TIMESTAMP","result","err","Logger","warn","hasNext","prev","_default","exports"],"sources":["createMessageSearchFragment.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\n\nimport { MessageSearchOrder } from '@sendbird/chat/message';\nimport {\n Logger,\n NOOP,\n SendbirdBaseMessage,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdMessageSearchQuery,\n useFreshCallback,\n useSafeAreaPadding,\n} from '@sendbird/uikit-utils';\n\nimport MessageSearchResultItem from '../components/MessageSearchResultItem';\nimport StatusComposition from '../components/StatusComposition';\nimport { createMessageSearchModule } from '../domain/messageSearch';\nimport type { MessageSearchFragment, MessageSearchModule, MessageSearchProps } from '../domain/messageSearch/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype DefaultMessageSearchQueryParams = {\n keyword: string;\n channelUrl: string;\n messageTimestampFrom: number;\n order: MessageSearchOrder;\n};\n\ntype SearchQueryOptions = DefaultMessageSearchQueryParams & {\n queryCreator?: (params: DefaultMessageSearchQueryParams) => SendbirdMessageSearchQuery;\n};\n\nfunction getMessageSearchQuery(sdk: SendbirdChatSDK, options: SearchQueryOptions) {\n if (options.queryCreator) return options.queryCreator(options);\n return sdk.createMessageSearchQuery(options);\n}\n\nconst createMessageSearchFragment = (initModule?: Partial<MessageSearchModule>): MessageSearchFragment => {\n const MessageSearchModule = createMessageSearchModule(initModule);\n\n return ({ onPressHeaderLeft = NOOP, channel, queryCreator, renderSearchResultItem, onPressSearchResultItem }) => {\n const padding = useSafeAreaPadding(['left', 'right', 'bottom']);\n\n const { sdk } = useSendbirdChat();\n const { keyword, setKeyword, search, searchResults, loading, next, error, query } = useMessageSearch(sdk, {\n channel,\n queryCreator,\n });\n\n const renderItem: MessageSearchProps['List']['renderSearchResultItem'] = useFreshCallback((props) => {\n if (renderSearchResultItem) return renderSearchResultItem(props);\n return <MessageSearchResultItem {...props} />;\n });\n\n return (\n <MessageSearchModule.Provider>\n <MessageSearchModule.Header\n keyword={keyword}\n onChangeKeyword={setKeyword}\n onPressHeaderLeft={onPressHeaderLeft}\n onPressHeaderRight={search}\n />\n <StatusComposition\n loading={loading}\n LoadingComponent={<MessageSearchModule.StatusLoading />}\n error={Boolean(error)}\n ErrorComponent={<MessageSearchModule.StatusError onPressRetry={search} />}\n >\n {query && (\n <MessageSearchModule.List\n channel={channel}\n onPressSearchResultItem={onPressSearchResultItem}\n messages={searchResults}\n renderSearchResultItem={renderItem}\n flatListProps={{\n keyboardDismissMode: 'on-drag',\n keyboardShouldPersistTaps: 'handled',\n onEndReached: next,\n ListEmptyComponent: MessageSearchModule.StatusEmpty,\n contentContainerStyle: { flexGrow: 1, ...padding },\n }}\n />\n )}\n </StatusComposition>\n </MessageSearchModule.Provider>\n );\n };\n};\n\nconst useMessageSearch = (\n sdk: SendbirdChatSDK,\n { channel, queryCreator }: { channel: SendbirdGroupChannel; queryCreator: SearchQueryOptions['queryCreator'] },\n) => {\n const [query, setQuery] = useState<SendbirdMessageSearchQuery>();\n const [keyword, setKeyword] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const [searchResults, setSearchResults] = useState<SendbirdBaseMessage[]>([]);\n const queryInProgress = useRef(false);\n\n const search = useFreshCallback(async () => {\n if (keyword.length <= 0) return;\n if (queryInProgress.current) return;\n\n const query = getMessageSearchQuery(sdk, {\n keyword,\n channelUrl: channel.url,\n messageTimestampFrom: Math.max(channel.joinedAt, channel.invitedAt),\n order: MessageSearchOrder.TIMESTAMP,\n queryCreator,\n });\n\n setQuery(query);\n setLoading(true);\n setError(null);\n\n try {\n queryInProgress.current = true;\n const result = await query.next();\n setSearchResults(result);\n } catch (err) {\n Logger.warn('[MessageSearchFragment] search failure', err);\n setError(err);\n } finally {\n queryInProgress.current = false;\n setLoading(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (!query?.hasNext) return;\n if (queryInProgress.current) return;\n\n try {\n queryInProgress.current = true;\n const result = await query.next();\n setSearchResults((prev) => [...prev, ...result]);\n } catch (err) {\n Logger.warn('[MessageSearchFragment] next failure', err);\n setError(err);\n } finally {\n queryInProgress.current = false;\n }\n });\n\n return {\n keyword,\n setKeyword,\n\n query,\n loading,\n error,\n searchResults,\n\n search,\n next,\n };\n};\n\nexport default createMessageSearchFragment;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_message","_uikitUtils","_MessageSearchResultItem","_interopRequireDefault","_StatusComposition","_messageSearch","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getMessageSearchQuery","sdk","options","queryCreator","createMessageSearchQuery","createMessageSearchFragment","initModule","MessageSearchModule","createMessageSearchModule","_ref","onPressHeaderLeft","NOOP","channel","renderSearchResultItem","onPressSearchResultItem","padding","useSafeAreaPadding","useSendbirdChat","keyword","setKeyword","search","searchResults","loading","next","error","query","useMessageSearch","renderItem","useFreshCallback","props","createElement","Provider","Header","onChangeKeyword","onPressHeaderRight","LoadingComponent","StatusLoading","Boolean","ErrorComponent","StatusError","onPressRetry","List","messages","flatListProps","keyboardDismissMode","keyboardShouldPersistTaps","onEndReached","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","_ref2","setQuery","useState","setLoading","setError","setSearchResults","queryInProgress","useRef","length","current","channelUrl","url","messageTimestampFrom","messageOffsetTimestamp","order","MessageSearchOrder","TIMESTAMP","result","err","Logger","warn","hasNext","prev","_default","exports"],"sources":["createMessageSearchFragment.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\n\nimport { MessageSearchOrder } from '@sendbird/chat/message';\nimport {\n Logger,\n NOOP,\n SendbirdBaseMessage,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdMessageSearchQuery,\n useFreshCallback,\n useSafeAreaPadding,\n} from '@sendbird/uikit-utils';\n\nimport MessageSearchResultItem from '../components/MessageSearchResultItem';\nimport StatusComposition from '../components/StatusComposition';\nimport { createMessageSearchModule } from '../domain/messageSearch';\nimport type { MessageSearchFragment, MessageSearchModule, MessageSearchProps } from '../domain/messageSearch/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype DefaultMessageSearchQueryParams = {\n keyword: string;\n channelUrl: string;\n messageTimestampFrom: number;\n order: MessageSearchOrder;\n};\n\ntype SearchQueryOptions = DefaultMessageSearchQueryParams & {\n queryCreator?: (params: DefaultMessageSearchQueryParams) => SendbirdMessageSearchQuery;\n};\n\nfunction getMessageSearchQuery(sdk: SendbirdChatSDK, options: SearchQueryOptions) {\n if (options.queryCreator) return options.queryCreator(options);\n return sdk.createMessageSearchQuery(options);\n}\n\nconst createMessageSearchFragment = (initModule?: Partial<MessageSearchModule>): MessageSearchFragment => {\n const MessageSearchModule = createMessageSearchModule(initModule);\n\n return ({ onPressHeaderLeft = NOOP, channel, queryCreator, renderSearchResultItem, onPressSearchResultItem }) => {\n const padding = useSafeAreaPadding(['left', 'right', 'bottom']);\n\n const { sdk } = useSendbirdChat();\n const { keyword, setKeyword, search, searchResults, loading, next, error, query } = useMessageSearch(sdk, {\n channel,\n queryCreator,\n });\n\n const renderItem: MessageSearchProps['List']['renderSearchResultItem'] = useFreshCallback((props) => {\n if (renderSearchResultItem) return renderSearchResultItem(props);\n return <MessageSearchResultItem {...props} />;\n });\n\n return (\n <MessageSearchModule.Provider>\n <MessageSearchModule.Header\n keyword={keyword}\n onChangeKeyword={setKeyword}\n onPressHeaderLeft={onPressHeaderLeft}\n onPressHeaderRight={search}\n />\n <StatusComposition\n loading={loading}\n LoadingComponent={<MessageSearchModule.StatusLoading />}\n error={Boolean(error)}\n ErrorComponent={<MessageSearchModule.StatusError onPressRetry={search} />}\n >\n {query && (\n <MessageSearchModule.List\n channel={channel}\n onPressSearchResultItem={onPressSearchResultItem}\n messages={searchResults}\n renderSearchResultItem={renderItem}\n flatListProps={{\n keyboardDismissMode: 'on-drag',\n keyboardShouldPersistTaps: 'handled',\n onEndReached: next,\n ListEmptyComponent: MessageSearchModule.StatusEmpty,\n contentContainerStyle: { flexGrow: 1, ...padding },\n }}\n />\n )}\n </StatusComposition>\n </MessageSearchModule.Provider>\n );\n };\n};\n\nconst useMessageSearch = (\n sdk: SendbirdChatSDK,\n { channel, queryCreator }: { channel: SendbirdGroupChannel; queryCreator: SearchQueryOptions['queryCreator'] },\n) => {\n const [query, setQuery] = useState<SendbirdMessageSearchQuery>();\n const [keyword, setKeyword] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const [searchResults, setSearchResults] = useState<SendbirdBaseMessage[]>([]);\n const queryInProgress = useRef(false);\n\n const search = useFreshCallback(async () => {\n if (keyword.length <= 0) return;\n if (queryInProgress.current) return;\n\n const query = getMessageSearchQuery(sdk, {\n keyword,\n channelUrl: channel.url,\n messageTimestampFrom: channel.messageOffsetTimestamp,\n order: MessageSearchOrder.TIMESTAMP,\n queryCreator,\n });\n\n setQuery(query);\n setLoading(true);\n setError(null);\n\n try {\n queryInProgress.current = true;\n const result = await query.next();\n setSearchResults(result);\n } catch (err) {\n Logger.warn('[MessageSearchFragment] search failure', err);\n setError(err);\n } finally {\n queryInProgress.current = false;\n setLoading(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (!query?.hasNext) return;\n if (queryInProgress.current) return;\n\n try {\n queryInProgress.current = true;\n const result = await query.next();\n setSearchResults((prev) => [...prev, ...result]);\n } catch (err) {\n Logger.warn('[MessageSearchFragment] next failure', err);\n setError(err);\n } finally {\n queryInProgress.current = false;\n }\n });\n\n return {\n keyword,\n setKeyword,\n\n query,\n loading,\n error,\n searchResults,\n\n search,\n next,\n };\n};\n\nexport default createMessageSearchFragment;\n"],"mappings":"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"}
|