@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","convertFileTypeToMessageType","getFileIconFromMessageType","getFileTypeFromMessage","isDifferentChannel","isMyMessage","useIIFE","useUniqHandlerId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","GroupChannelPreviewContainer","_ref","onPress","onLongPress","channel","currentUser","sdk","sbOptions","mentionManager","STRINGS","colors","typingUsers","setTypingUsers","handlerId","onTypingStatusUpdated","eventChannel","uikit","groupChannel","channelList","enableTypingIndicator","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","fileType","_channel$lastMessage","isFileMessage","undefined","titleCaptionIcon","isEphemeral","enableMessageReceiptStatus","userId","createElement","size","style","styles","icon","color","error","onBackground03","containerStyle","secondary","unreadMessageCount","delayLongPress","customCover","coverUrl","title","CHANNEL_PREVIEW_TITLE","titleCaptionLeft","titleCaption","CHANNEL_PREVIEW_TITLE_CAPTION","body","bodyIcon","badgeCount","mentioned","unreadMentionCount","mentionTrigger","config","trigger","memberCount","frozen","isFrozen","broadcast","isBroadcast","notificationOff","myPushTriggerOption","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n convertFileTypeToMessageType,\n getFileIconFromMessageType,\n getFileTypeFromMessage,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');\n useChannelHandler(sdk, handlerId, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const fileType = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return getFileTypeFromMessage(channel.lastMessage);\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage || channel.isEphemeral) return undefined;\n if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={fileType && getFileIconFromMessageType(convertFileTypeToMessageType(fileType))}\n badgeCount={unreadMessageCount}\n mentioned={channel.unreadMentionCount > 0}\n mentionTrigger={mentionManager.config.trigger}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAQ,cAAc;AAExC,SAASC,iBAAiB,EAAEC,wBAAwB,QAAQ,4BAA4B;AACxF,SACEC,mBAAmB,EACnBC,IAAI,EACJC,cAAc,EACdC,gBAAgB,EAChBC,aAAa,QACR,yCAAyC;AAChD,SAGEC,4BAA4B,EAC5BC,0BAA0B,EAC1BC,sBAAsB,EACtBC,kBAAkB,EAClBC,WAAW,EACXC,OAAO,EACPC,gBAAgB,QACX,uBAAuB;AAE9B,OAAOC,YAAY,MAAM,4BAA4B;AACrD,SAASC,wBAAwB,QAAQ,cAAc;AACvD,SAASC,eAAe,EAAEC,eAAe,QAAQ,qBAAqB;AAOtE,MAAMC,4BAA4B,GAAGC,IAAA,IAA8C;EAAA,IAA7C;IAAEC,OAAO;IAAEC,WAAW;IAAEC;EAAe,CAAC,GAAAH,IAAA;EAC5E,MAAM;IAAEI,WAAW;IAAEC,GAAG;IAAEC,SAAS;IAAEC;EAAe,CAAC,GAAGT,eAAe,EAAE;EACzE,MAAM;IAAEU;EAAQ,CAAC,GAAGX,eAAe,EAAE;EACrC,MAAM;IAAEY;EAAO,CAAC,GAAGtB,aAAa,EAAE;EAElC,MAAM,CAACuB,WAAW,EAAEC,cAAc,CAAC,GAAGhC,QAAQ,CAAiB,EAAE,CAAC;EAElE,MAAMiC,SAAS,GAAGlB,gBAAgB,CAAC,8CAA8C,CAAC;EAClFb,iBAAiB,CAACwB,GAAG,EAAEO,SAAS,EAAE;IAChCC,qBAAqBA,CAACC,YAAY,EAAE;MAClC,IAAIvB,kBAAkB,CAACY,OAAO,EAAEW,YAAY,CAAC,EAAE;MAC/C,IAAI,CAACR,SAAS,CAACS,KAAK,CAACC,YAAY,CAACC,WAAW,CAACC,qBAAqB,EAAE;MACrEP,cAAc,CAACG,YAAY,CAACK,cAAc,EAAE,CAAC;IAC/C;EACF,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAGtC,wBAAwB,CAACuB,GAAG,EAAEF,OAAO,EAAEA,OAAO,CAACkB,WAAW,CAAC;EAElF,MAAMC,QAAQ,GAAG7B,OAAO,CAAC,MAAM;IAC7B,IAAIiB,WAAW,CAACa,MAAM,GAAG,CAAC,EAAE,OAAOf,OAAO,CAACgB,MAAM,CAACC,wBAAwB,CAACf,WAAW,CAAC,IAAI,EAAE,CAAC,KACzF,OAAOF,OAAO,CAACkB,kBAAkB,CAACC,oBAAoB,CAACxB,OAAO,CAAC;EACtE,CAAC,CAAC;EAEF,MAAMyB,QAAQ,GAAGnC,OAAO,CAAC,MAAM;IAAA,IAAAoC,oBAAA;IAC7B,IAAI,GAAAA,oBAAA,GAAC1B,OAAO,CAACkB,WAAW,cAAAQ,oBAAA,eAAnBA,oBAAA,CAAqBC,aAAa,EAAE,GAAE,OAAOC,SAAS;IAC3D,IAAIrB,WAAW,CAACa,MAAM,GAAG,CAAC,EAAE,OAAOQ,SAAS;IAC5C,OAAOzC,sBAAsB,CAACa,OAAO,CAACkB,WAAW,CAAC;EACpD,CAAC,CAAC;EAEF,MAAMW,gBAAgB,GAAGvC,OAAO,CAAC,MAAM;IACrC,IAAI,CAACU,OAAO,CAACkB,WAAW,IAAIlB,OAAO,CAAC8B,WAAW,EAAE,OAAOF,SAAS;IACjE,IAAI,CAACzB,SAAS,CAACS,KAAK,CAACC,YAAY,CAACC,WAAW,CAACiB,0BAA0B,EAAE,OAAOH,SAAS;IAC1F,IAAI,CAACvC,WAAW,CAACW,OAAO,CAACkB,WAAW,EAAEjB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE+B,MAAM,CAAC,EAAE,OAAOJ,SAAS;IAE5E,IAAIX,cAAc,KAAK,SAAS,EAAE;MAChC,oBAAO1C,KAAA,CAAA0D,aAAA,CAACnD,cAAc;QAACoD,IAAI,EAAE,EAAG;QAACC,KAAK,EAAEC,MAAM,CAACP;MAAiB,EAAG;IACrE;IAEA,IAAIZ,cAAc,KAAK,QAAQ,EAAE;MAC/B,oBAAO1C,KAAA,CAAA0D,aAAA,CAACpD,IAAI;QAACwD,IAAI,EAAE,OAAQ;QAACH,IAAI,EAAE,EAAG;QAACI,KAAK,EAAEhC,MAAM,CAACiC,KAAM;QAACJ,KAAK,EAAEC,MAAM,CAACP;MAAiB,EAAG;IAC/F;IAEA,IAAIZ,cAAc,KAAK,aAAa,EAAE;MACpC,oBAAO1C,KAAA,CAAA0D,aAAA,CAACpD,IAAI;QAACwD,IAAI,EAAE,MAAO;QAACH,IAAI,EAAE,EAAG;QAACI,KAAK,EAAEhC,MAAM,CAACkC,cAAe;QAACC,cAAc,EAAEL,MAAM,CAACP;MAAiB,EAAG;IAChH;IAEA,IAAIZ,cAAc,KAAK,WAAW,IAAIA,cAAc,KAAK,QAAQ,EAAE;MACjE,oBAAO1C,KAAA,CAAA0D,aAAA,CAACpD,IAAI;QAACwD,IAAI,EAAE,UAAW;QAACH,IAAI,EAAE,EAAG;QAACI,KAAK,EAAEhC,MAAM,CAACkC,cAAe;QAACL,KAAK,EAAEC,MAAM,CAACP;MAAiB,EAAG;IAC3G;IAEA,IAAIZ,cAAc,KAAK,MAAM,EAAE;MAC7B,oBAAO1C,KAAA,CAAA0D,aAAA,CAACpD,IAAI;QAACwD,IAAI,EAAE,UAAW;QAACH,IAAI,EAAE,EAAG;QAACI,KAAK,EAAEhC,MAAM,CAACoC,SAAU;QAACP,KAAK,EAAEC,MAAM,CAACP;MAAiB,EAAG;IACtG;IAEA,OAAOD,SAAS;EAClB,CAAC,CAAC;EAEF,MAAMe,kBAAkB,GAAGrD,OAAO,CAAC,MAAOU,OAAO,CAAC8B,WAAW,GAAG,CAAC,GAAG9B,OAAO,CAAC2C,kBAAmB,CAAC;EAEhG,oBACEpE,KAAA,CAAA0D,aAAA,CAACxD,SAAS;IAACmE,cAAc,EAAEnD,wBAAyB;IAACK,OAAO,EAAEA,OAAQ;IAACC,WAAW,EAAEA;EAAY,gBAC9FxB,KAAA,CAAA0D,aAAA,CAACrD,mBAAmB;IAClBiE,WAAW,eAAEtE,KAAA,CAAA0D,aAAA,CAACzC,YAAY;MAACQ,OAAO,EAAEA,OAAQ;MAACkC,IAAI,EAAE;IAAG,EAAI;IAC1DY,QAAQ,EAAE9C,OAAO,CAAC8C,QAAS;IAC3BC,KAAK,EAAE1C,OAAO,CAACkB,kBAAkB,CAACyB,qBAAqB,CAAC,CAAA/C,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE+B,MAAM,KAAI,EAAE,EAAEhC,OAAO,CAAE;IAC5FiD,gBAAgB,EAAEpB,gBAAiB;IACnCqB,YAAY,EAAE7C,OAAO,CAACkB,kBAAkB,CAAC4B,6BAA6B,CAACnD,OAAO,CAAE;IAChFoD,IAAI,EAAEjC,QAAS;IACfkC,QAAQ,EAAE5B,QAAQ,IAAIvC,0BAA0B,CAACD,4BAA4B,CAACwC,QAAQ,CAAC,CAAE;IACzF6B,UAAU,EAAEX,kBAAmB;IAC/BY,SAAS,EAAEvD,OAAO,CAACwD,kBAAkB,GAAG,CAAE;IAC1CC,cAAc,EAAErD,cAAc,CAACsD,MAAM,CAACC,OAAQ;IAC9CC,WAAW,EAAE5D,OAAO,CAAC4D,WAAW,GAAG,CAAC,GAAG5D,OAAO,CAAC4D,WAAW,GAAGhC,SAAU;IACvEiC,MAAM,EAAE7D,OAAO,CAAC8D,QAAS;IACzBC,SAAS,EAAE/D,OAAO,CAACgE,WAAY;IAC/BC,eAAe,EAAEjE,OAAO,CAACkE,mBAAmB,KAAK;EAAM,EACvD,CACQ;AAEhB,CAAC;AAED,MAAM9B,MAAM,GAAGrD,gBAAgB,CAAC;EAC9B8C,gBAAgB,EAAE;IAChBsC,WAAW,EAAE;EACf,CAAC;EACDC,cAAc,EAAE;IACdC,OAAO,EAAE,EAAE;IACXC,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,eAAe1E,4BAA4B"}
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","convertFileTypeToMessageType","getFileIconFromMessageType","getFileTypeFromMessage","isDifferentChannel","isMyMessage","isVoiceMessage","useIIFE","useUniqHandlerId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","GroupChannelPreviewContainer","_ref","onPress","onLongPress","channel","currentUser","sdk","sbOptions","mentionManager","STRINGS","colors","typingUsers","setTypingUsers","handlerId","onTypingStatusUpdated","eventChannel","uikit","groupChannel","channelList","enableTypingIndicator","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","fileType","_channel$lastMessage","isFileMessage","undefined","titleCaptionIcon","isEphemeral","enableMessageReceiptStatus","userId","createElement","size","style","styles","icon","color","error","onBackground03","containerStyle","secondary","unreadMessageCount","delayLongPress","customCover","coverUrl","title","CHANNEL_PREVIEW_TITLE","titleCaptionLeft","titleCaption","CHANNEL_PREVIEW_TITLE_CAPTION","body","bodyIcon","badgeCount","mentioned","unreadMentionCount","mentionTrigger","config","trigger","memberCount","frozen","isFrozen","broadcast","isBroadcast","notificationOff","myPushTriggerOption","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n convertFileTypeToMessageType,\n getFileIconFromMessageType,\n getFileTypeFromMessage,\n isDifferentChannel,\n isMyMessage,\n isVoiceMessage,\n useIIFE,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');\n useChannelHandler(sdk, handlerId, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const fileType = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n if (isVoiceMessage(channel.lastMessage)) return undefined;\n return getFileTypeFromMessage(channel.lastMessage);\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage || channel.isEphemeral) return undefined;\n if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={fileType && getFileIconFromMessageType(convertFileTypeToMessageType(fileType))}\n badgeCount={unreadMessageCount}\n mentioned={channel.unreadMentionCount > 0}\n mentionTrigger={mentionManager.config.trigger}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","TypedPlaceholder","DefaultErrorBoundaryComponent","props","createElement","style","flex","justifyContent","alignItems","type","onPressRetry","reset","InternalErrorBoundaryContainer","PureComponent","constructor","arguments","_defineProperty","error","errorInfo","_this$props$onError","_this$props","setState","onError","call","state","_this$props$ErrorInfo","_this$props2","ErrorInfoComponent","Fragment","children"],"sources":["InternalErrorBoundaryContainer.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from '../components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from '../types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundaryContainer extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) =>
|
|
1
|
+
{"version":3,"names":["React","View","TypedPlaceholder","DefaultErrorBoundaryComponent","props","createElement","style","flex","justifyContent","alignItems","type","onPressRetry","reset","InternalErrorBoundaryContainer","PureComponent","constructor","arguments","_defineProperty","error","errorInfo","_this$props$onError","_this$props","setState","onError","call","state","_this$props$ErrorInfo","_this$props2","ErrorInfoComponent","Fragment","children"],"sources":["InternalErrorBoundaryContainer.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from '../components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from '../types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundaryContainer extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => React.ReactNode;\n children?: React.ReactNode;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundaryContainer;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAqB,OAAO;AACxC,SAASC,IAAI,QAAQ,cAAc;AAEnC,OAAOC,gBAAgB,MAAM,gCAAgC;AAG7D,MAAMC,6BAA6B,GAAIC,KAAyB,IAAK;EACnE,oBACEJ,KAAA,CAAAK,aAAA,CAACJ,IAAI;IAACK,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAC;MAAEC,cAAc,EAAE,QAAQ;MAAEC,UAAU,EAAE;IAAS;EAAE,gBACvET,KAAA,CAAAK,aAAA,CAACH,gBAAgB;IAACQ,IAAI,EAAE,aAAc;IAACC,YAAY,EAAEP,KAAK,CAACQ;EAAM,EAAG,CAC/D;AAEX,CAAC;AAED,MAAMC,8BAA8B,SAASb,KAAK,CAACc,aAAa,CAI7D;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,gBAK6D;MAC5DC,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE;IACb,CAAC;IAAAF,eAAA,4BAEmB,CAACC,KAAY,EAAEC,SAAoB,KAAK;MAAA,IAAAC,mBAAA,EAAAC,WAAA;MAC1D,IAAI,CAACC,QAAQ,CAAC;QAAEJ,KAAK;QAAEC;MAAU,CAAC,CAAC;MACnC,CAAAC,mBAAA,IAAAC,WAAA,OAAI,CAACjB,KAAK,EAACmB,OAAO,cAAAH,mBAAA,uBAAlBA,mBAAA,CAAAI,IAAA,CAAAH,WAAA,EAAqB;QAAEH,KAAK;QAAEC,SAAS;QAAEP,KAAK,EAAE,IAAI,CAACA;MAAM,CAAC,CAAC;IAC/D,CAAC;IAAAK,eAAA,gBAEO,MAAM;MACZ,IAAI,CAACK,QAAQ,CAAC;QAAEJ,KAAK,EAAE,IAAI;QAAEC,SAAS,EAAE;MAAK,CAAC,CAAC;IACjD,CAAC;IAAAF,eAAA,iBAEQ,MAAM;MACb,IAAI,IAAI,CAACQ,KAAK,CAACP,KAAK,IAAI,IAAI,CAACO,KAAK,CAACN,SAAS,EAAE;QAAA,IAAAO,qBAAA,EAAAC,YAAA;QAC5C,OACE,EAAAD,qBAAA,IAAAC,YAAA,OAAI,CAACvB,KAAK,EAACwB,kBAAkB,cAAAF,qBAAA,uBAA7BA,qBAAA,CAAAF,IAAA,CAAAG,YAAA,EAAgC;UAC9BT,KAAK,EAAE,IAAI,CAACO,KAAK,CAACP,KAAK;UACvBC,SAAS,EAAE,IAAI,CAACM,KAAK,CAACN,SAAS;UAC/BP,KAAK,EAAE,IAAI,CAACA;QACd,CAAC,CAAC,KAAI,IAAI;MAEd;MAEA,oBAAOZ,KAAA,CAAAK,aAAA,CAAAL,KAAA,CAAA6B,QAAA,QAAG,IAAI,CAACzB,KAAK,CAAC0B,QAAQ,CAAI;IACnC,CAAC;EAAA;AACH;AAACb,eAAA,CApCKJ,8BAA8B,kBAKZ;EACpBe,kBAAkB,EAAEzB;AACtB,CAAC;AA+BH,eAAeU,8BAA8B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
1
2
|
import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
2
3
|
import { Platform } from 'react-native';
|
|
3
4
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
|
4
|
-
import
|
|
5
|
+
import SendbirdChat, { DeviceOsPlatform, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';
|
|
5
6
|
import { GroupChannelModule } from '@sendbird/chat/groupChannel';
|
|
6
7
|
import { OpenChannelModule } from '@sendbird/chat/openChannel';
|
|
7
8
|
import { DialogProvider, Header, HeaderStyleProvider, LightUIKitTheme, ToastProvider, UIKitThemeProvider } from '@sendbird/uikit-react-native-foundation';
|
|
@@ -17,6 +18,7 @@ import ImageCompressionConfig from '../libs/ImageCompressionConfig';
|
|
|
17
18
|
import InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';
|
|
18
19
|
import MentionConfig from '../libs/MentionConfig';
|
|
19
20
|
import MentionManager from '../libs/MentionManager';
|
|
21
|
+
import VoiceMessageConfig from '../libs/VoiceMessageConfig';
|
|
20
22
|
import StringSetEn from '../localization/StringSet.en';
|
|
21
23
|
import SBUDynamicModule from '../platform/dynamicModule';
|
|
22
24
|
import VERSION from '../version';
|
|
@@ -31,8 +33,16 @@ export const SendbirdUIKit = Object.freeze({
|
|
|
31
33
|
IMAGE_COMPRESSION: true
|
|
32
34
|
}
|
|
33
35
|
});
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
+
const chatOmitKeys = ['appId', 'newInstance', 'modules', 'debugMode', 'appVersion', 'localCacheEnabled', 'useAsyncStorageStore'];
|
|
37
|
+
function sanitizeChatOptions(chatOptions) {
|
|
38
|
+
const opts = {
|
|
39
|
+
...chatOptions
|
|
40
|
+
};
|
|
41
|
+
chatOmitKeys.forEach(key => delete opts[key]);
|
|
42
|
+
return opts;
|
|
43
|
+
}
|
|
44
|
+
const SendbirdUIKitContainer = props => {
|
|
45
|
+
const {
|
|
36
46
|
children,
|
|
37
47
|
appId,
|
|
38
48
|
chatOptions,
|
|
@@ -43,9 +53,8 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
43
53
|
errorBoundary,
|
|
44
54
|
toast,
|
|
45
55
|
userProfile,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
} = _ref;
|
|
56
|
+
reaction
|
|
57
|
+
} = props;
|
|
49
58
|
if (!chatOptions.localCacheStorage) {
|
|
50
59
|
throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');
|
|
51
60
|
}
|
|
@@ -56,34 +65,23 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
56
65
|
const [sdkInstance, setSdkInstance] = useState(() => {
|
|
57
66
|
const sendbird = initializeSendbird(appId, {
|
|
58
67
|
internalStorage,
|
|
59
|
-
...chatOptions
|
|
68
|
+
...sanitizeChatOptions(chatOptions)
|
|
60
69
|
});
|
|
61
70
|
unsubscribes.current = sendbird.unsubscribes;
|
|
62
71
|
return sendbird.chatSDK;
|
|
63
72
|
});
|
|
73
|
+
const {
|
|
74
|
+
imageCompressionConfig,
|
|
75
|
+
voiceMessageConfig,
|
|
76
|
+
mentionConfig
|
|
77
|
+
} = useConfigInstance(props);
|
|
64
78
|
const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);
|
|
65
|
-
const mentionManager = useMemo(() =>
|
|
66
|
-
const config = new MentionConfig({
|
|
67
|
-
mentionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit) || MentionConfig.DEFAULT.MENTION_LIMIT,
|
|
68
|
-
suggestionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit) || MentionConfig.DEFAULT.SUGGESTION_LIMIT,
|
|
69
|
-
debounceMills: (userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills) ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,
|
|
70
|
-
delimiter: MentionConfig.DEFAULT.DELIMITER,
|
|
71
|
-
trigger: MentionConfig.DEFAULT.TRIGGER
|
|
72
|
-
});
|
|
73
|
-
return new MentionManager(config);
|
|
74
|
-
}, [userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills]);
|
|
75
|
-
const imageCompressionConfig = useMemo(() => {
|
|
76
|
-
return new ImageCompressionConfig({
|
|
77
|
-
compressionRate: (imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate) || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,
|
|
78
|
-
width: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width,
|
|
79
|
-
height: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height
|
|
80
|
-
});
|
|
81
|
-
}, [imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height]);
|
|
79
|
+
const mentionManager = useMemo(() => new MentionManager(mentionConfig), [mentionConfig]);
|
|
82
80
|
useLayoutEffect(() => {
|
|
83
81
|
if (!isFirstMount) {
|
|
84
82
|
const sendbird = initializeSendbird(appId, {
|
|
85
83
|
internalStorage,
|
|
86
|
-
...chatOptions
|
|
84
|
+
...sanitizeChatOptions(chatOptions)
|
|
87
85
|
});
|
|
88
86
|
setSdkInstance(sendbird.chatSDK);
|
|
89
87
|
unsubscribes.current = sendbird.unsubscribes;
|
|
@@ -121,6 +119,7 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
121
119
|
emojiManager: emojiManager,
|
|
122
120
|
mentionManager: mentionManager,
|
|
123
121
|
imageCompressionConfig: imageCompressionConfig,
|
|
122
|
+
voiceMessageConfig: voiceMessageConfig,
|
|
124
123
|
enableAutoPushTokenRegistration: chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION,
|
|
125
124
|
enableUseUserIdForNickname: chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME,
|
|
126
125
|
enableImageCompression: chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION
|
|
@@ -130,7 +129,10 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
130
129
|
fileService: platformServices.file,
|
|
131
130
|
notificationService: platformServices.notification,
|
|
132
131
|
clipboardService: platformServices.clipboard,
|
|
133
|
-
mediaService: platformServices.media
|
|
132
|
+
mediaService: platformServices.media,
|
|
133
|
+
playerService: platformServices.player,
|
|
134
|
+
recorderService: platformServices.recorder,
|
|
135
|
+
voiceMessageConfig: voiceMessageConfig
|
|
134
136
|
}, /*#__PURE__*/React.createElement(UIKitThemeProvider, {
|
|
135
137
|
theme: (styles === null || styles === void 0 ? void 0 : styles.theme) ?? LightUIKitTheme
|
|
136
138
|
}, /*#__PURE__*/React.createElement(HeaderStyleProvider, {
|
|
@@ -139,11 +141,9 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
139
141
|
statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
|
|
140
142
|
}, /*#__PURE__*/React.createElement(ToastProvider, {
|
|
141
143
|
dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
|
|
142
|
-
}, /*#__PURE__*/React.createElement(UserProfileProvider, {
|
|
143
|
-
onCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onCreateChannel,
|
|
144
|
-
onBeforeCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onBeforeCreateChannel,
|
|
144
|
+
}, /*#__PURE__*/React.createElement(UserProfileProvider, _extends({}, userProfile, {
|
|
145
145
|
statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
|
|
146
|
-
}, /*#__PURE__*/React.createElement(ReactionProvider,
|
|
146
|
+
}), /*#__PURE__*/React.createElement(ReactionProvider, reaction, /*#__PURE__*/React.createElement(LocalizationContext.Consumer, null, value => {
|
|
147
147
|
const STRINGS = (value === null || value === void 0 ? void 0 : value.STRINGS) || defaultStringSet;
|
|
148
148
|
return /*#__PURE__*/React.createElement(DialogProvider, {
|
|
149
149
|
defaultLabels: {
|
|
@@ -164,16 +164,16 @@ const initializeSendbird = (appId, options) => {
|
|
|
164
164
|
const unsubscribes = [];
|
|
165
165
|
const {
|
|
166
166
|
internalStorage,
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
onInitialized,
|
|
168
|
+
...chatInitParams
|
|
169
169
|
} = options;
|
|
170
|
-
chatSDK =
|
|
170
|
+
chatSDK = SendbirdChat.init({
|
|
171
|
+
...chatInitParams,
|
|
171
172
|
appId,
|
|
172
173
|
newInstance: true,
|
|
173
174
|
modules: [new GroupChannelModule(), new OpenChannelModule()],
|
|
174
|
-
localCacheEnabled:
|
|
175
|
-
useAsyncStorageStore: internalStorage
|
|
176
|
-
localCacheEncryption
|
|
175
|
+
localCacheEnabled: true,
|
|
176
|
+
useAsyncStorageStore: internalStorage
|
|
177
177
|
});
|
|
178
178
|
if (onInitialized) {
|
|
179
179
|
chatSDK = onInitialized(chatSDK);
|
|
@@ -256,5 +256,43 @@ function getReactNativeVersion() {
|
|
|
256
256
|
} = Platform.constants.reactNativeVersion;
|
|
257
257
|
return `${major}.${minor}.${patch}`;
|
|
258
258
|
}
|
|
259
|
+
const useConfigInstance = _ref => {
|
|
260
|
+
var _voiceMessage$recorde3, _voiceMessage$recorde4;
|
|
261
|
+
let {
|
|
262
|
+
imageCompression,
|
|
263
|
+
userMention,
|
|
264
|
+
voiceMessage
|
|
265
|
+
} = _ref;
|
|
266
|
+
const mentionConfig = useMemo(() => {
|
|
267
|
+
return new MentionConfig({
|
|
268
|
+
mentionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit) || MentionConfig.DEFAULT.MENTION_LIMIT,
|
|
269
|
+
suggestionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit) || MentionConfig.DEFAULT.SUGGESTION_LIMIT,
|
|
270
|
+
debounceMills: (userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills) ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,
|
|
271
|
+
delimiter: MentionConfig.DEFAULT.DELIMITER,
|
|
272
|
+
trigger: MentionConfig.DEFAULT.TRIGGER
|
|
273
|
+
});
|
|
274
|
+
}, [userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills]);
|
|
275
|
+
const imageCompressionConfig = useMemo(() => {
|
|
276
|
+
return new ImageCompressionConfig({
|
|
277
|
+
compressionRate: (imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate) || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,
|
|
278
|
+
width: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width,
|
|
279
|
+
height: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height
|
|
280
|
+
});
|
|
281
|
+
}, [imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height]);
|
|
282
|
+
const voiceMessageConfig = useMemo(() => {
|
|
283
|
+
var _voiceMessage$recorde, _voiceMessage$recorde2;
|
|
284
|
+
return new VoiceMessageConfig({
|
|
285
|
+
recorder: {
|
|
286
|
+
minDuration: (voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde = voiceMessage.recorder) === null || _voiceMessage$recorde === void 0 ? void 0 : _voiceMessage$recorde.minDuration) ?? VoiceMessageConfig.DEFAULT.RECORDER.MIN_DURATION,
|
|
287
|
+
maxDuration: (voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde2 = voiceMessage.recorder) === null || _voiceMessage$recorde2 === void 0 ? void 0 : _voiceMessage$recorde2.maxDuration) ?? VoiceMessageConfig.DEFAULT.RECORDER.MAX_DURATION
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}, [voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde3 = voiceMessage.recorder) === null || _voiceMessage$recorde3 === void 0 ? void 0 : _voiceMessage$recorde3.minDuration, voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde4 = voiceMessage.recorder) === null || _voiceMessage$recorde4 === void 0 ? void 0 : _voiceMessage$recorde4.maxDuration]);
|
|
291
|
+
return {
|
|
292
|
+
mentionConfig,
|
|
293
|
+
imageCompressionConfig,
|
|
294
|
+
voiceMessageConfig
|
|
295
|
+
};
|
|
296
|
+
};
|
|
259
297
|
export default SendbirdUIKitContainer;
|
|
260
298
|
//# sourceMappingURL=SendbirdUIKitContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","Sendbird","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","USE_USER_ID_FOR_NICKNAME","IMAGE_COMPRESSION","SendbirdUIKitContainer","_ref","children","appId","chatOptions","uikitOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","userMention","imageCompression","localCacheStorage","Error","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","sdkInstance","setSdkInstance","sendbird","initializeSendbird","current","chatSDK","emojiManager","mentionManager","config","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","imageCompressionConfig","compressionRate","COMPRESSION_RATE","width","height","forEach","u","renderChildren","disabled","createElement","storage","localConfigs","common","groupChannel","channel","channelList","groupChannelList","setting","groupChannelSettings","openChannel","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","fileService","file","notificationService","notification","clipboardService","clipboard","mediaService","media","theme","HeaderComponent","defaultTitleAlign","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","Consumer","value","STRINGS","defaultLabels","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","options","localCacheEncryption","onInitialized","init","newInstance","modules","localCacheEnabled","Boolean","useAsyncStorageStore","platform","getDeviceOSPlatform","deviceOSInfo","version","String","Version","customData","platform_version","getReactNativeVersion","uikitExtension","product","UIKIT_CHAT","REACT_NATIVE","addSendbirdExtensions","addExtension","addEventListener","_chatSDK$setOnlineLis","_chatSDK","_chatSDK$setOfflineLi","_chatSDK2","listener","callback","callbackType","callCount","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","call","onOnline","setOfflineListener","onOffline","ANDROID","IOS","WEB","WINDOWS","undefined","major","minor","patch","constants","reactNativeVersion"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird, { DeviceOsPlatform, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';\nimport type {\n PartialDeep,\n SendbirdChatSDK,\n SendbirdEncryption,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\ntype UnimplementedFeatures = 'enableVoiceMessage' | 'threadReplySelectType' | 'replyType';\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n USE_USER_ID_FOR_NICKNAME: false,\n IMAGE_COMPRESSION: true,\n },\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media: MediaServiceInterface;\n };\n chatOptions: {\n localCacheStorage: LocalCacheStorage;\n localCacheEncryption?: SendbirdEncryption;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<ChatRelatedFeaturesInUIKit>;\n uikitOptions?: PartialDeep<{\n common: SBUConfig['common'];\n groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures> & {\n replyType: Extract<SBUConfig['groupChannel']['channel']['replyType'], 'none' | 'quote_reply'>;\n };\n groupChannelList: SBUConfig['groupChannel']['channelList'];\n groupChannelSettings: SBUConfig['groupChannel']['setting'];\n openChannel: SBUConfig['openChannel']['channel'];\n }>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n errorBoundary?: {\n disabled?: boolean;\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n uikitOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n userMention,\n imageCompression,\n}: SendbirdUIKitContainerProps) => {\n if (!chatOptions.localCacheStorage) {\n throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');\n }\n\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n\n const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, { internalStorage, ...chatOptions });\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n\n const mentionManager = useMemo(() => {\n const config = new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n return new MentionManager(config);\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n const imageCompressionConfig = useMemo(() => {\n return new ImageCompressionConfig({\n compressionRate: imageCompression?.compressionRate || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,\n width: imageCompression?.width,\n height: imageCompression?.height,\n });\n }, [imageCompression?.compressionRate, imageCompression?.width, imageCompression?.height]);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, { internalStorage, ...chatOptions });\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, internalStorage]);\n\n const renderChildren = () => {\n if (errorBoundary?.disabled) {\n return children;\n } else {\n return <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>;\n }\n };\n\n return (\n <SafeAreaProvider>\n <UIKitConfigProvider\n storage={internalStorage}\n localConfigs={{\n common: uikitOptions?.common,\n groupChannel: {\n channel: uikitOptions?.groupChannel,\n channelList: uikitOptions?.groupChannelList,\n setting: uikitOptions?.groupChannelSettings,\n },\n openChannel: {\n channel: uikitOptions?.openChannel,\n },\n }}\n >\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n enableAutoPushTokenRegistration={\n chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableUseUserIdForNickname={\n chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableImageCompression={chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ReactionProvider>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {renderChildren()}\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </UIKitConfigProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n options: {\n internalStorage?: InternalLocalCacheStorage;\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK;\n localCacheEncryption?: SendbirdEncryption;\n },\n) => {\n let chatSDK: SendbirdChatSDK;\n const unsubscribes: Array<() => void> = [];\n const { internalStorage, localCacheEncryption, onInitialized } = options;\n\n chatSDK = Sendbird.init({\n appId,\n newInstance: true,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n localCacheEncryption,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n const platform = getDeviceOSPlatform();\n if (SendbirdUIKit.VERSION && platform) {\n const deviceOSInfo = { platform, version: String(Platform.Version) };\n const customData = { platform_version: getReactNativeVersion() };\n const uikitExtension = {\n product: SendbirdProduct.UIKIT_CHAT,\n version: SendbirdUIKit.VERSION,\n platform: SendbirdPlatform.REACT_NATIVE,\n };\n\n chatSDK.addSendbirdExtensions([uikitExtension], deviceOSInfo, customData);\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n try {\n // NOTE: For removing buggy behavior of NetInfo.addEventListener\n // When you first add an event listener, it is assumed that the initialization of the internal event detector is done simultaneously.\n // In other words, when you call the first event listener two events are triggered immediately\n // - the one that is called when adding the event listener\n // - and the internal initialization event\n NetInfo.addEventListener(NOOP)();\n } catch {}\n\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n let callCount = 0;\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n\n // NOTE: When NetInfo.addEventListener is called\n // the event is immediately triggered regardless of whether the event actually occurred.\n // This is why it filters the first event.\n if (callCount === 0) {\n callCount++;\n return;\n }\n\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nfunction getDeviceOSPlatform() {\n switch (Platform.OS) {\n case 'android':\n return DeviceOsPlatform.ANDROID;\n case 'ios':\n return DeviceOsPlatform.IOS;\n case 'web':\n return DeviceOsPlatform.WEB;\n case 'windows':\n return DeviceOsPlatform.WINDOWS;\n default:\n return undefined;\n }\n}\n\nfunction getReactNativeVersion() {\n const { major, minor, patch } = Platform.constants.reactNativeVersion;\n return `${major}.${minor}.${patch}`;\n}\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","SendbirdChat","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","VoiceMessageConfig","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","USE_USER_ID_FOR_NICKNAME","IMAGE_COMPRESSION","chatOmitKeys","sanitizeChatOptions","chatOptions","opts","forEach","key","SendbirdUIKitContainer","props","children","appId","uikitOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","reaction","localCacheStorage","Error","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","sdkInstance","setSdkInstance","sendbird","initializeSendbird","current","chatSDK","imageCompressionConfig","voiceMessageConfig","mentionConfig","useConfigInstance","emojiManager","mentionManager","u","renderChildren","disabled","createElement","storage","localConfigs","common","groupChannel","channel","channelList","groupChannelList","setting","groupChannelSettings","openChannel","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","fileService","file","notificationService","notification","clipboardService","clipboard","mediaService","media","playerService","player","recorderService","recorder","theme","HeaderComponent","defaultTitleAlign","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","_extends","Consumer","value","STRINGS","defaultLabels","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","options","onInitialized","chatInitParams","init","newInstance","modules","localCacheEnabled","useAsyncStorageStore","platform","getDeviceOSPlatform","deviceOSInfo","version","String","Version","customData","platform_version","getReactNativeVersion","uikitExtension","product","UIKIT_CHAT","REACT_NATIVE","addSendbirdExtensions","addExtension","addEventListener","_chatSDK$setOnlineLis","_chatSDK","_chatSDK$setOfflineLi","_chatSDK2","listener","callback","callbackType","callCount","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","call","onOnline","setOfflineListener","onOffline","ANDROID","IOS","WEB","WINDOWS","undefined","major","minor","patch","constants","reactNativeVersion","_ref","_voiceMessage$recorde3","_voiceMessage$recorde4","imageCompression","userMention","voiceMessage","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","compressionRate","COMPRESSION_RATE","width","height","_voiceMessage$recorde","_voiceMessage$recorde2","minDuration","RECORDER","MIN_DURATION","maxDuration","MAX_DURATION"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport SendbirdChat, { DeviceOsPlatform, SendbirdChatParams, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';\nimport type {\n PartialDeep,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport VoiceMessageConfig, { VoiceMessageConfigInterface } from '../libs/VoiceMessageConfig';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n PlayerServiceInterface,\n RecorderServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n USE_USER_ID_FOR_NICKNAME: false,\n IMAGE_COMPRESSION: true,\n },\n});\n\ntype UnimplementedFeatures = 'threadReplySelectType' | 'replyType';\nexport type ChatOmittedInitParams = Omit<\n SendbirdChatParams<[GroupChannelModule, OpenChannelModule]>,\n (typeof chatOmitKeys)[number]\n>;\n\nconst chatOmitKeys = [\n 'appId',\n 'newInstance',\n 'modules',\n 'debugMode',\n 'appVersion',\n 'localCacheEnabled',\n 'useAsyncStorageStore',\n] as const;\nfunction sanitizeChatOptions<T extends Record<string, unknown>>(chatOptions: T): T {\n const opts = { ...chatOptions };\n chatOmitKeys.forEach((key) => delete opts[key]);\n return opts;\n}\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media: MediaServiceInterface;\n player: PlayerServiceInterface;\n recorder: RecorderServiceInterface;\n };\n chatOptions: {\n localCacheStorage: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<ChatOmittedInitParams> &\n Partial<ChatRelatedFeaturesInUIKit>;\n uikitOptions?: PartialDeep<{\n common: SBUConfig['common'];\n groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures> & {\n replyType: Extract<SBUConfig['groupChannel']['channel']['replyType'], 'none' | 'quote_reply'>;\n };\n groupChannelList: SBUConfig['groupChannel']['channelList'];\n groupChannelSettings: SBUConfig['groupChannel']['setting'];\n openChannel: SBUConfig['openChannel']['channel'];\n }>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n errorBoundary?: {\n disabled?: boolean;\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => React.ReactNode;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n reaction?: {\n onPressUserProfile?: (user: SendbirdUser | SendbirdMember) => void;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n voiceMessage?: PartialDeep<VoiceMessageConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = (props: SendbirdUIKitContainerProps) => {\n const {\n children,\n appId,\n chatOptions,\n uikitOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n reaction,\n } = props;\n\n if (!chatOptions.localCacheStorage) {\n throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');\n }\n\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n\n const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, { internalStorage, ...sanitizeChatOptions(chatOptions) });\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const { imageCompressionConfig, voiceMessageConfig, mentionConfig } = useConfigInstance(props);\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n const mentionManager = useMemo(() => new MentionManager(mentionConfig), [mentionConfig]);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, { internalStorage, ...sanitizeChatOptions(chatOptions) });\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, internalStorage]);\n\n const renderChildren = () => {\n if (errorBoundary?.disabled) {\n return children;\n } else {\n return <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>;\n }\n };\n\n return (\n <SafeAreaProvider>\n <UIKitConfigProvider\n storage={internalStorage}\n localConfigs={{\n common: uikitOptions?.common,\n groupChannel: {\n channel: uikitOptions?.groupChannel,\n channelList: uikitOptions?.groupChannelList,\n setting: uikitOptions?.groupChannelSettings,\n },\n openChannel: {\n channel: uikitOptions?.openChannel,\n },\n }}\n >\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n voiceMessageConfig={voiceMessageConfig}\n enableAutoPushTokenRegistration={\n chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableUseUserIdForNickname={\n chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableImageCompression={chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n playerService={platformServices.player}\n recorderService={platformServices.recorder}\n voiceMessageConfig={voiceMessageConfig}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider {...userProfile} statusBarTranslucent={styles?.statusBarTranslucent ?? true}>\n <ReactionProvider {...reaction}>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {renderChildren()}\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </UIKitConfigProvider>\n </SafeAreaProvider>\n );\n};\n\ninterface InitOptions extends ChatOmittedInitParams {\n internalStorage: InternalLocalCacheStorage;\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK;\n}\nconst initializeSendbird = (appId: string, options: InitOptions) => {\n let chatSDK: SendbirdChatSDK;\n const unsubscribes: Array<() => void> = [];\n const { internalStorage, onInitialized, ...chatInitParams } = options;\n\n chatSDK = SendbirdChat.init({\n ...chatInitParams,\n appId,\n newInstance: true,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: true,\n useAsyncStorageStore: internalStorage as never,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n const platform = getDeviceOSPlatform();\n if (SendbirdUIKit.VERSION && platform) {\n const deviceOSInfo = { platform, version: String(Platform.Version) };\n const customData = { platform_version: getReactNativeVersion() };\n const uikitExtension = {\n product: SendbirdProduct.UIKIT_CHAT,\n version: SendbirdUIKit.VERSION,\n platform: SendbirdPlatform.REACT_NATIVE,\n };\n\n chatSDK.addSendbirdExtensions([uikitExtension], deviceOSInfo, customData);\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n try {\n // NOTE: For removing buggy behavior of NetInfo.addEventListener\n // When you first add an event listener, it is assumed that the initialization of the internal event detector is done simultaneously.\n // In other words, when you call the first event listener two events are triggered immediately\n // - the one that is called when adding the event listener\n // - and the internal initialization event\n NetInfo.addEventListener(NOOP)();\n } catch {}\n\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n let callCount = 0;\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n\n // NOTE: When NetInfo.addEventListener is called\n // the event is immediately triggered regardless of whether the event actually occurred.\n // This is why it filters the first event.\n if (callCount === 0) {\n callCount++;\n return;\n }\n\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nfunction getDeviceOSPlatform() {\n switch (Platform.OS) {\n case 'android':\n return DeviceOsPlatform.ANDROID;\n case 'ios':\n return DeviceOsPlatform.IOS;\n case 'web':\n return DeviceOsPlatform.WEB;\n case 'windows':\n return DeviceOsPlatform.WINDOWS;\n default:\n return undefined;\n }\n}\n\nfunction getReactNativeVersion() {\n const { major, minor, patch } = Platform.constants.reactNativeVersion;\n return `${major}.${minor}.${patch}`;\n}\n\nconst useConfigInstance = ({ imageCompression, userMention, voiceMessage }: SendbirdUIKitContainerProps) => {\n const mentionConfig = useMemo(() => {\n return new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n const imageCompressionConfig = useMemo(() => {\n return new ImageCompressionConfig({\n compressionRate: imageCompression?.compressionRate || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,\n width: imageCompression?.width,\n height: imageCompression?.height,\n });\n }, [imageCompression?.compressionRate, imageCompression?.width, imageCompression?.height]);\n\n const voiceMessageConfig = useMemo(() => {\n return new VoiceMessageConfig({\n recorder: {\n minDuration: voiceMessage?.recorder?.minDuration ?? VoiceMessageConfig.DEFAULT.RECORDER.MIN_DURATION,\n maxDuration: voiceMessage?.recorder?.maxDuration ?? VoiceMessageConfig.DEFAULT.RECORDER.MAX_DURATION,\n },\n });\n }, [voiceMessage?.recorder?.minDuration, voiceMessage?.recorder?.maxDuration]);\n\n return {\n mentionConfig,\n imageCompressionConfig,\n voiceMessageConfig,\n };\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { useAppState } from '@sendbird/uikit-utils';
|
|
2
3
|
export const PlatformServiceContext = /*#__PURE__*/React.createContext(null);
|
|
3
4
|
export const PlatformServiceProvider = _ref => {
|
|
4
5
|
let {
|
|
5
6
|
children,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
notificationService,
|
|
9
|
-
mediaService
|
|
7
|
+
voiceMessageConfig,
|
|
8
|
+
...services
|
|
10
9
|
} = _ref;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
services.recorderService.options.minDuration = voiceMessageConfig.recorder.minDuration;
|
|
12
|
+
services.recorderService.options.maxDuration = voiceMessageConfig.recorder.maxDuration;
|
|
13
|
+
}, [voiceMessageConfig]);
|
|
14
|
+
useAppState('change', state => {
|
|
15
|
+
if (state !== 'active') {
|
|
16
|
+
Promise.allSettled([services.playerService.reset(), services.recorderService.reset()]);
|
|
17
17
|
}
|
|
18
|
+
});
|
|
19
|
+
return /*#__PURE__*/React.createElement(PlatformServiceContext.Provider, {
|
|
20
|
+
value: services
|
|
18
21
|
}, children);
|
|
19
22
|
};
|
|
20
23
|
//# sourceMappingURL=PlatformServiceCtx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PlatformServiceContext","createContext","PlatformServiceProvider","_ref","children","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useAppState","PlatformServiceContext","createContext","PlatformServiceProvider","_ref","children","voiceMessageConfig","services","recorderService","options","minDuration","recorder","maxDuration","state","Promise","allSettled","playerService","reset","createElement","Provider","value"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { useAppState } from '@sendbird/uikit-utils';\n\nimport VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n PlayerServiceInterface,\n RecorderServiceInterface,\n} from '../platform/types';\n\nexport type PlatformServiceContextType = {\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n recorderService: RecorderServiceInterface;\n playerService: PlayerServiceInterface;\n};\ntype Props = React.PropsWithChildren<PlatformServiceContextType & { voiceMessageConfig: VoiceMessageConfig }>;\n\nexport const PlatformServiceContext = React.createContext<PlatformServiceContextType | null>(null);\nexport const PlatformServiceProvider = ({ children, voiceMessageConfig, ...services }: Props) => {\n useEffect(() => {\n services.recorderService.options.minDuration = voiceMessageConfig.recorder.minDuration;\n services.recorderService.options.maxDuration = voiceMessageConfig.recorder.maxDuration;\n }, [voiceMessageConfig]);\n\n useAppState('change', (state) => {\n if (state !== 'active') {\n Promise.allSettled([services.playerService.reset(), services.recorderService.reset()]);\n }\n });\n\n return <PlatformServiceContext.Provider value={services}>{children}</PlatformServiceContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SAASC,WAAW,QAAQ,uBAAuB;AAsBnD,OAAO,MAAMC,sBAAsB,gBAAGH,KAAK,CAACI,aAAa,CAAoC,IAAI,CAAC;AAClG,OAAO,MAAMC,uBAAuB,GAAGC,IAAA,IAA0D;EAAA,IAAzD;IAAEC,QAAQ;IAAEC,kBAAkB;IAAE,GAAGC;EAAgB,CAAC,GAAAH,IAAA;EAC1FL,SAAS,CAAC,MAAM;IACdQ,QAAQ,CAACC,eAAe,CAACC,OAAO,CAACC,WAAW,GAAGJ,kBAAkB,CAACK,QAAQ,CAACD,WAAW;IACtFH,QAAQ,CAACC,eAAe,CAACC,OAAO,CAACG,WAAW,GAAGN,kBAAkB,CAACK,QAAQ,CAACC,WAAW;EACxF,CAAC,EAAE,CAACN,kBAAkB,CAAC,CAAC;EAExBN,WAAW,CAAC,QAAQ,EAAGa,KAAK,IAAK;IAC/B,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtBC,OAAO,CAACC,UAAU,CAAC,CAACR,QAAQ,CAACS,aAAa,CAACC,KAAK,EAAE,EAAEV,QAAQ,CAACC,eAAe,CAACS,KAAK,EAAE,CAAC,CAAC;IACxF;EACF,CAAC,CAAC;EAEF,oBAAOnB,KAAA,CAAAoB,aAAA,CAACjB,sBAAsB,CAACkB,QAAQ;IAACC,KAAK,EAAEb;EAAS,GAAEF,QAAQ,CAAmC;AACvG,CAAC"}
|
|
@@ -8,7 +8,8 @@ import { UserProfileContext } from '../contexts/UserProfileCtx';
|
|
|
8
8
|
export const ReactionContext = /*#__PURE__*/React.createContext(null);
|
|
9
9
|
export const ReactionProvider = _ref => {
|
|
10
10
|
let {
|
|
11
|
-
children
|
|
11
|
+
children,
|
|
12
|
+
onPressUserProfile
|
|
12
13
|
} = _ref;
|
|
13
14
|
const chatCtx = useContext(SendbirdChatContext);
|
|
14
15
|
const localizationCtx = useContext(LocalizationContext);
|
|
@@ -63,7 +64,7 @@ export const ReactionProvider = _ref => {
|
|
|
63
64
|
chatCtx,
|
|
64
65
|
reactionCtx,
|
|
65
66
|
localizationCtx,
|
|
66
|
-
userProfileCtx,
|
|
67
|
+
onPressUserProfile: onPressUserProfile ?? userProfileCtx.show,
|
|
67
68
|
onDismiss: () => {
|
|
68
69
|
var _closeResolver$curren;
|
|
69
70
|
setState({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","useReducer","useRef","useState","NOOP","ReactionBottomSheets","LocalizationContext","SendbirdChatContext","UserProfileContext","ReactionContext","createContext","ReactionProvider","_ref","children","chatCtx","localizationCtx","userProfileCtx","Error","state","setState","prev","next","reactionListVisible","setReactionListVisible","reactionUserListVisible","setReactionUserListVisible","reactionUserListFocusIndex","setReactionUserListFocusIndex","closeResolver","openReactionList","params","openReactionUserList","_ref2","channel","message","focusIndex","updateReactionFocusedItem","createOnCloseWithResolver","callback","Promise","resolve","current","reactionCtx","sheetProps","onDismiss","_closeResolver$curren","call","createElement","Provider","value","UserList","_extends","visible","onClose","ReactionList"],"sources":["ReactionCtx.tsx"],"sourcesContent":["import React, { useCallback, useContext, useReducer, useRef, useState } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport { ReactionBottomSheets } from '../components/ReactionBottomSheets';\nimport { LocalizationContext } from '../contexts/LocalizationCtx';\nimport { SendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { UserProfileContext } from '../contexts/UserProfileCtx';\n\ntype State = {\n message?: SendbirdBaseMessage;\n channel?: SendbirdBaseChannel;\n};\nexport type ReactionContextType = {\n openReactionList(param: Required<State>): void;\n openReactionUserList(param: Required<State> & { focusIndex?: number }): void;\n updateReactionFocusedItem(param?: State): void;\n focusIndex: number;\n} & State;\n\ntype Props = React.PropsWithChildren<{}>;\n\nexport const ReactionContext = React.createContext<ReactionContextType | null>(null);\nexport const ReactionProvider = ({ children }: Props) => {\n const chatCtx = useContext(SendbirdChatContext);\n const localizationCtx = useContext(LocalizationContext);\n const userProfileCtx = useContext(UserProfileContext);\n if (!chatCtx) throw new Error('SendbirdChatContext is not provided');\n if (!localizationCtx) throw new Error('LocalizationContext is not provided');\n if (!userProfileCtx) throw new Error('UserProfileContext is not provided');\n\n const [state, setState] = useReducer((prev: State, next: State) => ({ ...prev, ...next }), {});\n const [reactionListVisible, setReactionListVisible] = useState(false);\n const [reactionUserListVisible, setReactionUserListVisible] = useState(false);\n const [reactionUserListFocusIndex, setReactionUserListFocusIndex] = useState(0);\n\n const closeResolver = useRef<() => void>(NOOP);\n\n const openReactionList: ReactionContextType['openReactionList'] = useCallback((params) => {\n setState(params);\n setReactionListVisible(true);\n }, []);\n\n const openReactionUserList: ReactionContextType['openReactionUserList'] = useCallback(\n ({ channel, message, focusIndex = 0 }) => {\n setState({ channel, message });\n setReactionUserListFocusIndex(focusIndex);\n setReactionUserListVisible(true);\n },\n [],\n );\n\n const updateReactionFocusedItem: ReactionContextType['updateReactionFocusedItem'] = useCallback((params) => {\n if (params) setState(params);\n else setState({});\n }, []);\n\n const createOnCloseWithResolver = (callback: () => void) => {\n return () => {\n return new Promise<void>((resolve) => {\n closeResolver.current = resolve;\n callback();\n });\n };\n };\n\n const reactionCtx = {\n ...state,\n openReactionList,\n openReactionUserList,\n updateReactionFocusedItem,\n focusIndex: reactionUserListFocusIndex,\n };\n\n const sheetProps = {\n chatCtx,\n reactionCtx,\n localizationCtx,\n userProfileCtx,\n onDismiss: () => {\n setState({});\n closeResolver.current?.();\n },\n };\n\n return (\n <ReactionContext.Provider value={reactionCtx}>\n {children}\n <ReactionBottomSheets.UserList\n {...sheetProps}\n visible={reactionUserListVisible}\n onClose={createOnCloseWithResolver(() => setReactionUserListVisible(false))}\n />\n <ReactionBottomSheets.ReactionList\n {...sheetProps}\n visible={reactionListVisible}\n onClose={createOnCloseWithResolver(() => setReactionListVisible(false))}\n />\n </ReactionContext.Provider>\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAGpF,SAASC,IAAI,QAAQ,uBAAuB;AAE5C,
|
|
1
|
+
{"version":3,"names":["React","useCallback","useContext","useReducer","useRef","useState","NOOP","ReactionBottomSheets","LocalizationContext","SendbirdChatContext","UserProfileContext","ReactionContext","createContext","ReactionProvider","_ref","children","onPressUserProfile","chatCtx","localizationCtx","userProfileCtx","Error","state","setState","prev","next","reactionListVisible","setReactionListVisible","reactionUserListVisible","setReactionUserListVisible","reactionUserListFocusIndex","setReactionUserListFocusIndex","closeResolver","openReactionList","params","openReactionUserList","_ref2","channel","message","focusIndex","updateReactionFocusedItem","createOnCloseWithResolver","callback","Promise","resolve","current","reactionCtx","sheetProps","show","onDismiss","_closeResolver$curren","call","createElement","Provider","value","UserList","_extends","visible","onClose","ReactionList"],"sources":["ReactionCtx.tsx"],"sourcesContent":["import React, { useCallback, useContext, useReducer, useRef, useState } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport { ReactionBottomSheetProps, ReactionBottomSheets } from '../components/ReactionBottomSheets';\nimport { LocalizationContext } from '../contexts/LocalizationCtx';\nimport { SendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { UserProfileContext } from '../contexts/UserProfileCtx';\n\ntype State = {\n message?: SendbirdBaseMessage;\n channel?: SendbirdBaseChannel;\n};\nexport type ReactionContextType = {\n openReactionList(param: Required<State>): void;\n openReactionUserList(param: Required<State> & { focusIndex?: number }): void;\n updateReactionFocusedItem(param?: State): void;\n focusIndex: number;\n} & State;\n\ntype Props = React.PropsWithChildren<{\n onPressUserProfile?: ReactionBottomSheetProps['onPressUserProfile'];\n}>;\n\nexport const ReactionContext = React.createContext<ReactionContextType | null>(null);\nexport const ReactionProvider = ({ children, onPressUserProfile }: Props) => {\n const chatCtx = useContext(SendbirdChatContext);\n const localizationCtx = useContext(LocalizationContext);\n const userProfileCtx = useContext(UserProfileContext);\n if (!chatCtx) throw new Error('SendbirdChatContext is not provided');\n if (!localizationCtx) throw new Error('LocalizationContext is not provided');\n if (!userProfileCtx) throw new Error('UserProfileContext is not provided');\n\n const [state, setState] = useReducer((prev: State, next: State) => ({ ...prev, ...next }), {});\n const [reactionListVisible, setReactionListVisible] = useState(false);\n const [reactionUserListVisible, setReactionUserListVisible] = useState(false);\n const [reactionUserListFocusIndex, setReactionUserListFocusIndex] = useState(0);\n\n const closeResolver = useRef<() => void>(NOOP);\n\n const openReactionList: ReactionContextType['openReactionList'] = useCallback((params) => {\n setState(params);\n setReactionListVisible(true);\n }, []);\n\n const openReactionUserList: ReactionContextType['openReactionUserList'] = useCallback(\n ({ channel, message, focusIndex = 0 }) => {\n setState({ channel, message });\n setReactionUserListFocusIndex(focusIndex);\n setReactionUserListVisible(true);\n },\n [],\n );\n\n const updateReactionFocusedItem: ReactionContextType['updateReactionFocusedItem'] = useCallback((params) => {\n if (params) setState(params);\n else setState({});\n }, []);\n\n const createOnCloseWithResolver = (callback: () => void) => {\n return () => {\n return new Promise<void>((resolve) => {\n closeResolver.current = resolve;\n callback();\n });\n };\n };\n\n const reactionCtx = {\n ...state,\n openReactionList,\n openReactionUserList,\n updateReactionFocusedItem,\n focusIndex: reactionUserListFocusIndex,\n };\n\n const sheetProps: Omit<ReactionBottomSheetProps, 'visible' | 'onClose'> = {\n chatCtx,\n reactionCtx,\n localizationCtx,\n onPressUserProfile: onPressUserProfile ?? userProfileCtx.show,\n onDismiss: () => {\n setState({});\n closeResolver.current?.();\n },\n };\n\n return (\n <ReactionContext.Provider value={reactionCtx}>\n {children}\n <ReactionBottomSheets.UserList\n {...sheetProps}\n visible={reactionUserListVisible}\n onClose={createOnCloseWithResolver(() => setReactionUserListVisible(false))}\n />\n <ReactionBottomSheets.ReactionList\n {...sheetProps}\n visible={reactionListVisible}\n onClose={createOnCloseWithResolver(() => setReactionListVisible(false))}\n />\n </ReactionContext.Provider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export const SendbirdChatProvider = _ref => {
|
|
|
10
10
|
emojiManager,
|
|
11
11
|
mentionManager,
|
|
12
12
|
imageCompressionConfig,
|
|
13
|
+
voiceMessageConfig,
|
|
13
14
|
enableAutoPushTokenRegistration,
|
|
14
15
|
enableUseUserIdForNickname,
|
|
15
16
|
enableImageCompression
|
|
@@ -65,6 +66,7 @@ export const SendbirdChatProvider = _ref => {
|
|
|
65
66
|
emojiManager,
|
|
66
67
|
mentionManager,
|
|
67
68
|
imageCompressionConfig,
|
|
69
|
+
voiceMessageConfig,
|
|
68
70
|
currentUser,
|
|
69
71
|
setCurrentUser,
|
|
70
72
|
updateCurrentUserInfo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","imageCompressionConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnect","then","undefined","value","sdk","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type { FileType } from '../platform/types';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n}\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","imageCompressionConfig","voiceMessageConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnect","then","undefined","value","sdk","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport type { FileType } from '../platform/types';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n}\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // feature related instances\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n enableReactions: boolean;\n enableOgtag: boolean;\n };\n setting: {\n enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n voiceMessageConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n useEffect(() => {\n return () => {\n sdkInstance.disconnect().then(() => _setCurrentUser(undefined));\n };\n }, [sdkInstance]);\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n voiceMessageConfig,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
|