@sendbird/uikit-react-native 2.3.0 → 2.4.1
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 +13 -16
- package/lib/commonjs/components/ChannelCover.js +54 -40
- package/lib/commonjs/components/ChannelCover.js.map +1 -1
- package/lib/commonjs/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/EditInput.js +28 -13
- package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -0
- package/lib/commonjs/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/SendInput.js +64 -30
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -0
- package/lib/commonjs/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/index.js +33 -34
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -0
- package/lib/commonjs/components/FileViewer.js +3 -3
- package/lib/commonjs/components/FileViewer.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +2 -2
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageTime.js +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js +1 -1
- package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
- package/lib/commonjs/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js +58 -0
- package/lib/commonjs/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js.map +1 -0
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +135 -0
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -0
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +2 -4
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
- package/lib/commonjs/components/TypedPlaceholder.js +6 -0
- package/lib/commonjs/components/TypedPlaceholder.js.map +1 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js +2 -2
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +39 -9
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/UserProfileCtx.js +20 -10
- package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +54 -0
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -0
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +10 -10
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +2 -2
- 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/groupChannelBannedUsers/index.js +8 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/index.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +1 -1
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +4 -2
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +4 -2
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +2 -3
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/openChannel/component/OpenChannelHeader.js +83 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js +95 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js.map +1 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelMessageList.js +351 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelMessageList.js.map +1 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelStatusEmpty.js +34 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelStatusLoading.js +34 -0
- package/lib/commonjs/domain/openChannel/component/OpenChannelStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/openChannel/index.js +62 -0
- package/lib/commonjs/domain/openChannel/index.js.map +1 -0
- package/lib/commonjs/domain/openChannel/module/createOpenChannelModule.js +45 -0
- package/lib/commonjs/domain/openChannel/module/createOpenChannelModule.js.map +1 -0
- package/lib/commonjs/domain/openChannel/module/moduleContext.js +53 -0
- package/lib/commonjs/domain/openChannel/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannel/types.js +6 -0
- package/lib/commonjs/domain/openChannel/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.js +39 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.js +54 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.js +28 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusError.js +32 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusError.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.js +28 -0
- package/lib/commonjs/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/index.js +70 -0
- package/lib/commonjs/domain/openChannelBannedUsers/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/module/createOpenChannelBannedUsersModule.js +45 -0
- package/lib/commonjs/domain/openChannelBannedUsers/module/createOpenChannelBannedUsersModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/openChannelBannedUsers/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelBannedUsers/types.js +6 -0
- package/lib/commonjs/domain/openChannelBannedUsers/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateHeader.js +53 -0
- package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js +169 -0
- package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.js +22 -0
- package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/index.js +54 -0
- package/lib/commonjs/domain/openChannelCreate/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/module/createOpenChannelCreateModule.js +37 -0
- package/lib/commonjs/domain/openChannelCreate/module/createOpenChannelCreateModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/module/moduleContext.js +44 -0
- package/lib/commonjs/domain/openChannelCreate/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelCreate/types.js +6 -0
- package/lib/commonjs/domain/openChannelCreate/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListHeader.js +39 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js +58 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListStatusEmpty.js +34 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListStatusError.js +32 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListStatusError.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListStatusLoading.js +34 -0
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/index.js +70 -0
- package/lib/commonjs/domain/openChannelList/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/module/createOpenChannelListModule.js +45 -0
- package/lib/commonjs/domain/openChannelList/module/createOpenChannelListModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/module/moduleContext.js +42 -0
- package/lib/commonjs/domain/openChannelList/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelList/types.js +6 -0
- package/lib/commonjs/domain/openChannelList/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelModeration/component/OpenChannelModerationHeader.js +39 -0
- package/lib/commonjs/domain/openChannelModeration/component/OpenChannelModerationHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelModeration/component/OpenChannelModerationMenu.js +74 -0
- package/lib/commonjs/domain/openChannelModeration/component/OpenChannelModerationMenu.js.map +1 -0
- package/lib/commonjs/domain/openChannelModeration/index.js +46 -0
- package/lib/commonjs/domain/openChannelModeration/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelModeration/module/createOpenChannelModerationModule.js +33 -0
- package/lib/commonjs/domain/openChannelModeration/module/createOpenChannelModerationModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelModeration/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/openChannelModeration/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelModeration/types.js +6 -0
- package/lib/commonjs/domain/openChannelModeration/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.js +39 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.js +54 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.js +28 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusError.js +32 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusError.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.js +28 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/index.js +62 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/module/createOpenChannelMutedParticipantsModule.js +45 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/module/createOpenChannelMutedParticipantsModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/types.js +6 -0
- package/lib/commonjs/domain/openChannelMutedParticipants/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsHeader.js +44 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsList.js +54 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsList.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.js +28 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsStatusError.js +32 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsStatusError.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.js +28 -0
- package/lib/commonjs/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/index.js +62 -0
- package/lib/commonjs/domain/openChannelOperators/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/module/createOpenChannelOperatorsModule.js +45 -0
- package/lib/commonjs/domain/openChannelOperators/module/createOpenChannelOperatorsModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/openChannelOperators/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelOperators/types.js +6 -0
- package/lib/commonjs/domain/openChannelOperators/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/component/OpenChannelSettingsHeader.js +49 -0
- package/lib/commonjs/domain/openChannelSettings/component/OpenChannelSettingsHeader.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/component/OpenChannelSettingsInfo.js +68 -0
- package/lib/commonjs/domain/openChannelSettings/component/OpenChannelSettingsInfo.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/component/OpenChannelSettingsMenu.js +118 -0
- package/lib/commonjs/domain/openChannelSettings/component/OpenChannelSettingsMenu.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/index.js +54 -0
- package/lib/commonjs/domain/openChannelSettings/index.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/module/createOpenChannelSettingsModule.js +37 -0
- package/lib/commonjs/domain/openChannelSettings/module/createOpenChannelSettingsModule.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/module/moduleContext.js +186 -0
- package/lib/commonjs/domain/openChannelSettings/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/openChannelSettings/types.js +6 -0
- package/lib/commonjs/domain/openChannelSettings/types.js.map +1 -0
- package/lib/commonjs/domain/openChannelUserList/types.js +6 -0
- package/lib/commonjs/domain/openChannelUserList/types.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +3 -6
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +33 -3
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +6 -8
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelMutedMembersFragment.js +13 -4
- package/lib/commonjs/fragments/createGroupChannelMutedMembersFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelOperatorsFragment.js +2 -4
- package/lib/commonjs/fragments/createGroupChannelOperatorsFragment.js.map +1 -1
- package/lib/commonjs/fragments/createOpenChannelBannedUsersFragment.js +101 -0
- package/lib/commonjs/fragments/createOpenChannelBannedUsersFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelCreateFragment.js +86 -0
- package/lib/commonjs/fragments/createOpenChannelCreateFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelFragment.js +177 -0
- package/lib/commonjs/fragments/createOpenChannelFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelListFragment.js +93 -0
- package/lib/commonjs/fragments/createOpenChannelListFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelModerationFragment.js +68 -0
- package/lib/commonjs/fragments/createOpenChannelModerationFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelMutedParticipantsFragment.js +117 -0
- package/lib/commonjs/fragments/createOpenChannelMutedParticipantsFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelOperatorsFragment.js +124 -0
- package/lib/commonjs/fragments/createOpenChannelOperatorsFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelParticipantsFragment.js +162 -0
- package/lib/commonjs/fragments/createOpenChannelParticipantsFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelRegisterOperatorFragment.js +116 -0
- package/lib/commonjs/fragments/createOpenChannelRegisterOperatorFragment.js.map +1 -0
- package/lib/commonjs/fragments/createOpenChannelSettingsFragment.js +70 -0
- package/lib/commonjs/fragments/createOpenChannelSettingsFragment.js.map +1 -0
- package/lib/commonjs/hooks/useMentionSuggestion.js +3 -12
- package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/commonjs/index.js +475 -46
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/localization/StringSet.en.js +2 -2
- package/lib/commonjs/localization/StringSet.en.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js +0 -250
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +393 -0
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -0
- package/lib/commonjs/platform/createFileService.expo.js +6 -14
- package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js +70 -37
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/utils/normalizeFile.js +41 -0
- package/lib/commonjs/utils/normalizeFile.js.map +1 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelCover.js +47 -33
- package/lib/module/components/ChannelCover.js.map +1 -1
- package/lib/module/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/EditInput.js +28 -13
- package/lib/module/components/ChannelInput/EditInput.js.map +1 -0
- package/lib/module/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/SendInput.js +65 -31
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -0
- package/lib/module/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/index.js +35 -35
- package/lib/module/components/ChannelInput/index.js.map +1 -0
- package/lib/module/components/FileViewer.js +3 -3
- package/lib/module/components/FileViewer.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +2 -2
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +1 -1
- package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageTime.js +1 -1
- package/lib/module/components/MessageRenderer/MessageTime.js.map +1 -1
- package/lib/module/components/MessageRenderer/UnknownMessage/index.js +1 -1
- package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
- package/lib/module/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js +44 -0
- package/lib/module/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js.map +1 -0
- package/lib/module/components/OpenChannelMessageRenderer/index.js +119 -0
- package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -0
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +3 -4
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
- package/lib/module/components/TypedPlaceholder.js +6 -0
- package/lib/module/components/TypedPlaceholder.js.map +1 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js +3 -3
- package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +40 -10
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/UserProfileCtx.js +21 -11
- package/lib/module/contexts/UserProfileCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput.js +36 -0
- package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -0
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +10 -10
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +3 -3
- 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/groupChannelBannedUsers/index.js +1 -0
- package/lib/module/domain/groupChannelBannedUsers/index.js.map +1 -1
- package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +2 -2
- package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +4 -2
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -1
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +4 -2
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js +3 -4
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/module/domain/openChannel/component/OpenChannelHeader.js +63 -0
- package/lib/module/domain/openChannel/component/OpenChannelHeader.js.map +1 -0
- package/lib/module/domain/openChannel/component/OpenChannelInput.js +74 -0
- package/lib/module/domain/openChannel/component/OpenChannelInput.js.map +1 -0
- package/lib/module/domain/openChannel/component/OpenChannelMessageList.js +325 -0
- package/lib/module/domain/openChannel/component/OpenChannelMessageList.js.map +1 -0
- package/lib/module/domain/openChannel/component/OpenChannelStatusEmpty.js +21 -0
- package/lib/module/domain/openChannel/component/OpenChannelStatusEmpty.js.map +1 -0
- package/lib/module/domain/openChannel/component/OpenChannelStatusLoading.js +21 -0
- package/lib/module/domain/openChannel/component/OpenChannelStatusLoading.js.map +1 -0
- package/lib/module/domain/openChannel/index.js +7 -0
- package/lib/module/domain/openChannel/index.js.map +1 -0
- package/lib/module/domain/openChannel/module/createOpenChannelModule.js +30 -0
- package/lib/module/domain/openChannel/module/createOpenChannelModule.js.map +1 -0
- package/lib/module/domain/openChannel/module/moduleContext.js +32 -0
- package/lib/module/domain/openChannel/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannel/types.js +2 -0
- package/lib/module/domain/openChannel/types.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.js +25 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.js +41 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.js +16 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusError.js +20 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusError.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.js +16 -0
- package/lib/module/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/index.js +8 -0
- package/lib/module/domain/openChannelBannedUsers/index.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/module/createOpenChannelBannedUsersModule.js +30 -0
- package/lib/module/domain/openChannelBannedUsers/module/createOpenChannelBannedUsersModule.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/module/moduleContext.js +25 -0
- package/lib/module/domain/openChannelBannedUsers/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelBannedUsers/types.js +2 -0
- package/lib/module/domain/openChannelBannedUsers/types.js.map +1 -0
- package/lib/module/domain/openChannelCreate/component/OpenChannelCreateHeader.js +38 -0
- package/lib/module/domain/openChannelCreate/component/OpenChannelCreateHeader.js.map +1 -0
- package/lib/module/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js +153 -0
- package/lib/module/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js.map +1 -0
- package/lib/module/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.js +11 -0
- package/lib/module/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.js.map +1 -0
- package/lib/module/domain/openChannelCreate/index.js +6 -0
- package/lib/module/domain/openChannelCreate/index.js.map +1 -0
- package/lib/module/domain/openChannelCreate/module/createOpenChannelCreateModule.js +24 -0
- package/lib/module/domain/openChannelCreate/module/createOpenChannelCreateModule.js.map +1 -0
- package/lib/module/domain/openChannelCreate/module/moduleContext.js +24 -0
- package/lib/module/domain/openChannelCreate/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelCreate/types.js +2 -0
- package/lib/module/domain/openChannelCreate/types.js.map +1 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListHeader.js +25 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListHeader.js.map +1 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListList.js +45 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListList.js.map +1 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListStatusEmpty.js +21 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListStatusEmpty.js.map +1 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListStatusError.js +20 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListStatusError.js.map +1 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListStatusLoading.js +21 -0
- package/lib/module/domain/openChannelList/component/OpenChannelListStatusLoading.js.map +1 -0
- package/lib/module/domain/openChannelList/index.js +8 -0
- package/lib/module/domain/openChannelList/index.js.map +1 -0
- package/lib/module/domain/openChannelList/module/createOpenChannelListModule.js +30 -0
- package/lib/module/domain/openChannelList/module/createOpenChannelListModule.js.map +1 -0
- package/lib/module/domain/openChannelList/module/moduleContext.js +22 -0
- package/lib/module/domain/openChannelList/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelList/types.js +2 -0
- package/lib/module/domain/openChannelList/types.js.map +1 -0
- package/lib/module/domain/openChannelModeration/component/OpenChannelModerationHeader.js +25 -0
- package/lib/module/domain/openChannelModeration/component/OpenChannelModerationHeader.js.map +1 -0
- package/lib/module/domain/openChannelModeration/component/OpenChannelModerationMenu.js +61 -0
- package/lib/module/domain/openChannelModeration/component/OpenChannelModerationMenu.js.map +1 -0
- package/lib/module/domain/openChannelModeration/index.js +5 -0
- package/lib/module/domain/openChannelModeration/index.js.map +1 -0
- package/lib/module/domain/openChannelModeration/module/createOpenChannelModerationModule.js +21 -0
- package/lib/module/domain/openChannelModeration/module/createOpenChannelModerationModule.js.map +1 -0
- package/lib/module/domain/openChannelModeration/module/moduleContext.js +25 -0
- package/lib/module/domain/openChannelModeration/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelModeration/types.js +2 -0
- package/lib/module/domain/openChannelModeration/types.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.js +25 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.js +41 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.js +16 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusError.js +20 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusError.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.js +16 -0
- package/lib/module/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/index.js +7 -0
- package/lib/module/domain/openChannelMutedParticipants/index.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/module/createOpenChannelMutedParticipantsModule.js +30 -0
- package/lib/module/domain/openChannelMutedParticipants/module/createOpenChannelMutedParticipantsModule.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/module/moduleContext.js +25 -0
- package/lib/module/domain/openChannelMutedParticipants/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelMutedParticipants/types.js +2 -0
- package/lib/module/domain/openChannelMutedParticipants/types.js.map +1 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsHeader.js +30 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsHeader.js.map +1 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsList.js +41 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsList.js.map +1 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.js +16 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.js.map +1 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsStatusError.js +20 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsStatusError.js.map +1 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.js +16 -0
- package/lib/module/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.js.map +1 -0
- package/lib/module/domain/openChannelOperators/index.js +7 -0
- package/lib/module/domain/openChannelOperators/index.js.map +1 -0
- package/lib/module/domain/openChannelOperators/module/createOpenChannelOperatorsModule.js +30 -0
- package/lib/module/domain/openChannelOperators/module/createOpenChannelOperatorsModule.js.map +1 -0
- package/lib/module/domain/openChannelOperators/module/moduleContext.js +25 -0
- package/lib/module/domain/openChannelOperators/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelOperators/types.js +2 -0
- package/lib/module/domain/openChannelOperators/types.js.map +1 -0
- package/lib/module/domain/openChannelSettings/component/OpenChannelSettingsHeader.js +35 -0
- package/lib/module/domain/openChannelSettings/component/OpenChannelSettingsHeader.js.map +1 -0
- package/lib/module/domain/openChannelSettings/component/OpenChannelSettingsInfo.js +49 -0
- package/lib/module/domain/openChannelSettings/component/OpenChannelSettingsInfo.js.map +1 -0
- package/lib/module/domain/openChannelSettings/component/OpenChannelSettingsMenu.js +99 -0
- package/lib/module/domain/openChannelSettings/component/OpenChannelSettingsMenu.js.map +1 -0
- package/lib/module/domain/openChannelSettings/index.js +6 -0
- package/lib/module/domain/openChannelSettings/index.js.map +1 -0
- package/lib/module/domain/openChannelSettings/module/createOpenChannelSettingsModule.js +24 -0
- package/lib/module/domain/openChannelSettings/module/createOpenChannelSettingsModule.js.map +1 -0
- package/lib/module/domain/openChannelSettings/module/moduleContext.js +161 -0
- package/lib/module/domain/openChannelSettings/module/moduleContext.js.map +1 -0
- package/lib/module/domain/openChannelSettings/types.js +2 -0
- package/lib/module/domain/openChannelSettings/types.js.map +1 -0
- package/lib/module/domain/openChannelUserList/types.js +2 -0
- package/lib/module/domain/openChannelUserList/types.js.map +1 -0
- package/lib/module/fragments/createGroupChannelCreateFragment.js +4 -7
- package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +33 -3
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js +7 -9
- package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelMutedMembersFragment.js +14 -4
- package/lib/module/fragments/createGroupChannelMutedMembersFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelOperatorsFragment.js +3 -4
- package/lib/module/fragments/createGroupChannelOperatorsFragment.js.map +1 -1
- package/lib/module/fragments/createOpenChannelBannedUsersFragment.js +84 -0
- package/lib/module/fragments/createOpenChannelBannedUsersFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelCreateFragment.js +69 -0
- package/lib/module/fragments/createOpenChannelCreateFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelFragment.js +153 -0
- package/lib/module/fragments/createOpenChannelFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelListFragment.js +77 -0
- package/lib/module/fragments/createOpenChannelListFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelModerationFragment.js +53 -0
- package/lib/module/fragments/createOpenChannelModerationFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelMutedParticipantsFragment.js +100 -0
- package/lib/module/fragments/createOpenChannelMutedParticipantsFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelOperatorsFragment.js +106 -0
- package/lib/module/fragments/createOpenChannelOperatorsFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelParticipantsFragment.js +140 -0
- package/lib/module/fragments/createOpenChannelParticipantsFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelRegisterOperatorFragment.js +96 -0
- package/lib/module/fragments/createOpenChannelRegisterOperatorFragment.js.map +1 -0
- package/lib/module/fragments/createOpenChannelSettingsFragment.js +55 -0
- package/lib/module/fragments/createOpenChannelSettingsFragment.js.map +1 -0
- package/lib/module/hooks/useMentionSuggestion.js +5 -14
- package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/module/index.js +48 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/localization/StringSet.en.js +1 -1
- package/lib/module/localization/StringSet.en.js.map +1 -1
- package/lib/module/localization/StringSet.type.js +1 -250
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +384 -0
- package/lib/module/localization/createBaseStringSet.js.map +1 -0
- package/lib/module/platform/createFileService.expo.js +7 -15
- package/lib/module/platform/createFileService.expo.js.map +1 -1
- package/lib/module/platform/createFileService.native.js +69 -36
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/utils/normalizeFile.js +33 -0
- package/lib/module/utils/normalizeFile.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 -2
- package/lib/typescript/src/components/ChannelInput/EditInput.d.ts +16 -0
- package/lib/typescript/src/components/ChannelInput/SendInput.d.ts +12 -0
- package/lib/typescript/src/components/ChannelInput/index.d.ts +43 -0
- package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +6 -0
- package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +16 -0
- package/lib/typescript/src/components/TypedPlaceholder.d.ts +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +4 -3
- package/lib/typescript/src/contexts/UserProfileCtx.d.ts +6 -2
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannel/types.d.ts +9 -28
- package/lib/typescript/src/domain/groupChannelBannedUsers/index.d.ts +1 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +7 -0
- package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +3 -0
- package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +39 -0
- package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/openChannel/index.d.ts +6 -0
- package/lib/typescript/src/domain/openChannel/module/createOpenChannelModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannel/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannel/types.d.ts +97 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/index.d.ts +7 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/module/createOpenChannelBannedUsersModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelBannedUsers/types.d.ts +47 -0
- package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelCreate/index.d.ts +5 -0
- package/lib/typescript/src/domain/openChannelCreate/module/createOpenChannelCreateModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelCreate/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelCreate/types.d.ts +40 -0
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelList/index.d.ts +7 -0
- package/lib/typescript/src/domain/openChannelList/module/createOpenChannelListModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelList/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelList/types.d.ts +60 -0
- package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelModeration/index.d.ts +4 -0
- package/lib/typescript/src/domain/openChannelModeration/module/createOpenChannelModerationModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelModeration/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelModeration/types.d.ts +43 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/index.d.ts +6 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/module/createOpenChannelMutedParticipantsModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelMutedParticipants/types.d.ts +47 -0
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/openChannelOperators/index.d.ts +6 -0
- package/lib/typescript/src/domain/openChannelOperators/module/createOpenChannelOperatorsModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelOperators/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelOperators/types.d.ts +49 -0
- package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelSettings/index.d.ts +5 -0
- package/lib/typescript/src/domain/openChannelSettings/module/createOpenChannelSettingsModule.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelSettings/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/openChannelSettings/types.d.ts +49 -0
- package/lib/typescript/src/domain/openChannelUserList/types.d.ts +23 -0
- package/lib/typescript/src/fragments/createOpenChannelBannedUsersFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelCreateFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelListFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelModerationFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelMutedParticipantsFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelOperatorsFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createOpenChannelParticipantsFragment.d.ts +5 -0
- package/lib/typescript/src/fragments/createOpenChannelRegisterOperatorFragment.d.ts +5 -0
- package/lib/typescript/src/fragments/createOpenChannelSettingsFragment.d.ts +3 -0
- package/lib/typescript/src/index.d.ts +44 -11
- package/lib/typescript/src/libs/MentionManager.d.ts +1 -1
- package/lib/typescript/src/localization/StringSet.type.d.ts +136 -26
- package/lib/typescript/src/localization/createBaseStringSet.d.ts +16 -0
- package/lib/typescript/src/utils/normalizeFile.d.ts +4 -0
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +9 -8
- package/src/components/ChannelCover.tsx +46 -37
- package/src/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/EditInput.tsx +30 -19
- package/src/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/SendInput.tsx +69 -43
- package/src/{domain/groupChannel/component/GroupChannelInput → components/ChannelInput}/index.tsx +92 -37
- package/src/components/FileViewer.tsx +3 -3
- package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +1 -1
- package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +5 -1
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +6 -2
- package/src/components/MessageRenderer/MessageDateSeparator.tsx +1 -0
- package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +1 -1
- package/src/components/MessageRenderer/MessageTime.tsx +1 -1
- package/src/components/MessageRenderer/UnknownMessage/index.tsx +1 -1
- package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +1 -1
- package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +1 -1
- package/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.tsx +46 -0
- package/src/components/OpenChannelMessageRenderer/index.tsx +91 -0
- package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +3 -4
- package/src/components/TypedPlaceholder.tsx +3 -0
- package/src/containers/GroupChannelPreviewContainer.tsx +3 -3
- package/src/containers/SendbirdUIKitContainer.tsx +46 -16
- package/src/contexts/UserProfileCtx.tsx +27 -12
- package/src/domain/groupChannel/component/GroupChannelInput.tsx +42 -0
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +10 -10
- package/src/domain/groupChannel/module/moduleContext.tsx +3 -3
- package/src/domain/groupChannel/types.ts +24 -37
- package/src/domain/groupChannelBannedUsers/index.ts +1 -0
- package/src/domain/groupChannelList/component/GroupChannelListList.tsx +2 -2
- package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.tsx +2 -0
- package/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.tsx +2 -0
- package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +1 -1
- package/src/domain/groupChannelSettings/module/moduleContext.tsx +3 -4
- package/src/domain/openChannel/component/OpenChannelHeader.tsx +47 -0
- package/src/domain/openChannel/component/OpenChannelInput.tsx +80 -0
- package/src/domain/openChannel/component/OpenChannelMessageList.tsx +322 -0
- package/src/domain/openChannel/component/OpenChannelStatusEmpty.tsx +18 -0
- package/src/domain/openChannel/component/OpenChannelStatusLoading.tsx +18 -0
- package/src/domain/openChannel/index.ts +6 -0
- package/src/domain/openChannel/module/createOpenChannelModule.tsx +21 -0
- package/src/domain/openChannel/module/moduleContext.tsx +41 -0
- package/src/domain/openChannel/types.ts +127 -0
- package/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.tsx +14 -0
- package/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.tsx +33 -0
- package/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.tsx +15 -0
- package/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusError.tsx +16 -0
- package/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.tsx +15 -0
- package/src/domain/openChannelBannedUsers/index.ts +7 -0
- package/src/domain/openChannelBannedUsers/module/createOpenChannelBannedUsersModule.tsx +21 -0
- package/src/domain/openChannelBannedUsers/module/moduleContext.tsx +30 -0
- package/src/domain/openChannelBannedUsers/types.ts +50 -0
- package/src/domain/openChannelCreate/component/OpenChannelCreateHeader.tsx +35 -0
- package/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.tsx +155 -0
- package/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.tsx +9 -0
- package/src/domain/openChannelCreate/index.ts +5 -0
- package/src/domain/openChannelCreate/module/createOpenChannelCreateModule.tsx +17 -0
- package/src/domain/openChannelCreate/module/moduleContext.tsx +28 -0
- package/src/domain/openChannelCreate/types.ts +45 -0
- package/src/domain/openChannelList/component/OpenChannelListHeader.tsx +14 -0
- package/src/domain/openChannelList/component/OpenChannelListList.tsx +37 -0
- package/src/domain/openChannelList/component/OpenChannelListStatusEmpty.tsx +18 -0
- package/src/domain/openChannelList/component/OpenChannelListStatusError.tsx +16 -0
- package/src/domain/openChannelList/component/OpenChannelListStatusLoading.tsx +18 -0
- package/src/domain/openChannelList/index.ts +7 -0
- package/src/domain/openChannelList/module/createOpenChannelListModule.tsx +21 -0
- package/src/domain/openChannelList/module/moduleContext.tsx +22 -0
- package/src/domain/openChannelList/types.ts +63 -0
- package/src/domain/openChannelModeration/component/OpenChannelModerationHeader.tsx +15 -0
- package/src/domain/openChannelModeration/component/OpenChannelModerationMenu.tsx +62 -0
- package/src/domain/openChannelModeration/index.ts +4 -0
- package/src/domain/openChannelModeration/module/createOpenChannelModerationModule.tsx +15 -0
- package/src/domain/openChannelModeration/module/moduleContext.tsx +33 -0
- package/src/domain/openChannelModeration/types.ts +48 -0
- package/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.tsx +14 -0
- package/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.tsx +33 -0
- package/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.tsx +15 -0
- package/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusError.tsx +18 -0
- package/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.tsx +15 -0
- package/src/domain/openChannelMutedParticipants/index.ts +9 -0
- package/src/domain/openChannelMutedParticipants/module/createOpenChannelMutedParticipantsModule.tsx +21 -0
- package/src/domain/openChannelMutedParticipants/module/moduleContext.tsx +30 -0
- package/src/domain/openChannelMutedParticipants/types.ts +50 -0
- package/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.tsx +22 -0
- package/src/domain/openChannelOperators/component/OpenChannelOperatorsList.tsx +31 -0
- package/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.tsx +15 -0
- package/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusError.tsx +16 -0
- package/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.tsx +15 -0
- package/src/domain/openChannelOperators/index.ts +6 -0
- package/src/domain/openChannelOperators/module/createOpenChannelOperatorsModule.tsx +21 -0
- package/src/domain/openChannelOperators/module/moduleContext.tsx +27 -0
- package/src/domain/openChannelOperators/types.ts +52 -0
- package/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.tsx +29 -0
- package/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.tsx +47 -0
- package/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.tsx +105 -0
- package/src/domain/openChannelSettings/index.ts +5 -0
- package/src/domain/openChannelSettings/module/createOpenChannelSettingsModule.tsx +17 -0
- package/src/domain/openChannelSettings/module/moduleContext.tsx +171 -0
- package/src/domain/openChannelSettings/types.ts +54 -0
- package/src/domain/openChannelUserList/types.ts +30 -0
- package/src/fragments/createGroupChannelCreateFragment.tsx +4 -7
- package/src/fragments/createGroupChannelFragment.tsx +37 -2
- package/src/fragments/createGroupChannelMembersFragment.tsx +11 -8
- package/src/fragments/createGroupChannelMutedMembersFragment.tsx +12 -5
- package/src/fragments/createGroupChannelOperatorsFragment.tsx +3 -4
- package/src/fragments/createOpenChannelBannedUsersFragment.tsx +80 -0
- package/src/fragments/createOpenChannelCreateFragment.tsx +77 -0
- package/src/fragments/createOpenChannelFragment.tsx +157 -0
- package/src/fragments/createOpenChannelListFragment.tsx +67 -0
- package/src/fragments/createOpenChannelModerationFragment.tsx +55 -0
- package/src/fragments/createOpenChannelMutedParticipantsFragment.tsx +100 -0
- package/src/fragments/createOpenChannelOperatorsFragment.tsx +101 -0
- package/src/fragments/createOpenChannelParticipantsFragment.tsx +144 -0
- package/src/fragments/createOpenChannelRegisterOperatorFragment.tsx +99 -0
- package/src/fragments/createOpenChannelSettingsFragment.tsx +57 -0
- package/src/hooks/useMentionSuggestion.ts +10 -17
- package/src/index.ts +55 -49
- package/src/localization/StringSet.en.ts +1 -1
- package/src/localization/StringSet.type.ts +146 -258
- package/src/localization/createBaseStringSet.ts +369 -0
- package/src/platform/createFileService.expo.ts +5 -10
- package/src/platform/createFileService.native.ts +61 -28
- package/src/utils/normalizeFile.ts +32 -0
- package/src/version.ts +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +0 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +0 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +0 -1
- package/lib/commonjs/utils/fileTypeGuard.js +0 -26
- package/lib/commonjs/utils/fileTypeGuard.js.map +0 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +0 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +0 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +0 -1
- package/lib/module/utils/fileTypeGuard.js +0 -18
- package/lib/module/utils/fileTypeGuard.js.map +0 -1
- package/lib/typescript/__template__/component/__domain__Header.d.ts +0 -3
- package/lib/typescript/__template__/component/__domain__StatusEmpty.d.ts +0 -2
- package/lib/typescript/__template__/component/__domain__StatusLoading.d.ts +0 -2
- package/lib/typescript/__template__/component/__domain__View.d.ts +0 -3
- package/lib/typescript/__template__/create__domain__Fragment.d.ts +0 -2
- package/lib/typescript/__template__/index.d.ts +0 -6
- package/lib/typescript/__template__/module/create__domain__Module.d.ts +0 -3
- package/lib/typescript/__template__/module/moduleContext.d.ts +0 -3
- package/lib/typescript/__template__/types.d.ts +0 -31
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +0 -39
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +0 -37
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +0 -26
- package/lib/typescript/src/utils/fileTypeGuard.d.ts +0 -4
- package/src/utils/fileTypeGuard.ts +0 -10
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
1
3
|
import { Platform } from 'react-native';
|
|
2
|
-
import { getFileExtension, getFileType, normalizeFileName } from '@sendbird/uikit-utils';
|
|
4
|
+
import { getFileExtension, getFileExtensionFromMime, getFileExtensionFromUri, getFileType, normalizeFileName } from '@sendbird/uikit-utils';
|
|
3
5
|
import SBUError from '../libs/SBUError';
|
|
4
|
-
import fileTypeGuard from '../utils/fileTypeGuard';
|
|
5
6
|
import nativePermissionGranted from '../utils/nativePermissionGranted';
|
|
7
|
+
import normalizeFile from '../utils/normalizeFile';
|
|
6
8
|
|
|
7
9
|
function getAndroidStoragePermissionsByAPILevel(permissionModule) {
|
|
8
10
|
if (Platform.OS !== 'android') return [];
|
|
@@ -38,6 +40,42 @@ const createNativeFileService = _ref => {
|
|
|
38
40
|
});
|
|
39
41
|
|
|
40
42
|
class NativeFileService {
|
|
43
|
+
constructor() {
|
|
44
|
+
_defineProperty(this, "buildDownloadPath", async options => {
|
|
45
|
+
const dirname = Platform.select({
|
|
46
|
+
android: fsModule.Dirs.CacheDir,
|
|
47
|
+
default: fsModule.Dirs.DocumentDir
|
|
48
|
+
});
|
|
49
|
+
const context = {
|
|
50
|
+
dirname,
|
|
51
|
+
filename: options.fileName
|
|
52
|
+
};
|
|
53
|
+
const extension = getFileExtension(options.fileName) || getFileExtensionFromMime(options.fileType) || getFileExtension(options.fileUrl) || (await getFileExtensionFromUri(options.fileUrl));
|
|
54
|
+
if (extension) context.filename = normalizeFileName(context.filename, extension);
|
|
55
|
+
return {
|
|
56
|
+
path: `${context.dirname}/${context.filename}`,
|
|
57
|
+
...context
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
_defineProperty(this, "downloadFile", async options => {
|
|
62
|
+
const {
|
|
63
|
+
path,
|
|
64
|
+
filename
|
|
65
|
+
} = await this.buildDownloadPath(options);
|
|
66
|
+
await fsModule.FileSystem.fetch(options.fileUrl, {
|
|
67
|
+
path
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
downloadedPath: path,
|
|
71
|
+
file: {
|
|
72
|
+
name: filename,
|
|
73
|
+
type: getFileType(getFileExtension(path))
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
41
79
|
async hasCameraPermission() {
|
|
42
80
|
const status = await permissionModule.checkMultiple(cameraPermissions);
|
|
43
81
|
return nativePermissionGranted(status);
|
|
@@ -50,6 +88,11 @@ const createNativeFileService = _ref => {
|
|
|
50
88
|
|
|
51
89
|
async hasMediaLibraryPermission() {
|
|
52
90
|
const status = await permissionModule.checkMultiple(mediaLibraryPermissions);
|
|
91
|
+
|
|
92
|
+
if (__DEV__ && Platform.OS === 'ios' && status['ios.permission.MEDIA_LIBRARY'] === 'unavailable' && status['ios.permission.PHOTO_LIBRARY'] === 'granted') {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
|
|
53
96
|
return nativePermissionGranted(status);
|
|
54
97
|
}
|
|
55
98
|
|
|
@@ -108,7 +151,7 @@ const createNativeFileService = _ref => {
|
|
|
108
151
|
type,
|
|
109
152
|
uri
|
|
110
153
|
} = ((_response$assets = response.assets) === null || _response$assets === void 0 ? void 0 : _response$assets[0]) ?? {};
|
|
111
|
-
return
|
|
154
|
+
return normalizeFile({
|
|
112
155
|
uri,
|
|
113
156
|
size,
|
|
114
157
|
name,
|
|
@@ -163,20 +206,20 @@ const createNativeFileService = _ref => {
|
|
|
163
206
|
return null;
|
|
164
207
|
}
|
|
165
208
|
|
|
166
|
-
return (response.assets || []).slice(0, selectionLimit).map(_ref2 => {
|
|
209
|
+
return Promise.all((response.assets || []).slice(0, selectionLimit).map(_ref2 => {
|
|
167
210
|
let {
|
|
168
211
|
fileName: name,
|
|
169
212
|
fileSize: size,
|
|
170
213
|
type,
|
|
171
214
|
uri
|
|
172
215
|
} = _ref2;
|
|
173
|
-
return
|
|
216
|
+
return normalizeFile({
|
|
174
217
|
uri,
|
|
175
218
|
size,
|
|
176
219
|
name,
|
|
177
220
|
type
|
|
178
221
|
});
|
|
179
|
-
});
|
|
222
|
+
}));
|
|
180
223
|
}
|
|
181
224
|
|
|
182
225
|
async openDocument(options) {
|
|
@@ -187,7 +230,7 @@ const createNativeFileService = _ref => {
|
|
|
187
230
|
name,
|
|
188
231
|
type
|
|
189
232
|
} = await documentPickerModule.pickSingle();
|
|
190
|
-
return
|
|
233
|
+
return normalizeFile({
|
|
191
234
|
uri,
|
|
192
235
|
size,
|
|
193
236
|
name,
|
|
@@ -212,46 +255,36 @@ const createNativeFileService = _ref => {
|
|
|
212
255
|
if (!granted) throw new Error('Permission not granted');
|
|
213
256
|
}
|
|
214
257
|
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
258
|
+
const {
|
|
259
|
+
downloadedPath,
|
|
260
|
+
file
|
|
261
|
+
} = await this.downloadFile(options);
|
|
262
|
+
|
|
263
|
+
if (Platform.OS === 'ios') {
|
|
264
|
+
if (file.type === 'image' || file.type === 'video') {
|
|
265
|
+
const mediaTypeMap = {
|
|
266
|
+
'image': 'photo',
|
|
267
|
+
'video': 'video'
|
|
268
|
+
};
|
|
269
|
+
const mediaType = mediaTypeMap[file.type];
|
|
270
|
+
await mediaLibraryModule.save(downloadedPath, {
|
|
271
|
+
type: mediaType
|
|
272
|
+
});
|
|
226
273
|
}
|
|
227
274
|
}
|
|
228
275
|
|
|
229
|
-
await fsModule.FileSystem.fetch(options.fileUrl, {
|
|
230
|
-
path: downloadPath
|
|
231
|
-
});
|
|
232
|
-
const fileType = getFileType(getFileExtension(options.fileUrl));
|
|
233
|
-
|
|
234
|
-
if (Platform.OS === 'ios' && (fileType === 'image' || fileType === 'video')) {
|
|
235
|
-
const type = {
|
|
236
|
-
'image': 'photo',
|
|
237
|
-
'video': 'video'
|
|
238
|
-
}[fileType];
|
|
239
|
-
await mediaLibraryModule.save(downloadPath, {
|
|
240
|
-
type
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
|
|
244
276
|
if (Platform.OS === 'android') {
|
|
245
|
-
const
|
|
277
|
+
const externalDirMap = {
|
|
246
278
|
'file': 'downloads',
|
|
247
279
|
'audio': 'audio',
|
|
248
280
|
'image': 'images',
|
|
249
281
|
'video': 'video'
|
|
250
282
|
};
|
|
251
|
-
|
|
283
|
+
const externalDir = externalDirMap[file.type];
|
|
284
|
+
await fsModule.FileSystem.cpExternal(downloadedPath, file.name, externalDir);
|
|
252
285
|
}
|
|
253
286
|
|
|
254
|
-
return
|
|
287
|
+
return downloadedPath;
|
|
255
288
|
}
|
|
256
289
|
|
|
257
290
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","getFileExtension","getFileType","normalizeFileName","SBUError","fileTypeGuard","nativePermissionGranted","getAndroidStoragePermissionsByAPILevel","permissionModule","OS","Version","PERMISSIONS","ANDROID","READ_MEDIA_AUDIO","READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","createNativeFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","cameraPermissions","select","ios","IOS","CAMERA","MICROPHONE","android","default","mediaLibraryPermissions","MEDIA_LIBRARY","PHOTO_LIBRARY","NativeFileService","hasCameraPermission","status","checkMultiple","requestCameraPermission","requestMultiple","hasMediaLibraryPermission","requestMediaLibraryPermission","openCamera","options","hasPermission","granted","onOpenFailure","PERMISSIONS_DENIED","response","launchCamera","presentationStyle","cameraType","mediaType","didCancel","errorCode","DEVICE_UNAVAILABLE","Error","errorMessage","fileName","name","fileSize","size","type","uri","assets","openMediaLibrary","selectionLimit","launchImageLibrary","slice","map","openDocument","pickSingle","e","isCancel","isInProgress","UNKNOWN","save","basePath","Dirs","CacheDir","DocumentDir","downloadPath","extensionFromUrl","fileUrl","match","FileSystem","fetch","path","fileType","dirType","cpExternal"],"sources":["createFileService.native.ts"],"sourcesContent":["import type { CameraRoll } from '@react-native-camera-roll/camera-roll';\nimport { Platform } from 'react-native';\nimport type * as DocumentPicker from 'react-native-document-picker';\nimport type * as FileAccess from 'react-native-file-access';\nimport type * as ImagePicker from 'react-native-image-picker';\nimport type * as Permissions from 'react-native-permissions';\nimport type { Permission } from 'react-native-permissions';\n\nimport { getFileExtension, getFileType, normalizeFileName } from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport nativePermissionGranted from '../utils/nativePermissionGranted';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nfunction getAndroidStoragePermissionsByAPILevel(permissionModule: typeof Permissions): Permission[] {\n if (Platform.OS !== 'android') return [];\n\n if (Platform.Version > 32) {\n return [\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_AUDIO,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_VIDEO,\n ];\n }\n\n if (Platform.Version > 28) {\n return [permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE];\n }\n\n return [\n permissionModule.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE,\n permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE,\n ];\n}\n\nconst createNativeFileService = ({\n imagePickerModule,\n documentPickerModule,\n permissionModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ImagePicker;\n documentPickerModule: typeof DocumentPicker;\n permissionModule: typeof Permissions;\n mediaLibraryModule: typeof CameraRoll;\n fsModule: typeof FileAccess;\n}): FileServiceInterface => {\n const cameraPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE],\n android: [permissionModule.PERMISSIONS.ANDROID.CAMERA],\n default: [],\n });\n const mediaLibraryPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.MEDIA_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY],\n android: getAndroidStoragePermissionsByAPILevel(permissionModule),\n default: [],\n });\n\n class NativeFileService implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async requestCameraPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async hasMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n async requestMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCamera({\n presentationStyle: 'fullScreen',\n cameraType: options?.cameraType ?? 'back',\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n const { fileName: name, fileSize: size, type, uri } = response.assets?.[0] ?? {};\n return fileTypeGuard({ uri, size, name, type });\n }\n async openMediaLibrary(options?: OpenMediaLibraryOptions): Promise<FilePickerResponse[] | null> {\n /**\n * NOTE: options.selectionLimit {@link https://github.com/react-native-image-picker/react-native-image-picker#options}\n * We do not support 0 (any number of files)\n **/\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibrary({\n presentationStyle: 'fullScreen',\n selectionLimit,\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n return (response.assets || [])\n .slice(0, selectionLimit)\n .map(({ fileName: name, fileSize: size, type, uri }) => fileTypeGuard({ uri, size, name, type }));\n }\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const { uri, size, name, type } = await documentPickerModule.pickSingle();\n return fileTypeGuard({ uri, size, name, type });\n } catch (e) {\n if (!documentPickerModule.isCancel(e) && documentPickerModule.isInProgress(e)) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n }\n return null;\n }\n }\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = Platform.select({ android: fsModule.Dirs.CacheDir, default: fsModule.Dirs.DocumentDir });\n let downloadPath = `${basePath}/${options.fileName}`;\n if (!getFileExtension(options.fileName)) {\n const extensionFromUrl = getFileExtension(options.fileUrl);\n if (getFileType(extensionFromUrl).match(/image|video/)) {\n downloadPath += extensionFromUrl;\n }\n }\n\n await fsModule.FileSystem.fetch(options.fileUrl, { path: downloadPath });\n const fileType = getFileType(getFileExtension(options.fileUrl));\n\n if (Platform.OS === 'ios' && (fileType === 'image' || fileType === 'video')) {\n const type = ({ 'image': 'photo', 'video': 'video' } as const)[fileType];\n await mediaLibraryModule.save(downloadPath, { type });\n }\n\n if (Platform.OS === 'android') {\n const dirType = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;\n await fsModule.FileSystem.cpExternal(\n downloadPath,\n normalizeFileName(options.fileName, getFileExtension(options.fileUrl)),\n dirType[fileType],\n );\n }\n return downloadPath;\n }\n }\n\n return new NativeFileService();\n};\n\nexport default createNativeFileService;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Platform","getFileExtension","getFileExtensionFromMime","getFileExtensionFromUri","getFileType","normalizeFileName","SBUError","nativePermissionGranted","normalizeFile","getAndroidStoragePermissionsByAPILevel","permissionModule","OS","Version","PERMISSIONS","ANDROID","READ_MEDIA_AUDIO","READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","createNativeFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","cameraPermissions","select","ios","IOS","CAMERA","MICROPHONE","android","default","mediaLibraryPermissions","MEDIA_LIBRARY","PHOTO_LIBRARY","NativeFileService","options","dirname","Dirs","CacheDir","DocumentDir","context","filename","fileName","extension","fileType","fileUrl","path","buildDownloadPath","FileSystem","fetch","downloadedPath","file","name","type","hasCameraPermission","status","checkMultiple","requestCameraPermission","requestMultiple","hasMediaLibraryPermission","__DEV__","requestMediaLibraryPermission","openCamera","hasPermission","granted","onOpenFailure","PERMISSIONS_DENIED","response","launchCamera","presentationStyle","cameraType","mediaType","didCancel","errorCode","DEVICE_UNAVAILABLE","Error","errorMessage","fileSize","size","uri","assets","openMediaLibrary","selectionLimit","launchImageLibrary","Promise","all","slice","map","openDocument","pickSingle","e","isCancel","isInProgress","UNKNOWN","save","downloadFile","mediaTypeMap","externalDirMap","externalDir","cpExternal"],"sources":["createFileService.native.ts"],"sourcesContent":["import type { CameraRoll } from '@react-native-camera-roll/camera-roll';\nimport { Platform } from 'react-native';\nimport type * as DocumentPicker from 'react-native-document-picker';\nimport type * as FileAccess from 'react-native-file-access';\nimport type * as ImagePicker from 'react-native-image-picker';\nimport type * as Permissions from 'react-native-permissions';\nimport type { Permission } from 'react-native-permissions';\n\nimport {\n getFileExtension,\n getFileExtensionFromMime,\n getFileExtensionFromUri,\n getFileType,\n normalizeFileName,\n} from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport nativePermissionGranted from '../utils/nativePermissionGranted';\nimport normalizeFile from '../utils/normalizeFile';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nfunction getAndroidStoragePermissionsByAPILevel(permissionModule: typeof Permissions): Permission[] {\n if (Platform.OS !== 'android') return [];\n\n if (Platform.Version > 32) {\n return [\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_AUDIO,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_VIDEO,\n ];\n }\n\n if (Platform.Version > 28) {\n return [permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE];\n }\n\n return [\n permissionModule.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE,\n permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE,\n ];\n}\n\nconst createNativeFileService = ({\n imagePickerModule,\n documentPickerModule,\n permissionModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ImagePicker;\n documentPickerModule: typeof DocumentPicker;\n permissionModule: typeof Permissions;\n mediaLibraryModule: typeof CameraRoll;\n fsModule: typeof FileAccess;\n}): FileServiceInterface => {\n const cameraPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE],\n android: [permissionModule.PERMISSIONS.ANDROID.CAMERA],\n default: [],\n });\n const mediaLibraryPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.MEDIA_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY],\n android: getAndroidStoragePermissionsByAPILevel(permissionModule),\n default: [],\n });\n\n class NativeFileService implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async requestCameraPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async hasMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(mediaLibraryPermissions);\n if (\n __DEV__ &&\n Platform.OS === 'ios' &&\n status['ios.permission.MEDIA_LIBRARY'] === 'unavailable' &&\n status['ios.permission.PHOTO_LIBRARY'] === 'granted'\n ) {\n return true;\n }\n return nativePermissionGranted(status);\n }\n async requestMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCamera({\n presentationStyle: 'fullScreen',\n cameraType: options?.cameraType ?? 'back',\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n const { fileName: name, fileSize: size, type, uri } = response.assets?.[0] ?? {};\n return normalizeFile({ uri, size, name, type });\n }\n async openMediaLibrary(options?: OpenMediaLibraryOptions): Promise<FilePickerResponse[] | null> {\n /**\n * NOTE: options.selectionLimit {@link https://github.com/react-native-image-picker/react-native-image-picker#options}\n * We do not support 0 (any number of files)\n **/\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibrary({\n presentationStyle: 'fullScreen',\n selectionLimit,\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n return Promise.all(\n (response.assets || [])\n .slice(0, selectionLimit)\n .map(({ fileName: name, fileSize: size, type, uri }) => normalizeFile({ uri, size, name, type })),\n );\n }\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const { uri, size, name, type } = await documentPickerModule.pickSingle();\n return normalizeFile({ uri, size, name, type });\n } catch (e) {\n if (!documentPickerModule.isCancel(e) && documentPickerModule.isInProgress(e)) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n }\n return null;\n }\n }\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) throw new Error('Permission not granted');\n }\n\n const { downloadedPath, file } = await this.downloadFile(options);\n\n if (Platform.OS === 'ios') {\n if (file.type === 'image' || file.type === 'video') {\n const mediaTypeMap = { 'image': 'photo', 'video': 'video' } as const;\n const mediaType = mediaTypeMap[file.type];\n await mediaLibraryModule.save(downloadedPath, { type: mediaType });\n }\n }\n\n if (Platform.OS === 'android') {\n const externalDirMap = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;\n const externalDir = externalDirMap[file.type];\n await fsModule.FileSystem.cpExternal(downloadedPath, file.name, externalDir);\n }\n\n return downloadedPath;\n }\n\n private buildDownloadPath = async (options: SaveOptions) => {\n const dirname = Platform.select({ android: fsModule.Dirs.CacheDir, default: fsModule.Dirs.DocumentDir });\n const context = { dirname, filename: options.fileName };\n const extension =\n getFileExtension(options.fileName) ||\n getFileExtensionFromMime(options.fileType) ||\n getFileExtension(options.fileUrl) ||\n (await getFileExtensionFromUri(options.fileUrl));\n\n if (extension) context.filename = normalizeFileName(context.filename, extension);\n\n return { path: `${context.dirname}/${context.filename}`, ...context };\n };\n\n private downloadFile = async (options: SaveOptions) => {\n const { path, filename } = await this.buildDownloadPath(options);\n await fsModule.FileSystem.fetch(options.fileUrl, { path });\n return {\n downloadedPath: path,\n file: {\n name: filename,\n type: getFileType(getFileExtension(path)),\n } as const,\n };\n };\n }\n\n return new NativeFileService();\n};\n\nexport default createNativeFileService;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getFileExtension, getFileExtensionFromMime, getFileExtensionFromUri, getMimeFromFileExtension, normalizeFileName } from '@sendbird/uikit-utils';
|
|
2
|
+
|
|
3
|
+
const normalizeFile = async _ref => {
|
|
4
|
+
let {
|
|
5
|
+
uri,
|
|
6
|
+
size,
|
|
7
|
+
name,
|
|
8
|
+
type
|
|
9
|
+
} = _ref;
|
|
10
|
+
// URI is required property
|
|
11
|
+
if (!uri) return null;
|
|
12
|
+
let filename = name || String(Date.now());
|
|
13
|
+
let filetype = type || '';
|
|
14
|
+
const extension = getFileExtension(filename) || getFileExtensionFromMime(filetype) || (await getFileExtensionFromUri(uri));
|
|
15
|
+
|
|
16
|
+
if (extension) {
|
|
17
|
+
filename = normalizeFileName(filename, extension);
|
|
18
|
+
|
|
19
|
+
if (!filetype) {
|
|
20
|
+
filetype = getMimeFromFileExtension(extension);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
uri,
|
|
26
|
+
name: filename,
|
|
27
|
+
type: filetype,
|
|
28
|
+
size: size ?? 0
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default normalizeFile;
|
|
33
|
+
//# sourceMappingURL=normalizeFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getFileExtension","getFileExtensionFromMime","getFileExtensionFromUri","getMimeFromFileExtension","normalizeFileName","normalizeFile","uri","size","name","type","filename","String","Date","now","filetype","extension"],"sources":["normalizeFile.ts"],"sourcesContent":["import type { PartialNullable } from '@sendbird/uikit-utils';\nimport {\n getFileExtension,\n getFileExtensionFromMime,\n getFileExtensionFromUri,\n getMimeFromFileExtension,\n normalizeFileName,\n} from '@sendbird/uikit-utils';\n\nimport type { FilePickerResponse, FileType } from '../platform/types';\n\nconst normalizeFile = async ({ uri, size, name, type }: PartialNullable<FileType>): Promise<FilePickerResponse> => {\n // URI is required property\n if (!uri) return null;\n\n let filename = name || String(Date.now());\n let filetype = type || '';\n\n const extension =\n getFileExtension(filename) || getFileExtensionFromMime(filetype) || (await getFileExtensionFromUri(uri));\n\n if (extension) {\n filename = normalizeFileName(filename, extension);\n if (!filetype) {\n filetype = getMimeFromFileExtension(extension);\n }\n }\n\n return { uri, name: filename, type: filetype, size: size ?? 0 };\n};\n\nexport default normalizeFile;\n"],"mappings":"AACA,SACEA,gBADF,EAEEC,wBAFF,EAGEC,uBAHF,EAIEC,wBAJF,EAKEC,iBALF,QAMO,uBANP;;AAUA,MAAMC,aAAa,GAAG,cAA6F;EAAA,IAAtF;IAAEC,GAAF;IAAOC,IAAP;IAAaC,IAAb;IAAmBC;EAAnB,CAAsF;EACjH;EACA,IAAI,CAACH,GAAL,EAAU,OAAO,IAAP;EAEV,IAAII,QAAQ,GAAGF,IAAI,IAAIG,MAAM,CAACC,IAAI,CAACC,GAAL,EAAD,CAA7B;EACA,IAAIC,QAAQ,GAAGL,IAAI,IAAI,EAAvB;EAEA,MAAMM,SAAS,GACbf,gBAAgB,CAACU,QAAD,CAAhB,IAA8BT,wBAAwB,CAACa,QAAD,CAAtD,KAAqE,MAAMZ,uBAAuB,CAACI,GAAD,CAAlG,CADF;;EAGA,IAAIS,SAAJ,EAAe;IACbL,QAAQ,GAAGN,iBAAiB,CAACM,QAAD,EAAWK,SAAX,CAA5B;;IACA,IAAI,CAACD,QAAL,EAAe;MACbA,QAAQ,GAAGX,wBAAwB,CAACY,SAAD,CAAnC;IACD;EACF;;EAED,OAAO;IAAET,GAAF;IAAOE,IAAI,EAAEE,QAAb;IAAuBD,IAAI,EAAEK,QAA7B;IAAuCP,IAAI,EAAEA,IAAI,IAAI;EAArD,CAAP;AACD,CAlBD;;AAoBA,eAAeF,aAAf"}
|
package/lib/module/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '2.
|
|
1
|
+
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '2.4.1';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,OAAhB;AACA,eAAeA,OAAf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
|
-
import {
|
|
2
|
+
import { SendbirdBaseChannel } from '@sendbird/uikit-utils';
|
|
3
3
|
type Props = {
|
|
4
|
-
channel:
|
|
4
|
+
channel: SendbirdBaseChannel;
|
|
5
5
|
size: number;
|
|
6
6
|
containerStyle?: StyleProp<ViewStyle>;
|
|
7
7
|
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { NativeSyntheticEvent, TextInput as RNTextInput, TextInputSelectionChangeEventData } from 'react-native';
|
|
3
|
+
import type { SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';
|
|
4
|
+
import type { MentionedUser } from '../../types';
|
|
5
|
+
import type { ChannelInputProps } from './index';
|
|
6
|
+
interface EditInputProps extends ChannelInputProps {
|
|
7
|
+
text: string;
|
|
8
|
+
onChangeText: (val: string) => void;
|
|
9
|
+
messageToEdit: SendbirdUserMessage | SendbirdFileMessage;
|
|
10
|
+
setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;
|
|
11
|
+
onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;
|
|
12
|
+
autoFocus: boolean;
|
|
13
|
+
mentionedUsers: MentionedUser[];
|
|
14
|
+
}
|
|
15
|
+
declare const EditInput: React.ForwardRefExoticComponent<EditInputProps & React.RefAttributes<RNTextInput>>;
|
|
16
|
+
export default EditInput;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { NativeSyntheticEvent, TextInput as RNTextInput, TextInputSelectionChangeEventData } from 'react-native';
|
|
3
|
+
import type { MentionedUser } from '../../types';
|
|
4
|
+
import type { ChannelInputProps } from './index';
|
|
5
|
+
interface SendInputProps extends ChannelInputProps {
|
|
6
|
+
text: string;
|
|
7
|
+
onChangeText: (val: string) => void;
|
|
8
|
+
onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;
|
|
9
|
+
mentionedUsers: MentionedUser[];
|
|
10
|
+
}
|
|
11
|
+
declare const SendInput: React.ForwardRefExoticComponent<SendInputProps & React.RefAttributes<RNTextInput>>;
|
|
12
|
+
export default SendInput;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SendbirdBaseChannel, SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdFileMessageUpdateParams, SendbirdMember, SendbirdUserMessage, SendbirdUserMessageCreateParams, SendbirdUserMessageUpdateParams } from '@sendbird/uikit-utils';
|
|
3
|
+
import type { FileType } from '../../platform/types';
|
|
4
|
+
import type { MentionedUser, Range } from '../../types';
|
|
5
|
+
type UserMessageMentionParams = Required<{
|
|
6
|
+
messageTemplate: SendbirdUserMessageCreateParams['mentionedMessageTemplate'];
|
|
7
|
+
userIds: SendbirdUserMessageCreateParams['mentionedUserIds'];
|
|
8
|
+
type: SendbirdUserMessageCreateParams['mentionType'];
|
|
9
|
+
}>;
|
|
10
|
+
export type SuggestedMentionListProps = {
|
|
11
|
+
text: string;
|
|
12
|
+
selection: Range;
|
|
13
|
+
topInset: number;
|
|
14
|
+
bottomInset: number;
|
|
15
|
+
inputHeight: number;
|
|
16
|
+
onPressToMention: (user: SendbirdMember, searchStringRange: Range) => void;
|
|
17
|
+
mentionedUsers: MentionedUser[];
|
|
18
|
+
};
|
|
19
|
+
export type ChannelInputProps = {
|
|
20
|
+
channel: SendbirdBaseChannel;
|
|
21
|
+
shouldRenderInput: boolean;
|
|
22
|
+
keyboardAvoidOffset: number;
|
|
23
|
+
onPressSendUserMessage: (params: SendbirdUserMessageCreateParams) => Promise<void>;
|
|
24
|
+
onPressSendFileMessage: (params: SendbirdFileMessageCreateParams) => Promise<void>;
|
|
25
|
+
onPressUpdateUserMessage: (message: SendbirdUserMessage, params: SendbirdUserMessageUpdateParams) => Promise<void>;
|
|
26
|
+
onPressUpdateFileMessage: (message: SendbirdFileMessage, params: SendbirdFileMessageUpdateParams) => Promise<void>;
|
|
27
|
+
inputFrozen: boolean;
|
|
28
|
+
inputMuted: boolean;
|
|
29
|
+
inputDisabled: boolean;
|
|
30
|
+
messageToEdit: undefined | SendbirdUserMessage | SendbirdFileMessage;
|
|
31
|
+
setMessageToEdit: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;
|
|
32
|
+
SuggestedMentionList?: (props: SuggestedMentionListProps) => JSX.Element | null;
|
|
33
|
+
/** @deprecated Please use `onPressSendUserMessage` **/
|
|
34
|
+
onSendFileMessage?: (file: FileType) => Promise<void>;
|
|
35
|
+
/** @deprecated Please use `onPressSendFileMessage` **/
|
|
36
|
+
onSendUserMessage?: (text: string, mention?: UserMessageMentionParams) => Promise<void>;
|
|
37
|
+
/** @deprecated Please use `onPressUpdateUserMessage` **/
|
|
38
|
+
onUpdateFileMessage?: (editedFile: FileType, message: SendbirdFileMessage) => Promise<void>;
|
|
39
|
+
/** @deprecated Please use `onPressUpdateFileMessage` **/
|
|
40
|
+
onUpdateUserMessage?: (editedText: string, message: SendbirdUserMessage, mention?: UserMessageMentionParams) => Promise<void>;
|
|
41
|
+
};
|
|
42
|
+
declare const _default: React.MemoExoticComponent<(props: ChannelInputProps) => JSX.Element>;
|
|
43
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SendbirdMessage } from '@sendbird/uikit-utils';
|
|
2
|
+
declare const OpenChannelMessageDateSeparator: ({ message, prevMessage, }: {
|
|
3
|
+
message: SendbirdMessage;
|
|
4
|
+
prevMessage?: SendbirdMessage | undefined;
|
|
5
|
+
}) => JSX.Element | null;
|
|
6
|
+
export default OpenChannelMessageDateSeparator;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SendbirdMessage } from '@sendbird/uikit-utils';
|
|
3
|
+
declare const _default: React.MemoExoticComponent<(props: {
|
|
4
|
+
message: SendbirdMessage;
|
|
5
|
+
prevMessage?: SendbirdMessage | undefined;
|
|
6
|
+
nextMessage?: SendbirdMessage | undefined;
|
|
7
|
+
onPress?: (() => void) | undefined;
|
|
8
|
+
onLongPress?: (() => void) | undefined;
|
|
9
|
+
onPressAvatar?: ((user: import("@sendbird/chat/groupChannel").Member | import("@sendbird/chat").User, options?: {
|
|
10
|
+
hideMessageButton?: boolean | undefined;
|
|
11
|
+
} | undefined) => void) | undefined;
|
|
12
|
+
channel: import("@sendbird/chat/openChannel").OpenChannel;
|
|
13
|
+
currentUserId?: string | undefined;
|
|
14
|
+
enableMessageGrouping: boolean;
|
|
15
|
+
}) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null>;
|
|
16
|
+
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type Props = {
|
|
2
|
-
type: 'no-muted-members' | 'no-banned-users' | 'no-channels' | 'no-messages' | 'no-users' | 'no-results-found' | 'error-wrong' | 'loading';
|
|
2
|
+
type: 'no-muted-members' | 'no-muted-participants' | 'no-banned-users' | 'no-channels' | 'no-messages' | 'no-users' | 'no-results-found' | 'error-wrong' | 'loading';
|
|
3
3
|
onPressRetry?: () => void;
|
|
4
4
|
};
|
|
5
5
|
declare const TypedPlaceholder: ({ type, onPressRetry }: Props) => JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
3
|
-
import type {
|
|
3
|
+
import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
|
|
4
4
|
import type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';
|
|
5
5
|
import type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';
|
|
6
6
|
import { MentionConfigInterface } from '../libs/MentionConfig';
|
|
@@ -8,7 +8,7 @@ import type { StringSet } from '../localization/StringSet.type';
|
|
|
8
8
|
import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface } from '../platform/types';
|
|
9
9
|
import type { ErrorBoundaryProps, LocalCacheStorage } from '../types';
|
|
10
10
|
export declare const SendbirdUIKit: Readonly<{
|
|
11
|
-
VERSION: "2.
|
|
11
|
+
VERSION: "2.4.1";
|
|
12
12
|
PLATFORM: string;
|
|
13
13
|
DEFAULT: {
|
|
14
14
|
AUTO_PUSH_TOKEN_REGISTRATION: boolean;
|
|
@@ -42,6 +42,7 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
42
42
|
HeaderComponent?: HeaderStyleContextType['HeaderComponent'];
|
|
43
43
|
};
|
|
44
44
|
errorBoundary?: {
|
|
45
|
+
disabled?: boolean;
|
|
45
46
|
onError?: (props: ErrorBoundaryProps) => void;
|
|
46
47
|
ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;
|
|
47
48
|
};
|
|
@@ -49,7 +50,7 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
49
50
|
dismissTimeout?: number;
|
|
50
51
|
};
|
|
51
52
|
userProfile?: {
|
|
52
|
-
onCreateChannel: (channel:
|
|
53
|
+
onCreateChannel: (channel: SendbirdGroupChannel) => void;
|
|
53
54
|
onBeforeCreateChannel?: (channelParams: SendbirdGroupChannelCreateParams, users: SendbirdUser[] | SendbirdMember[]) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;
|
|
54
55
|
};
|
|
55
56
|
userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;
|
|
@@ -2,14 +2,18 @@ import React from 'react';
|
|
|
2
2
|
import type { SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
|
|
3
3
|
type OnCreateChannel = (channel: SendbirdGroupChannel) => void;
|
|
4
4
|
type OnBeforeCreateChannel = (channelParams: SendbirdGroupChannelCreateParams, users: SendbirdUser[] | SendbirdMember[]) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;
|
|
5
|
+
type ShowOptions = {
|
|
6
|
+
hideMessageButton?: boolean;
|
|
7
|
+
};
|
|
5
8
|
export type UserProfileContextType = {
|
|
6
|
-
show(user: SendbirdUser | SendbirdMember): void;
|
|
9
|
+
show(user: SendbirdUser | SendbirdMember, options?: ShowOptions): void;
|
|
7
10
|
hide(): void;
|
|
8
11
|
};
|
|
9
12
|
type Props = React.PropsWithChildren<{
|
|
10
13
|
onCreateChannel?: OnCreateChannel;
|
|
11
14
|
onBeforeCreateChannel?: OnBeforeCreateChannel;
|
|
15
|
+
statusBarTranslucent?: boolean;
|
|
12
16
|
}>;
|
|
13
17
|
export declare const UserProfileContext: React.Context<UserProfileContextType | null>;
|
|
14
|
-
export declare const UserProfileProvider: ({ children, onCreateChannel, onBeforeCreateChannel }: Props) => JSX.Element;
|
|
18
|
+
export declare const UserProfileProvider: ({ children, onCreateChannel, onBeforeCreateChannel, statusBarTranslucent, }: Props) => JSX.Element;
|
|
15
19
|
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.MemoExoticComponent<(props: Pick<import("../../../components/ChannelInput").ChannelInputProps, "onPressUpdateUserMessage" | "onUpdateUserMessage" | "shouldRenderInput" | "onPressSendUserMessage" | "onPressSendFileMessage" | "onPressUpdateFileMessage" | "SuggestedMentionList" | "onSendFileMessage" | "onSendUserMessage" | "onUpdateFileMessage">) => JSX.Element>;
|
|
3
|
+
export default _default;
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { FlatListProps } from 'react-native';
|
|
3
3
|
import type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';
|
|
4
|
-
import type { SendbirdFileMessage, SendbirdFileMessageCreateParams,
|
|
5
|
-
import type {
|
|
6
|
-
import type { CommonComponent
|
|
7
|
-
type UserMessageMentionParams = Required<{
|
|
8
|
-
messageTemplate: SendbirdUserMessageCreateParams['mentionedMessageTemplate'];
|
|
9
|
-
userIds: SendbirdUserMessageCreateParams['mentionedUserIds'];
|
|
10
|
-
type: SendbirdUserMessageCreateParams['mentionType'];
|
|
11
|
-
}>;
|
|
4
|
+
import type { OnBeforeHandler, SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdFileMessageUpdateParams, SendbirdGroupChannel, SendbirdMessage, SendbirdUser, SendbirdUserMessage, SendbirdUserMessageCreateParams, SendbirdUserMessageUpdateParams } from '@sendbird/uikit-utils';
|
|
5
|
+
import type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';
|
|
6
|
+
import type { CommonComponent } from '../../types';
|
|
12
7
|
export interface GroupChannelProps {
|
|
13
8
|
Fragment: {
|
|
14
9
|
channel: SendbirdGroupChannel;
|
|
15
10
|
onChannelDeleted: () => void;
|
|
16
11
|
onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];
|
|
17
12
|
onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];
|
|
18
|
-
onBeforeSendFileMessage?: (params: SendbirdFileMessageCreateParams) => SendbirdFileMessageCreateParams | Promise<SendbirdFileMessageCreateParams>;
|
|
19
|
-
onBeforeSendUserMessage?: (params: SendbirdUserMessageCreateParams) => SendbirdUserMessageCreateParams | Promise<SendbirdUserMessageCreateParams>;
|
|
20
13
|
onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];
|
|
14
|
+
onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;
|
|
15
|
+
onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;
|
|
16
|
+
onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;
|
|
17
|
+
onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;
|
|
21
18
|
renderMessage?: GroupChannelProps['MessageList']['renderMessage'];
|
|
22
19
|
renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];
|
|
23
20
|
renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];
|
|
@@ -70,23 +67,8 @@ export interface GroupChannelProps {
|
|
|
70
67
|
/** @deprecated `onPressImageMessage` is deprecated, please use `onPressMediaMessage` instead **/
|
|
71
68
|
onPressImageMessage?: (message: SendbirdFileMessage, uri: string) => void;
|
|
72
69
|
};
|
|
73
|
-
Input:
|
|
74
|
-
|
|
75
|
-
onSendFileMessage: (file: FileType) => Promise<void>;
|
|
76
|
-
onSendUserMessage: (text: string, mention?: UserMessageMentionParams) => Promise<void>;
|
|
77
|
-
onUpdateFileMessage: (editedFile: FileType, message: SendbirdFileMessage) => Promise<void>;
|
|
78
|
-
onUpdateUserMessage: (editedText: string, message: SendbirdUserMessage, mention?: UserMessageMentionParams) => Promise<void>;
|
|
79
|
-
SuggestedMentionList: (props: GroupChannelProps['SuggestedMentionList']) => JSX.Element | null;
|
|
80
|
-
};
|
|
81
|
-
SuggestedMentionList: {
|
|
82
|
-
text: string;
|
|
83
|
-
selection: Range;
|
|
84
|
-
topInset: number;
|
|
85
|
-
bottomInset: number;
|
|
86
|
-
inputHeight: number;
|
|
87
|
-
onPressToMention: (user: SendbirdMember, searchStringRange: Range) => void;
|
|
88
|
-
mentionedUsers: MentionedUser[];
|
|
89
|
-
};
|
|
70
|
+
Input: Pick<ChannelInputProps, 'shouldRenderInput' | 'onPressSendUserMessage' | 'onPressSendFileMessage' | 'onPressUpdateUserMessage' | 'onPressUpdateFileMessage' | 'SuggestedMentionList' | 'onSendFileMessage' | 'onSendUserMessage' | 'onUpdateFileMessage' | 'onUpdateUserMessage'>;
|
|
71
|
+
SuggestedMentionList: SuggestedMentionListProps;
|
|
90
72
|
Provider: {
|
|
91
73
|
channel: SendbirdGroupChannel;
|
|
92
74
|
enableTypingIndicator: boolean;
|
|
@@ -120,4 +102,3 @@ export interface GroupChannelModule {
|
|
|
120
102
|
StatusLoading: CommonComponent;
|
|
121
103
|
}
|
|
122
104
|
export type GroupChannelFragment = CommonComponent<GroupChannelProps['Fragment']>;
|
|
123
|
-
export {};
|
|
@@ -2,5 +2,6 @@ export { default as GroupChannelBannedUsersList } from './component/GroupChannel
|
|
|
2
2
|
export { default as GroupChannelBannedUsersHeader } from './component/GroupChannelBannedUsersHeader';
|
|
3
3
|
export { default as GroupChannelBannedUsersStatusLoading } from './component/GroupChannelBannedUsersStatusLoading';
|
|
4
4
|
export { default as GroupChannelBannedUsersStatusEmpty } from './component/GroupChannelBannedUsersStatusEmpty';
|
|
5
|
+
export { default as GroupChannelBannedUsersStatusError } from './component/GroupChannelBannedUsersStatusError';
|
|
5
6
|
export { default as createGroupChannelBannedUsersModule } from './module/createGroupChannelBannedUsersModule';
|
|
6
7
|
export { GroupChannelBannedUsersContextsProvider, GroupChannelBannedUsersContexts } from './module/moduleContext';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { GroupChannelMutedMembersProps } from '../types';
|
|
2
|
-
declare const GroupChannelMutedMembersList: ({ renderUser, mutedMembers, ListEmptyComponent, }: GroupChannelMutedMembersProps['List']) => JSX.Element;
|
|
2
|
+
declare const GroupChannelMutedMembersList: ({ renderUser, mutedMembers, ListEmptyComponent, onLoadNext, }: GroupChannelMutedMembersProps['List']) => JSX.Element;
|
|
3
3
|
export default GroupChannelMutedMembersList;
|
package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { GroupChannelOperatorsProps } from '../types';
|
|
2
|
-
declare const GroupChannelOperatorsList: ({ operators, renderUser, ListEmptyComponent, }: GroupChannelOperatorsProps['List']) => JSX.Element;
|
|
2
|
+
declare const GroupChannelOperatorsList: ({ operators, renderUser, ListEmptyComponent, onLoadNext, }: GroupChannelOperatorsProps['List']) => JSX.Element;
|
|
3
3
|
export default GroupChannelOperatorsList;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.MemoExoticComponent<({ onPressHeaderLeft, onPressHeaderRight, rightIconName }: {
|
|
3
|
+
rightIconName: "search" | "photo" | "message" | "user" | "done" | "error" | "chat-hide" | "chat-show" | "add" | "archive" | "arrow-left" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "delete" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thumbnail-none" | "unarchive";
|
|
4
|
+
onPressHeaderLeft: () => void;
|
|
5
|
+
onPressHeaderRight: () => void;
|
|
6
|
+
}) => JSX.Element>;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.MemoExoticComponent<(props: Pick<import("../../../components/ChannelInput").ChannelInputProps, "onPressUpdateUserMessage" | "shouldRenderInput" | "onPressSendUserMessage" | "onPressSendFileMessage" | "onPressUpdateFileMessage">) => JSX.Element>;
|
|
3
|
+
export default _default;
|