@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
package/README.md
CHANGED
|
@@ -78,6 +78,7 @@ Add the following permissions to your `android/app/src/main/AndroidManifest.xml`
|
|
|
78
78
|
package="com.your.app">
|
|
79
79
|
|
|
80
80
|
<uses-permission android:name="android.permission.CAMERA" />
|
|
81
|
+
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
81
82
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
|
|
82
83
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
|
|
83
84
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
@@ -123,6 +124,8 @@ const App = () => {
|
|
|
123
124
|
notification: NotificationService,
|
|
124
125
|
clipboard: ClipboardService,
|
|
125
126
|
media: MediaService,
|
|
127
|
+
recorder: RecorderService,
|
|
128
|
+
player: PlayerService,
|
|
126
129
|
}}
|
|
127
130
|
>
|
|
128
131
|
{/* ... */}
|
|
@@ -134,7 +137,7 @@ const App = () => {
|
|
|
134
137
|
In order to implement the interfaces to your React Native app more easily, we provide various helper functions for each interface.
|
|
135
138
|
|
|
136
139
|
> **NOTE**: Helper function is not required! You can implement it with native modules you're using.
|
|
137
|
-
> More details about PlatformService interfaces, please see [here](https://sendbird.com/docs/uikit/v3/react-native/core-components/provider/platformserviceprovider)
|
|
140
|
+
> More details about PlatformService interfaces, please see [here](https://sendbird.com/docs/chat/uikit/v3/react-native/core-components/provider/platformserviceprovider)
|
|
138
141
|
|
|
139
142
|
**Using React Native CLI**
|
|
140
143
|
|
|
@@ -147,6 +150,7 @@ npm install react-native-video \
|
|
|
147
150
|
react-native-image-picker \
|
|
148
151
|
react-native-document-picker \
|
|
149
152
|
react-native-create-thumbnail \
|
|
153
|
+
react-native-audio-recorder-player \
|
|
150
154
|
@react-native-clipboard/clipboard \
|
|
151
155
|
@react-native-camera-roll/camera-roll \
|
|
152
156
|
@react-native-firebase/app \
|
|
@@ -157,34 +161,45 @@ npx pod-install
|
|
|
157
161
|
```
|
|
158
162
|
|
|
159
163
|
```ts
|
|
160
|
-
import * as ImageResizer from '@bam.tech/react-native-image-resizer';
|
|
161
|
-
import { CameraRoll } from '@react-native-camera-roll/camera-roll';
|
|
162
164
|
import Clipboard from '@react-native-clipboard/clipboard';
|
|
165
|
+
import { CameraRoll } from '@react-native-camera-roll/camera-roll';
|
|
163
166
|
import RNFBMessaging from '@react-native-firebase/messaging';
|
|
164
|
-
import
|
|
167
|
+
import Video from 'react-native-video';
|
|
165
168
|
import * as DocumentPicker from 'react-native-document-picker';
|
|
166
169
|
import * as FileAccess from 'react-native-file-access';
|
|
167
170
|
import * as ImagePicker from 'react-native-image-picker';
|
|
168
171
|
import * as Permissions from 'react-native-permissions';
|
|
169
|
-
import
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
172
|
+
import * as CreateThumbnail from 'react-native-create-thumbnail';
|
|
173
|
+
import * as ImageResizer from '@bam.tech/react-native-image-resizer';
|
|
174
|
+
import * as AudioRecorderPlayer from 'react-native-audio-recorder-player';
|
|
175
|
+
|
|
176
|
+
const nativePlatformServices = {
|
|
177
|
+
clipboard: createNativeClipboardService(Clipboard),
|
|
178
|
+
notification: createNativeNotificationService({
|
|
179
|
+
messagingModule: RNFBMessaging,
|
|
180
|
+
permissionModule: Permissions,
|
|
181
|
+
}),
|
|
182
|
+
file: createNativeFileService({
|
|
183
|
+
imagePickerModule: ImagePicker,
|
|
184
|
+
documentPickerModule: DocumentPicker,
|
|
185
|
+
permissionModule: Permissions,
|
|
186
|
+
fsModule: FileAccess,
|
|
187
|
+
mediaLibraryModule: CameraRoll,
|
|
188
|
+
}),
|
|
189
|
+
media: createNativeMediaService({
|
|
190
|
+
VideoComponent: Video,
|
|
191
|
+
thumbnailModule: CreateThumbnail,
|
|
192
|
+
imageResizerModule: ImageResizer,
|
|
193
|
+
}),
|
|
194
|
+
player: createNativePlayerService({
|
|
195
|
+
audioRecorderModule: AudioRecorderPlayer,
|
|
196
|
+
permissionModule: Permissions,
|
|
197
|
+
}),
|
|
198
|
+
recorder: createNativeRecorderService({
|
|
199
|
+
audioRecorderModule: AudioRecorderPlayer,
|
|
200
|
+
permissionModule: Permissions,
|
|
201
|
+
}),
|
|
202
|
+
};
|
|
188
203
|
```
|
|
189
204
|
|
|
190
205
|
**Using Expo CLI**
|
|
@@ -204,30 +219,38 @@ expo install expo-image-picker \
|
|
|
204
219
|
```
|
|
205
220
|
|
|
206
221
|
```ts
|
|
207
|
-
import * as ExpoAV from 'expo-av';
|
|
208
222
|
import * as ExpoClipboard from 'expo-clipboard';
|
|
209
223
|
import * as ExpoDocumentPicker from 'expo-document-picker';
|
|
210
224
|
import * as ExpoFS from 'expo-file-system';
|
|
211
|
-
import * as ExpoImageManipulator from 'expo-image-manipulator';
|
|
212
225
|
import * as ExpoImagePicker from 'expo-image-picker';
|
|
213
226
|
import * as ExpoMediaLibrary from 'expo-media-library';
|
|
214
227
|
import * as ExpoNotifications from 'expo-notifications';
|
|
228
|
+
import * as ExpoAV from 'expo-av';
|
|
215
229
|
import * as ExpoVideoThumbnail from 'expo-video-thumbnails';
|
|
230
|
+
import * as ExpoImageManipulator from 'expo-image-manipulator';
|
|
216
231
|
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
232
|
+
const expoPlatformServices = {
|
|
233
|
+
clipboard: createExpoClipboardService(ExpoClipboard),
|
|
234
|
+
notification: createExpoNotificationService(ExpoNotifications),
|
|
235
|
+
file: createExpoFileService({
|
|
236
|
+
fsModule: ExpoFS,
|
|
237
|
+
imagePickerModule: ExpoImagePicker,
|
|
238
|
+
mediaLibraryModule: ExpoMediaLibrary,
|
|
239
|
+
documentPickerModule: ExpoDocumentPicker,
|
|
240
|
+
}),
|
|
241
|
+
media: createExpoMediaService({
|
|
242
|
+
avModule: ExpoAV,
|
|
243
|
+
thumbnailModule: ExpoVideoThumbnail,
|
|
244
|
+
imageManipulator: ExpoImageManipulator,
|
|
245
|
+
fsModule: ExpoFS,
|
|
246
|
+
}),
|
|
247
|
+
player: createExpoPlayerService({
|
|
248
|
+
avModule: ExpoAV,
|
|
249
|
+
}),
|
|
250
|
+
recorder: createExpoRecorderService({
|
|
251
|
+
avModule: ExpoAV,
|
|
252
|
+
}),
|
|
253
|
+
};
|
|
231
254
|
```
|
|
232
255
|
|
|
233
256
|
### Local caching (required)
|
|
@@ -236,7 +259,7 @@ You can implement Local caching easily.
|
|
|
236
259
|
|
|
237
260
|
```shell
|
|
238
261
|
npm i @react-native-async-storage/async-storage
|
|
239
|
-
npx pod-
|
|
262
|
+
npx pod-install
|
|
240
263
|
```
|
|
241
264
|
|
|
242
265
|
```tsx
|
|
@@ -280,7 +303,7 @@ const App = () => {
|
|
|
280
303
|
### Integration with navigation library
|
|
281
304
|
|
|
282
305
|
Now you can create a screen and integrate it with a navigation library like [`react-navigation`](https://reactnavigation.org/).
|
|
283
|
-
See more details on [here](https://
|
|
306
|
+
See more details on [here](https://sendbird.com/docs/chat/uikit/v3/react-native/introduction/screen-navigation)
|
|
284
307
|
|
|
285
308
|
The example below shows how to integrate using `react-navigation`.
|
|
286
309
|
|
|
@@ -420,6 +443,8 @@ const App = () => {
|
|
|
420
443
|
notification: NotificationService,
|
|
421
444
|
clipboard: ClipboardService,
|
|
422
445
|
media: MediaService,
|
|
446
|
+
recorder: RecorderService,
|
|
447
|
+
player: PlayerService,
|
|
423
448
|
}}
|
|
424
449
|
>
|
|
425
450
|
<Navigation />
|
|
@@ -429,4 +454,4 @@ const App = () => {
|
|
|
429
454
|
```
|
|
430
455
|
|
|
431
456
|
> You can use sendbird sdk using `useSendbirdChat()` hook, and you can connect or disconnect using `useConnection()` hook.
|
|
432
|
-
> for more details about hooks, please refer to our [docs](https://sendbird.com/docs/uikit/v3/react-native/core-components/hooks)
|
|
457
|
+
> for more details about hooks, please refer to our [docs](https://sendbird.com/docs/chat/uikit/v3/react-native/core-components/hooks)
|
|
@@ -13,6 +13,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
13
13
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
14
|
const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput(_ref, ref) {
|
|
15
15
|
let {
|
|
16
|
+
style,
|
|
16
17
|
text,
|
|
17
18
|
onChangeText,
|
|
18
19
|
messageToEdit,
|
|
@@ -62,7 +63,7 @@ const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput(_ref, r
|
|
|
62
63
|
editable: !inputDisabled,
|
|
63
64
|
autoFocus: autoFocus,
|
|
64
65
|
onChangeText: onChangeText,
|
|
65
|
-
style:
|
|
66
|
+
style: style,
|
|
66
67
|
placeholder: STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE,
|
|
67
68
|
onSelectionChange: onSelectionChange
|
|
68
69
|
}, mentionManager.textToMentionedComponents(text, mentionedUsers, sbOptions.uikit.groupChannel.channel.enableMention))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -87,16 +88,6 @@ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
|
|
|
87
88
|
flexDirection: 'column',
|
|
88
89
|
alignItems: 'center'
|
|
89
90
|
},
|
|
90
|
-
input: {
|
|
91
|
-
flex: 1,
|
|
92
|
-
marginRight: 4,
|
|
93
|
-
minHeight: 36,
|
|
94
|
-
maxHeight: 36 * _reactNative.Platform.select({
|
|
95
|
-
ios: 2.5,
|
|
96
|
-
default: 2
|
|
97
|
-
}),
|
|
98
|
-
borderRadius: 20
|
|
99
|
-
},
|
|
100
91
|
inputWrapper: {
|
|
101
92
|
flexDirection: 'row'
|
|
102
93
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EditInput","forwardRef","_ref","ref","text","onChangeText","messageToEdit","setMessageToEdit","onPressUpdateUserMessage","onSelectionChange","autoFocus","mentionedUsers","inputDisabled","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","toast","useToast","onPressCancel","onPressSave","isUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","message","catch","onFailureToUpdate","show","TOAST","UPDATE_MSG_ERROR","createElement","View","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EditInput","forwardRef","_ref","ref","style","text","onChangeText","messageToEdit","setMessageToEdit","onPressUpdateUserMessage","onSelectionChange","autoFocus","mentionedUsers","inputDisabled","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","toast","useToast","onPressCancel","onPressSave","isUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","message","catch","onFailureToUpdate","show","TOAST","UPDATE_MSG_ERROR","createElement","View","styles","editInputContainer","inputWrapper","TextInput","multiline","disableFullscreenUI","editable","placeholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","textToMentionedComponents","marginTop","flexDirection","Button","variant","onPress","CHANNEL_INPUT_EDIT_CANCEL","space","CHANNEL_INPUT_EDIT_OK","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flex","_default","exports"],"sources":["EditInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { NativeSyntheticEvent, TextInput as RNTextInput, TextInputSelectionChangeEventData, View } from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport { Button, TextInput, createStyleSheet, useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../hooks/useContext';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface EditInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n messageToEdit: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n autoFocus: boolean;\n mentionedUsers: MentionedUser[];\n}\n\nconst EditInput = forwardRef<RNTextInput, EditInputProps>(function EditInput(\n {\n style,\n text,\n onChangeText,\n messageToEdit,\n setMessageToEdit,\n onPressUpdateUserMessage,\n onSelectionChange,\n autoFocus,\n mentionedUsers,\n inputDisabled,\n },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n\n const onPressCancel = () => {\n setMessageToEdit();\n onChangeText('');\n };\n\n const onPressSave = () => {\n if (messageToEdit.isUserMessage()) {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n );\n\n onPressUpdateUserMessage(messageToEdit, {\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToUpdate);\n }\n setMessageToEdit();\n onChangeText('');\n };\n\n const onFailureToUpdate = () => toast.show(STRINGS.TOAST.UPDATE_MSG_ERROR, 'error');\n\n return (\n <View style={styles.editInputContainer}>\n <View style={styles.inputWrapper}>\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n editable={!inputDisabled}\n autoFocus={autoFocus}\n onChangeText={onChangeText}\n style={style}\n placeholder={STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE}\n onSelectionChange={onSelectionChange}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n </View>\n <View style={{ marginTop: 8, flexDirection: 'row' }}>\n <Button variant={'text'} onPress={onPressCancel}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_CANCEL}\n </Button>\n <View style={styles.space} />\n <Button variant={'contained'} onPress={onPressSave}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_OK}\n </Button>\n </View>\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n editInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: 'column',\n alignItems: 'center',\n },\n inputWrapper: {\n flexDirection: 'row',\n },\n space: {\n flex: 1,\n },\n});\n\nexport default EditInput;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MessageToReplyPreview = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
|
|
10
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
11
|
+
var _useContext = require("../../hooks/useContext");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
const MessageToReplyPreview = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
messageToReply,
|
|
16
|
+
setMessageToReply
|
|
17
|
+
} = _ref;
|
|
18
|
+
const {
|
|
19
|
+
colors,
|
|
20
|
+
select,
|
|
21
|
+
palette
|
|
22
|
+
} = (0, _uikitReactNativeFoundation.useUIKitTheme)();
|
|
23
|
+
const {
|
|
24
|
+
mediaService
|
|
25
|
+
} = (0, _useContext.usePlatformService)();
|
|
26
|
+
const {
|
|
27
|
+
STRINGS
|
|
28
|
+
} = (0, _useContext.useLocalization)();
|
|
29
|
+
const getFileIconAsImage = url => {
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ImageWithPlaceholder, {
|
|
31
|
+
source: {
|
|
32
|
+
uri: url
|
|
33
|
+
},
|
|
34
|
+
style: styles.previewImage
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const getFileIconAsVideoThumbnail = url => {
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.VideoThumbnail, {
|
|
39
|
+
style: styles.previewImage,
|
|
40
|
+
iconSize: 0,
|
|
41
|
+
source: url,
|
|
42
|
+
fetchThumbnailFromVideoSource: uri => mediaService.getVideoThumbnail({
|
|
43
|
+
url: uri,
|
|
44
|
+
timeMills: 1000
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const getFileIconAsSymbol = icon => {
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
|
|
50
|
+
icon: icon,
|
|
51
|
+
size: 20,
|
|
52
|
+
color: colors.onBackground02,
|
|
53
|
+
containerStyle: [styles.fileIcon, {
|
|
54
|
+
backgroundColor: select({
|
|
55
|
+
light: palette.background100,
|
|
56
|
+
dark: palette.background500
|
|
57
|
+
})
|
|
58
|
+
}]
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const getFileIcon = messageToReply => {
|
|
62
|
+
if (messageToReply !== null && messageToReply !== void 0 && messageToReply.isFileMessage()) {
|
|
63
|
+
const messageType = (0, _uikitUtils.getMessageType)(messageToReply);
|
|
64
|
+
switch (messageType) {
|
|
65
|
+
case 'file.image':
|
|
66
|
+
return getFileIconAsImage((0, _uikitUtils.getThumbnailUriFromFileMessage)(messageToReply));
|
|
67
|
+
case 'file.video':
|
|
68
|
+
return getFileIconAsVideoThumbnail((0, _uikitUtils.getThumbnailUriFromFileMessage)(messageToReply));
|
|
69
|
+
case 'file.voice':
|
|
70
|
+
return null;
|
|
71
|
+
default:
|
|
72
|
+
return getFileIconAsSymbol((0, _uikitUtils.getFileIconFromMessageType)(messageType));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
};
|
|
77
|
+
if (!messageToReply) return null;
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
79
|
+
style: [styles.messageToReplyContainer, {
|
|
80
|
+
borderColor: colors.onBackground04
|
|
81
|
+
}]
|
|
82
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
83
|
+
style: {
|
|
84
|
+
flex: 1,
|
|
85
|
+
flexDirection: 'row'
|
|
86
|
+
}
|
|
87
|
+
}, getFileIcon(messageToReply), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
88
|
+
style: {
|
|
89
|
+
flex: 1,
|
|
90
|
+
flexDirection: 'column'
|
|
91
|
+
}
|
|
92
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
93
|
+
numberOfLines: 1,
|
|
94
|
+
style: {
|
|
95
|
+
fontSize: 13,
|
|
96
|
+
fontWeight: '900',
|
|
97
|
+
marginBottom: 4
|
|
98
|
+
}
|
|
99
|
+
}, STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_TITLE(messageToReply.sender)), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
100
|
+
numberOfLines: 1,
|
|
101
|
+
style: {
|
|
102
|
+
fontSize: 13,
|
|
103
|
+
color: colors.onBackground03
|
|
104
|
+
}
|
|
105
|
+
}, STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_BODY(messageToReply)))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
106
|
+
onPress: () => setMessageToReply === null || setMessageToReply === void 0 ? void 0 : setMessageToReply(undefined)
|
|
107
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
|
|
108
|
+
icon: 'close',
|
|
109
|
+
size: 24,
|
|
110
|
+
color: colors.onBackground01,
|
|
111
|
+
containerStyle: styles.closeIcon
|
|
112
|
+
})));
|
|
113
|
+
};
|
|
114
|
+
exports.MessageToReplyPreview = MessageToReplyPreview;
|
|
115
|
+
const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
|
|
116
|
+
previewImage: {
|
|
117
|
+
width: 36,
|
|
118
|
+
height: 36,
|
|
119
|
+
borderRadius: 10,
|
|
120
|
+
marginTop: 2,
|
|
121
|
+
marginRight: 10,
|
|
122
|
+
overflow: 'hidden'
|
|
123
|
+
},
|
|
124
|
+
messageToReplyContainer: {
|
|
125
|
+
flexDirection: 'row',
|
|
126
|
+
paddingLeft: 18,
|
|
127
|
+
paddingRight: 16,
|
|
128
|
+
paddingTop: 10,
|
|
129
|
+
paddingBottom: 8,
|
|
130
|
+
alignItems: 'center',
|
|
131
|
+
borderTopWidth: 1
|
|
132
|
+
},
|
|
133
|
+
fileIcon: {
|
|
134
|
+
width: 36,
|
|
135
|
+
height: 36,
|
|
136
|
+
borderRadius: 10,
|
|
137
|
+
marginRight: 10,
|
|
138
|
+
marginTop: 2
|
|
139
|
+
},
|
|
140
|
+
closeIcon: {
|
|
141
|
+
marginLeft: 4,
|
|
142
|
+
padding: 4
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=MessageToReplyPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","obj","__esModule","default","MessageToReplyPreview","_ref","messageToReply","setMessageToReply","colors","select","palette","useUIKitTheme","mediaService","usePlatformService","STRINGS","useLocalization","getFileIconAsImage","url","createElement","ImageWithPlaceholder","source","uri","style","styles","previewImage","getFileIconAsVideoThumbnail","VideoThumbnail","iconSize","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","getFileIconAsSymbol","icon","Icon","size","color","onBackground02","containerStyle","fileIcon","backgroundColor","light","background100","dark","background500","getFileIcon","isFileMessage","messageType","getMessageType","getThumbnailUriFromFileMessage","getFileIconFromMessageType","View","messageToReplyContainer","borderColor","onBackground04","flex","flexDirection","Text","numberOfLines","fontSize","fontWeight","marginBottom","LABELS","CHANNEL_INPUT_REPLY_PREVIEW_TITLE","sender","onBackground03","CHANNEL_INPUT_REPLY_PREVIEW_BODY","TouchableOpacity","onPress","undefined","onBackground01","closeIcon","exports","createStyleSheet","width","height","borderRadius","marginTop","marginRight","overflow","paddingLeft","paddingRight","paddingTop","paddingBottom","alignItems","borderTopWidth","marginLeft","padding"],"sources":["MessageToReplyPreview.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n ImageWithPlaceholder,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n FileIcon,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n} from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../hooks/useContext';\n\nexport type MessageToReplyPreviewProps = {\n messageToReply?: SendbirdFileMessage | SendbirdUserMessage;\n setMessageToReply?: (message?: undefined | SendbirdFileMessage | SendbirdUserMessage) => void;\n};\n\nexport const MessageToReplyPreview = ({ messageToReply, setMessageToReply }: MessageToReplyPreviewProps) => {\n const { colors, select, palette } = useUIKitTheme();\n const { mediaService } = usePlatformService();\n const { STRINGS } = useLocalization();\n\n const getFileIconAsImage = (url: string) => {\n return <ImageWithPlaceholder source={{ uri: url }} style={styles.previewImage} />;\n };\n\n const getFileIconAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.previewImage}\n iconSize={0}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n\n const getFileIconAsSymbol = (icon: FileIcon) => {\n return (\n <Icon\n icon={icon}\n size={20}\n color={colors.onBackground02}\n containerStyle={[\n styles.fileIcon,\n {\n backgroundColor: select({ light: palette.background100, dark: palette.background500 }),\n },\n ]}\n />\n );\n };\n\n const getFileIcon = (messageToReply: SendbirdBaseMessage) => {\n if (messageToReply?.isFileMessage()) {\n const messageType = getMessageType(messageToReply);\n switch (messageType) {\n case 'file.image':\n return getFileIconAsImage(getThumbnailUriFromFileMessage(messageToReply));\n case 'file.video':\n return getFileIconAsVideoThumbnail(getThumbnailUriFromFileMessage(messageToReply));\n case 'file.voice':\n return null;\n default:\n return getFileIconAsSymbol(getFileIconFromMessageType(messageType));\n }\n }\n return null;\n };\n\n if (!messageToReply) return null;\n\n return (\n <View style={[styles.messageToReplyContainer, { borderColor: colors.onBackground04 }]}>\n <View style={{ flex: 1, flexDirection: 'row' }}>\n {getFileIcon(messageToReply)}\n <View style={{ flex: 1, flexDirection: 'column' }}>\n <Text numberOfLines={1} style={{ fontSize: 13, fontWeight: '900', marginBottom: 4 }}>\n {STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_TITLE(messageToReply.sender)}\n </Text>\n <Text numberOfLines={1} style={{ fontSize: 13, color: colors.onBackground03 }}>\n {STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_BODY(messageToReply)}\n </Text>\n </View>\n </View>\n <TouchableOpacity onPress={() => setMessageToReply?.(undefined)}>\n <Icon icon={'close'} size={24} color={colors.onBackground01} containerStyle={styles.closeIcon} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n previewImage: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginTop: 2,\n marginRight: 10,\n overflow: 'hidden',\n },\n messageToReplyContainer: {\n flexDirection: 'row',\n paddingLeft: 18,\n paddingRight: 16,\n paddingTop: 10,\n paddingBottom: 8,\n alignItems: 'center',\n borderTopWidth: 1,\n },\n fileIcon: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginRight: 10,\n marginTop: 2,\n },\n closeIcon: {\n marginLeft: 4,\n padding: 4,\n },\n});\n"],"mappings":"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"}
|