@sendbird/uikit-react-native 3.1.2 → 3.3.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/EditInput.js +2 -11
- package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
- 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 +149 -323
- 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 +34 -3
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +148 -116
- 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 +134 -6
- 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/GroupChannelHeader.js +14 -4
- package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -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 +34 -7
- 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 +36 -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 +7 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/promise.js +138 -0
- package/lib/commonjs/utils/promise.js.map +1 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/EditInput.js +3 -12
- package/lib/module/components/ChannelInput/EditInput.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 +152 -326
- 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 +36 -5
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +149 -117
- 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 +132 -7
- 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/GroupChannelHeader.js +15 -5
- package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +29 -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 +36 -9
- 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 +8 -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 +5 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/promise.js +132 -0
- package/lib/module/utils/promise.js.map +1 -0
- 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 +9 -3
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -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/GroupChannelMessageRenderer/index.d.ts +3 -0
- 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/OpenChannelMessageRenderer/index.d.ts +2 -0
- 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 +48 -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 +5 -1
- package/lib/typescript/src/utils/promise.d.ts +7 -0
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +10 -12
- package/src/components/ChannelInput/EditInput.tsx +3 -15
- package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
- package/src/components/ChannelInput/SendInput.tsx +131 -329
- package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
- package/src/components/ChannelInput/index.tsx +37 -6
- package/src/components/ChannelMessageList/index.tsx +145 -113
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
- package/src/components/GroupChannelMessageRenderer/index.tsx +113 -4
- 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/GroupChannelHeader.tsx +14 -3
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +30 -43
- package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
- package/src/domain/groupChannel/types.ts +45 -0
- package/src/domain/userList/types.ts +2 -2
- package/src/fragments/createGroupChannelFragment.tsx +43 -8
- 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 +9 -1
- 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 +6 -1
- package/src/utils/promise.ts +139 -0
- package/src/version.ts +1 -1
|
@@ -54,7 +54,7 @@ const ChannelMessageList = (_ref, ref) => {
|
|
|
54
54
|
left,
|
|
55
55
|
right
|
|
56
56
|
} = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
57
|
-
const
|
|
57
|
+
const createMessagePressActions = useCreateMessagePressActions({
|
|
58
58
|
channel,
|
|
59
59
|
currentUserId,
|
|
60
60
|
onEditMessage,
|
|
@@ -74,8 +74,11 @@ const ChannelMessageList = (_ref, ref) => {
|
|
|
74
74
|
} = _ref2;
|
|
75
75
|
const {
|
|
76
76
|
onPress,
|
|
77
|
-
onLongPress
|
|
78
|
-
|
|
77
|
+
onLongPress,
|
|
78
|
+
bottomSheetItem
|
|
79
|
+
} = createMessagePressActions({
|
|
80
|
+
message: item
|
|
81
|
+
});
|
|
79
82
|
return renderMessage({
|
|
80
83
|
message: item,
|
|
81
84
|
prevMessage: messages[index + 1],
|
|
@@ -87,7 +90,9 @@ const ChannelMessageList = (_ref, ref) => {
|
|
|
87
90
|
enableMessageGrouping,
|
|
88
91
|
channel,
|
|
89
92
|
currentUserId,
|
|
90
|
-
focused: ((searchItem === null || searchItem === void 0 ? void 0 : searchItem.startingPoint) ?? -1) === item.createdAt
|
|
93
|
+
focused: ((searchItem === null || searchItem === void 0 ? void 0 : searchItem.startingPoint) ?? -1) === item.createdAt,
|
|
94
|
+
bottomSheetItem,
|
|
95
|
+
isFirstItem: index === 0
|
|
91
96
|
});
|
|
92
97
|
});
|
|
93
98
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -122,7 +127,7 @@ const ChannelMessageList = (_ref, ref) => {
|
|
|
122
127
|
onPress: () => onPressScrollToBottomButton()
|
|
123
128
|
})));
|
|
124
129
|
};
|
|
125
|
-
const
|
|
130
|
+
const useCreateMessagePressActions = _ref3 => {
|
|
126
131
|
let {
|
|
127
132
|
channel,
|
|
128
133
|
currentUserId,
|
|
@@ -152,25 +157,61 @@ const useGetMessagePressActions = _ref3 => {
|
|
|
152
157
|
const {
|
|
153
158
|
sbOptions
|
|
154
159
|
} = (0, _useContext.useSendbirdChat)();
|
|
155
|
-
const
|
|
160
|
+
const onResendFailure = error => {
|
|
156
161
|
toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');
|
|
157
162
|
_uikitUtils.Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);
|
|
158
163
|
};
|
|
159
|
-
const
|
|
164
|
+
const onDeleteFailure = error => {
|
|
165
|
+
toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');
|
|
166
|
+
_uikitUtils.Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);
|
|
167
|
+
};
|
|
168
|
+
const onCopyText = message => {
|
|
169
|
+
if (message.isUserMessage()) {
|
|
170
|
+
clipboardService.setString(message.message || '');
|
|
171
|
+
toast.show(STRINGS.TOAST.COPY_OK, 'success');
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
const onDownloadFile = message => {
|
|
175
|
+
if (message.isFileMessage()) {
|
|
176
|
+
if ((0, _uikitUtils.toMegabyte)(message.size) > 4) {
|
|
177
|
+
toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');
|
|
178
|
+
}
|
|
179
|
+
fileService.save({
|
|
180
|
+
fileUrl: message.url,
|
|
181
|
+
fileName: message.name,
|
|
182
|
+
fileType: message.type
|
|
183
|
+
}).then(response => {
|
|
184
|
+
toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');
|
|
185
|
+
_uikitUtils.Logger.log('File saved to', response);
|
|
186
|
+
}).catch(err => {
|
|
187
|
+
toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');
|
|
188
|
+
_uikitUtils.Logger.log('File save failure', err);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const onOpenFile = message => {
|
|
193
|
+
if (message.isFileMessage()) {
|
|
194
|
+
const fileType = (0, _uikitUtils.getFileType)(message.type || (0, _uikitUtils.getFileExtension)(message.name));
|
|
195
|
+
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
196
|
+
onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), (0, _uikitUtils.getAvailableUriFromFileMessage)(message));
|
|
197
|
+
} else {
|
|
198
|
+
_SBUUtils.default.openURL(message.url);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
const openSheetForFailedMessage = message => {
|
|
160
203
|
openSheet({
|
|
161
204
|
sheetItems: [{
|
|
162
205
|
title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,
|
|
163
|
-
onPress: () =>
|
|
164
|
-
onResendFailedMessage(message).catch(onFailureToReSend);
|
|
165
|
-
}
|
|
206
|
+
onPress: () => onResendFailedMessage(message).catch(onResendFailure)
|
|
166
207
|
}, {
|
|
167
208
|
title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,
|
|
168
209
|
titleColor: colors.ui.dialog.default.none.destructive,
|
|
169
|
-
onPress: () =>
|
|
210
|
+
onPress: () => alertForMessageDelete(message)
|
|
170
211
|
}]
|
|
171
212
|
});
|
|
172
213
|
};
|
|
173
|
-
const
|
|
214
|
+
const alertForMessageDelete = message => {
|
|
174
215
|
alert({
|
|
175
216
|
title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,
|
|
176
217
|
buttons: [{
|
|
@@ -179,127 +220,118 @@ const useGetMessagePressActions = _ref3 => {
|
|
|
179
220
|
text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,
|
|
180
221
|
style: 'destructive',
|
|
181
222
|
onPress: () => {
|
|
182
|
-
onDeleteMessage(message).catch(
|
|
223
|
+
onDeleteMessage(message).catch(onDeleteFailure);
|
|
183
224
|
}
|
|
184
225
|
}]
|
|
185
226
|
});
|
|
186
227
|
};
|
|
187
|
-
return
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
};
|
|
193
|
-
}
|
|
228
|
+
return _ref4 => {
|
|
229
|
+
let {
|
|
230
|
+
message
|
|
231
|
+
} = _ref4;
|
|
232
|
+
if (!message.isUserMessage() && !message.isFileMessage()) return {};
|
|
194
233
|
const sheetItems = [];
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
onLongPress: undefined
|
|
198
|
-
};
|
|
199
|
-
if (msg.isUserMessage()) {
|
|
200
|
-
sheetItems.push({
|
|
234
|
+
const menu = {
|
|
235
|
+
copy: message => ({
|
|
201
236
|
icon: 'copy',
|
|
202
237
|
title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,
|
|
203
|
-
onPress: () =>
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
238
|
+
onPress: () => onCopyText(message)
|
|
239
|
+
}),
|
|
240
|
+
edit: message => ({
|
|
241
|
+
icon: 'edit',
|
|
242
|
+
title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,
|
|
243
|
+
onPress: () => onEditMessage(message)
|
|
244
|
+
}),
|
|
245
|
+
delete: message => ({
|
|
246
|
+
disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,
|
|
247
|
+
icon: 'delete',
|
|
248
|
+
title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
|
|
249
|
+
onPress: () => alertForMessageDelete(message)
|
|
250
|
+
}),
|
|
251
|
+
reply: message => ({
|
|
252
|
+
disabled: Boolean(message.parentMessageId),
|
|
253
|
+
icon: 'reply',
|
|
254
|
+
title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,
|
|
255
|
+
onPress: () => onReplyMessage === null || onReplyMessage === void 0 ? void 0 : onReplyMessage(message)
|
|
256
|
+
}),
|
|
257
|
+
download: message => ({
|
|
211
258
|
icon: 'download',
|
|
212
259
|
title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,
|
|
213
|
-
onPress:
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');
|
|
223
|
-
_uikitUtils.Logger.log('File saved to', response);
|
|
224
|
-
}).catch(err => {
|
|
225
|
-
toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');
|
|
226
|
-
_uikitUtils.Logger.log('File save failure', err);
|
|
227
|
-
});
|
|
260
|
+
onPress: () => onDownloadFile(message)
|
|
261
|
+
})
|
|
262
|
+
};
|
|
263
|
+
if (message.isUserMessage()) {
|
|
264
|
+
sheetItems.push(menu.copy(message));
|
|
265
|
+
if (!channel.isEphemeral) {
|
|
266
|
+
if ((0, _uikitUtils.isMyMessage)(message, currentUserId) && message.sendingStatus === 'succeeded') {
|
|
267
|
+
sheetItems.push(menu.edit(message));
|
|
268
|
+
sheetItems.push(menu.delete(message));
|
|
228
269
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
if (!channel.isEphemeral) {
|
|
232
|
-
if ((0, _uikitUtils.isMyMessage)(msg, currentUserId) && msg.sendingStatus === 'succeeded') {
|
|
233
|
-
if (msg.isUserMessage()) {
|
|
234
|
-
sheetItems.push({
|
|
235
|
-
icon: 'edit',
|
|
236
|
-
title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,
|
|
237
|
-
onPress: () => onEditMessage(msg)
|
|
238
|
-
});
|
|
270
|
+
if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {
|
|
271
|
+
sheetItems.push(menu.reply(message));
|
|
239
272
|
}
|
|
240
|
-
sheetItems.push({
|
|
241
|
-
disabled: msg.threadInfo ? msg.threadInfo.replyCount > 0 : undefined,
|
|
242
|
-
icon: 'delete',
|
|
243
|
-
title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
|
|
244
|
-
onPress: () => confirmDelete(msg)
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {
|
|
248
|
-
sheetItems.push({
|
|
249
|
-
disabled: Boolean(msg.parentMessageId),
|
|
250
|
-
icon: 'reply',
|
|
251
|
-
title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,
|
|
252
|
-
onPress: () => onReplyMessage === null || onReplyMessage === void 0 ? void 0 : onReplyMessage(msg)
|
|
253
|
-
});
|
|
254
273
|
}
|
|
255
274
|
}
|
|
256
|
-
if (
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
}
|
|
268
|
-
default:
|
|
269
|
-
{
|
|
270
|
-
response.onPress = () => _SBUUtils.default.openURL(msg.url);
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
275
|
+
if (message.isFileMessage()) {
|
|
276
|
+
if (!(0, _uikitUtils.isVoiceMessage)(message)) {
|
|
277
|
+
sheetItems.push(menu.download(message));
|
|
278
|
+
}
|
|
279
|
+
if (!channel.isEphemeral) {
|
|
280
|
+
if ((0, _uikitUtils.isMyMessage)(message, currentUserId) && message.sendingStatus === 'succeeded') {
|
|
281
|
+
sheetItems.push(menu.delete(message));
|
|
282
|
+
}
|
|
283
|
+
if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {
|
|
284
|
+
sheetItems.push(menu.reply(message));
|
|
285
|
+
}
|
|
273
286
|
}
|
|
274
287
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
channel: channel,
|
|
286
|
-
onClose: onClose
|
|
287
|
-
});
|
|
288
|
-
} : undefined
|
|
288
|
+
const bottomSheetItem = {
|
|
289
|
+
sheetItems,
|
|
290
|
+
HeaderComponent: (0, _uikitUtils.shouldRenderReaction)(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) ? _ref5 => {
|
|
291
|
+
let {
|
|
292
|
+
onClose
|
|
293
|
+
} = _ref5;
|
|
294
|
+
return /*#__PURE__*/_react.default.createElement(_ReactionAddons.ReactionAddons.BottomSheet, {
|
|
295
|
+
message: message,
|
|
296
|
+
channel: channel,
|
|
297
|
+
onClose: onClose
|
|
289
298
|
});
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
} : undefined
|
|
300
|
+
};
|
|
301
|
+
switch (true) {
|
|
302
|
+
case message.sendingStatus === 'pending':
|
|
303
|
+
{
|
|
304
|
+
return {
|
|
305
|
+
onPress: undefined,
|
|
306
|
+
onLongPress: undefined,
|
|
307
|
+
bottomSheetItem: undefined
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
case message.sendingStatus === 'failed':
|
|
311
|
+
{
|
|
312
|
+
return {
|
|
313
|
+
onPress: () => onResendFailedMessage(message).catch(onResendFailure),
|
|
314
|
+
onLongPress: () => openSheetForFailedMessage(message),
|
|
315
|
+
bottomSheetItem
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
case message.isFileMessage():
|
|
319
|
+
{
|
|
320
|
+
return {
|
|
321
|
+
onPress: () => onOpenFile(message),
|
|
322
|
+
onLongPress: () => openSheet(bottomSheetItem),
|
|
323
|
+
bottomSheetItem
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
default:
|
|
327
|
+
{
|
|
328
|
+
return {
|
|
329
|
+
onPress: undefined,
|
|
330
|
+
onLongPress: () => openSheet(bottomSheetItem),
|
|
331
|
+
bottomSheetItem
|
|
332
|
+
};
|
|
333
|
+
}
|
|
301
334
|
}
|
|
302
|
-
return response;
|
|
303
335
|
};
|
|
304
336
|
};
|
|
305
337
|
const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onFailureToReSend","error","TOAST","RESEND_MSG_ERROR","Logger","handleFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","catch","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","CHANNEL_MESSAGE_COPY","setString","COPY_OK","CHANNEL_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","DOWNLOAD_OK","log","err","DOWNLOAD_ERROR","isEphemeral","isMyMessage","sendingStatus","CHANNEL_MESSAGE_EDIT","disabled","threadInfo","replyCount","CHANNEL_MESSAGE_DELETE","isGroupChannel","uikit","groupChannel","replyType","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","getFileType","getFileExtension","getAvailableUriFromFileMessage","SBUUtils","openURL","HeaderComponent","shouldRenderReaction","uikitWithAppInfo","enableReactions","_ref4","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { CommonComponent } from '../../types';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n }) => React.ReactElement | null;\n renderNewMessagesButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n newMessages: SendbirdMessage[];\n }>;\n renderScrollToBottomButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n }>;\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const getMessagePressActions = useGetMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress } = getMessagePressActions(item);\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useGetMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onFailureToReSend = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => {\n onResendFailedMessage(message).catch(onFailureToReSend);\n },\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error'));\n },\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: PressActions = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n }\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n },\n });\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'edit',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(msg),\n });\n }\n sheetItems.push({\n disabled: msg.threadInfo ? msg.threadInfo.replyCount > 0 : undefined,\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push({\n disabled: Boolean(msg.parentMessageId),\n icon: 'reply',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(msg),\n });\n }\n }\n\n if (msg.isFileMessage()) {\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => SBUUtils.openURL(msg.url);\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions,\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(onFailureToReSend);\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","SBUUtils","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","isVoiceMessage","HeaderComponent","shouldRenderReaction","uikitWithAppInfo","enableReactions","_ref5","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { CommonComponent } from '../../types';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n newMessages: SendbirdMessage[];\n }>;\n renderScrollToBottomButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n }>;\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n } else {\n SBUUtils.openURL(message.url);\n }\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n reply: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'reply' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions)\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}
|
package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js
CHANGED
|
@@ -14,6 +14,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
14
14
|
const GroupChannelMessageParentMessage = _ref => {
|
|
15
15
|
let {
|
|
16
16
|
variant,
|
|
17
|
+
channel,
|
|
17
18
|
message,
|
|
18
19
|
childMessage,
|
|
19
20
|
onPress
|
|
@@ -49,6 +50,21 @@ const GroupChannelMessageParentMessage = _ref => {
|
|
|
49
50
|
}
|
|
50
51
|
});
|
|
51
52
|
}, []);
|
|
53
|
+
const renderMessageWithText = message => {
|
|
54
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
|
|
55
|
+
style: styles.bubbleContainer,
|
|
56
|
+
backgroundColor: select({
|
|
57
|
+
light: palette.background100,
|
|
58
|
+
dark: palette.background400
|
|
59
|
+
})
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
61
|
+
body3: true,
|
|
62
|
+
color: colors.onBackground03,
|
|
63
|
+
suppressHighlighting: true,
|
|
64
|
+
numberOfLines: 2,
|
|
65
|
+
ellipsizeMode: 'tail'
|
|
66
|
+
}, message));
|
|
67
|
+
};
|
|
52
68
|
const renderFileMessageAsVideoThumbnail = url => {
|
|
53
69
|
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.VideoThumbnail, {
|
|
54
70
|
style: styles.image,
|
|
@@ -91,23 +107,14 @@ const GroupChannelMessageParentMessage = _ref => {
|
|
|
91
107
|
})));
|
|
92
108
|
};
|
|
93
109
|
const parentMessageComponent = (0, _uikitUtils.useIIFE)(() => {
|
|
110
|
+
if (channel.messageOffsetTimestamp > parentMessage.createdAt) {
|
|
111
|
+
return renderMessageWithText(STRINGS.LABELS.MESSAGE_UNAVAILABLE);
|
|
112
|
+
}
|
|
94
113
|
switch (type) {
|
|
95
114
|
case 'user':
|
|
96
115
|
case 'user.opengraph':
|
|
97
116
|
{
|
|
98
|
-
return
|
|
99
|
-
style: styles.bubbleContainer,
|
|
100
|
-
backgroundColor: select({
|
|
101
|
-
light: palette.background100,
|
|
102
|
-
dark: palette.background400
|
|
103
|
-
})
|
|
104
|
-
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
105
|
-
body3: true,
|
|
106
|
-
color: colors.onBackground03,
|
|
107
|
-
suppressHighlighting: true,
|
|
108
|
-
numberOfLines: 2,
|
|
109
|
-
ellipsizeMode: 'tail'
|
|
110
|
-
}, parentMessage.message));
|
|
117
|
+
return renderMessageWithText(parentMessage.message);
|
|
111
118
|
}
|
|
112
119
|
case 'file':
|
|
113
120
|
case 'file.audio':
|
|
@@ -122,6 +129,10 @@ const GroupChannelMessageParentMessage = _ref => {
|
|
|
122
129
|
{
|
|
123
130
|
return renderFileMessageAsPreview((0, _uikitUtils.getThumbnailUriFromFileMessage)(parentMessage));
|
|
124
131
|
}
|
|
132
|
+
case 'file.voice':
|
|
133
|
+
{
|
|
134
|
+
return renderMessageWithText(STRINGS.LABELS.VOICE_MESSAGE);
|
|
135
|
+
}
|
|
125
136
|
default:
|
|
126
137
|
{
|
|
127
138
|
return null;
|
package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_moduleContext","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageParentMessage","_ref","variant","message","childMessage","onPress","currentUser","useSendbirdChat","groupChannelPubSub","useContext","GroupChannelContexts","PubSub","select","colors","palette","useUIKitTheme","STRINGS","useLocalization","mediaService","usePlatformService","parentMessage","setParentMessage","useState","type","getMessageType","useEffect","subscribe","_ref2","data","updatedParent","messages","find","it","messageId","renderFileMessageAsVideoThumbnail","url","createElement","VideoThumbnail","style","styles","image","iconSize","source","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","renderFileMessageAsPreview","ImageWithPlaceholder","renderFileMessageAsDownloadable","name","Box","bubbleContainer","backgroundColor","light","background100","dark","background400","Icon","icon","getFileIconFromMessageType","size","color","onBackground03","containerStyle","fileIcon","Text","body3","numberOfLines","ellipsizeMode","truncate","mode","maxLen","parentMessageComponent","useIIFE","suppressHighlighting","getThumbnailUriFromFileMessage","alignItems","paddingLeft","paddingRight","PressBox","senderLabel","marginRight","caption1","LABELS","REPLY_FROM_SENDER_TO_RECEIVER","userId","flexDirection","justifyContent","messageContainer","createStyleSheet","opacity","marginTop","marginBottom","maxWidth","overflow","borderRadius","paddingHorizontal","paddingBottom","paddingTop","width","height","_default","exports"],"sources":["GroupChannelMessageParentMessage.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\n\nimport {\n Box,\n Icon,\n ImageWithPlaceholder,\n PressBox,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n truncate,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n variant: 'outgoing' | 'incoming';\n message: SendbirdUserMessage | SendbirdFileMessage;\n childMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: (message: SendbirdMessage) => void;\n};\n\nconst GroupChannelMessageParentMessage = ({ variant, message, childMessage, onPress }: Props) => {\n const { currentUser } = useSendbirdChat();\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { select, colors, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n\n const [parentMessage, setParentMessage] = useState(() => message);\n const type = getMessageType(parentMessage);\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\n if (type === 'MESSAGES_UPDATED') {\n const updatedParent = data.messages.find((it): it is SendbirdUserMessage | SendbirdFileMessage => {\n return it.messageId === parentMessage.messageId;\n });\n if (updatedParent) setParentMessage(updatedParent);\n }\n });\n }, []);\n\n const renderFileMessageAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.image}\n iconSize={18}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n const renderFileMessageAsPreview = (url: string) => {\n return <ImageWithPlaceholder style={styles.image} source={{ uri: url }} />;\n };\n const renderFileMessageAsDownloadable = (name: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Icon\n icon={getFileIconFromMessageType(type)}\n size={16}\n color={colors.onBackground03}\n containerStyle={styles.fileIcon}\n />\n <Text body3 color={colors.onBackground03} numberOfLines={1} ellipsizeMode={'middle'}>\n {truncate(name, { mode: 'mid', maxLen: 20 })}\n </Text>\n </Box>\n );\n };\n\n const parentMessageComponent = useIIFE(() => {\n switch (type) {\n case 'user':\n case 'user.opengraph': {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Text body3 color={colors.onBackground03} suppressHighlighting numberOfLines={2} ellipsizeMode={'tail'}>\n {(parentMessage as SendbirdUserMessage).message}\n </Text>\n </Box>\n );\n }\n case 'file':\n case 'file.audio': {\n return renderFileMessageAsDownloadable((parentMessage as SendbirdFileMessage).name);\n }\n case 'file.video': {\n return renderFileMessageAsVideoThumbnail(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.image': {\n return renderFileMessageAsPreview(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box>\n <Box\n alignItems={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n paddingLeft={variant === 'outgoing' ? 0 : 12}\n paddingRight={variant === 'outgoing' ? 12 : 0}\n >\n <PressBox onPress={() => onPress?.(parentMessage)} style={styles.senderLabel}>\n <Icon icon={'reply-filled'} size={13} color={colors.onBackground03} containerStyle={{ marginRight: 4 }} />\n <Text caption1 color={colors.onBackground03}>\n {STRINGS.LABELS.REPLY_FROM_SENDER_TO_RECEIVER(childMessage, parentMessage, currentUser?.userId)}\n </Text>\n </PressBox>\n </Box>\n <Box\n flexDirection={'row'}\n justifyContent={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n style={styles.messageContainer}\n >\n <PressBox onPress={() => onPress?.(parentMessage)}>{parentMessageComponent}</PressBox>\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n messageContainer: {\n opacity: 0.5,\n marginTop: 4,\n marginBottom: -6,\n },\n bubbleContainer: {\n maxWidth: 220,\n overflow: 'hidden',\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 16,\n paddingHorizontal: 12,\n paddingBottom: 12,\n paddingTop: 6,\n },\n image: {\n width: 156,\n height: 104,\n borderRadius: 16,\n overflow: 'hidden',\n },\n fileIcon: {\n width: 16,\n height: 16,\n borderRadius: 10,\n marginRight: 4,\n marginTop: 2,\n },\n senderLabel: {\n flexDirection: 'row',\n },\n});\n\nexport default GroupChannelMessageParentMessage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_moduleContext","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageParentMessage","_ref","variant","channel","message","childMessage","onPress","currentUser","useSendbirdChat","groupChannelPubSub","useContext","GroupChannelContexts","PubSub","select","colors","palette","useUIKitTheme","STRINGS","useLocalization","mediaService","usePlatformService","parentMessage","setParentMessage","useState","type","getMessageType","useEffect","subscribe","_ref2","data","updatedParent","messages","find","it","messageId","renderMessageWithText","createElement","Box","style","styles","bubbleContainer","backgroundColor","light","background100","dark","background400","Text","body3","color","onBackground03","suppressHighlighting","numberOfLines","ellipsizeMode","renderFileMessageAsVideoThumbnail","url","VideoThumbnail","image","iconSize","source","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","renderFileMessageAsPreview","ImageWithPlaceholder","renderFileMessageAsDownloadable","name","Icon","icon","getFileIconFromMessageType","size","containerStyle","fileIcon","truncate","mode","maxLen","parentMessageComponent","useIIFE","messageOffsetTimestamp","createdAt","LABELS","MESSAGE_UNAVAILABLE","getThumbnailUriFromFileMessage","VOICE_MESSAGE","alignItems","paddingLeft","paddingRight","PressBox","senderLabel","marginRight","caption1","REPLY_FROM_SENDER_TO_RECEIVER","userId","flexDirection","justifyContent","messageContainer","createStyleSheet","opacity","marginTop","marginBottom","maxWidth","overflow","borderRadius","paddingHorizontal","paddingBottom","paddingTop","width","height","_default","exports"],"sources":["GroupChannelMessageParentMessage.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\n\nimport {\n Box,\n Icon,\n ImageWithPlaceholder,\n PressBox,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n truncate,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n variant: 'outgoing' | 'incoming';\n channel: SendbirdGroupChannel;\n message: SendbirdUserMessage | SendbirdFileMessage;\n childMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: (message: SendbirdMessage) => void;\n};\n\nconst GroupChannelMessageParentMessage = ({ variant, channel, message, childMessage, onPress }: Props) => {\n const { currentUser } = useSendbirdChat();\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { select, colors, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n\n const [parentMessage, setParentMessage] = useState(() => message);\n const type = getMessageType(parentMessage);\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\n if (type === 'MESSAGES_UPDATED') {\n const updatedParent = data.messages.find((it): it is SendbirdUserMessage | SendbirdFileMessage => {\n return it.messageId === parentMessage.messageId;\n });\n if (updatedParent) setParentMessage(updatedParent);\n }\n });\n }, []);\n\n const renderMessageWithText = (message: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Text body3 color={colors.onBackground03} suppressHighlighting numberOfLines={2} ellipsizeMode={'tail'}>\n {message}\n </Text>\n </Box>\n );\n };\n\n const renderFileMessageAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.image}\n iconSize={18}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n const renderFileMessageAsPreview = (url: string) => {\n return <ImageWithPlaceholder style={styles.image} source={{ uri: url }} />;\n };\n const renderFileMessageAsDownloadable = (name: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Icon\n icon={getFileIconFromMessageType(type)}\n size={16}\n color={colors.onBackground03}\n containerStyle={styles.fileIcon}\n />\n <Text body3 color={colors.onBackground03} numberOfLines={1} ellipsizeMode={'middle'}>\n {truncate(name, { mode: 'mid', maxLen: 20 })}\n </Text>\n </Box>\n );\n };\n\n const parentMessageComponent = useIIFE(() => {\n if (channel.messageOffsetTimestamp > parentMessage.createdAt) {\n return renderMessageWithText(STRINGS.LABELS.MESSAGE_UNAVAILABLE);\n }\n\n switch (type) {\n case 'user':\n case 'user.opengraph': {\n return renderMessageWithText((parentMessage as SendbirdUserMessage).message);\n }\n case 'file':\n case 'file.audio': {\n return renderFileMessageAsDownloadable((parentMessage as SendbirdFileMessage).name);\n }\n case 'file.video': {\n return renderFileMessageAsVideoThumbnail(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.image': {\n return renderFileMessageAsPreview(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.voice': {\n return renderMessageWithText(STRINGS.LABELS.VOICE_MESSAGE);\n }\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box>\n <Box\n alignItems={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n paddingLeft={variant === 'outgoing' ? 0 : 12}\n paddingRight={variant === 'outgoing' ? 12 : 0}\n >\n <PressBox onPress={() => onPress?.(parentMessage)} style={styles.senderLabel}>\n <Icon icon={'reply-filled'} size={13} color={colors.onBackground03} containerStyle={{ marginRight: 4 }} />\n <Text caption1 color={colors.onBackground03}>\n {STRINGS.LABELS.REPLY_FROM_SENDER_TO_RECEIVER(childMessage, parentMessage, currentUser?.userId)}\n </Text>\n </PressBox>\n </Box>\n <Box\n flexDirection={'row'}\n justifyContent={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n style={styles.messageContainer}\n >\n <PressBox onPress={() => onPress?.(parentMessage)}>{parentMessageComponent}</PressBox>\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n messageContainer: {\n opacity: 0.5,\n marginTop: 4,\n marginBottom: -6,\n },\n bubbleContainer: {\n maxWidth: 220,\n overflow: 'hidden',\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 16,\n paddingHorizontal: 12,\n paddingBottom: 12,\n paddingTop: 6,\n },\n image: {\n width: 156,\n height: 104,\n borderRadius: 16,\n overflow: 'hidden',\n },\n fileIcon: {\n width: 16,\n height: 16,\n borderRadius: 10,\n marginRight: 4,\n marginTop: 2,\n },\n senderLabel: {\n flexDirection: 'row',\n },\n});\n\nexport default GroupChannelMessageParentMessage;\n"],"mappings":"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"}
|