@sendbird/uikit-react-native 2.0.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/commonjs/components/ChannelCover.js +22 -1
- package/lib/commonjs/components/ChannelCover.js.map +1 -1
- package/lib/commonjs/components/ChatFlatList.js +2 -1
- package/lib/commonjs/components/ChatFlatList.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +11 -6
- package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +12 -2
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +25 -10
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +9 -2
- package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +86 -10
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +99 -14
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/index.js +23 -4
- package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +150 -0
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -0
- package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +135 -0
- package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -0
- package/lib/commonjs/components/ReactionAddons/ReactionRoundedButton.js +87 -0
- package/lib/commonjs/components/ReactionAddons/ReactionRoundedButton.js.map +1 -0
- package/lib/commonjs/components/ReactionAddons/index.js +19 -0
- package/lib/commonjs/components/ReactionAddons/index.js.map +1 -0
- package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +150 -0
- package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -0
- package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +276 -0
- package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -0
- package/lib/commonjs/components/ReactionBottomSheets/index.js +19 -0
- package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -0
- package/lib/commonjs/components/TypedPlaceholder.js +2 -2
- package/lib/commonjs/components/TypedPlaceholder.js.map +1 -1
- package/lib/commonjs/components/UserActionBar.js +7 -4
- package/lib/commonjs/components/UserActionBar.js.map +1 -1
- package/lib/commonjs/constants.js +3 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js +9 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +130 -83
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/{Localization.js → LocalizationCtx.js} +1 -1
- package/lib/commonjs/contexts/LocalizationCtx.js.map +1 -0
- package/lib/commonjs/contexts/{PlatformService.js → PlatformServiceCtx.js} +1 -1
- package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -0
- package/lib/commonjs/contexts/ReactionCtx.js +107 -0
- package/lib/commonjs/contexts/ReactionCtx.js.map +1 -0
- package/lib/commonjs/contexts/{SendbirdChat.js → SendbirdChatCtx.js} +21 -7
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -0
- package/lib/commonjs/contexts/UserProfileCtx.js +125 -0
- package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -0
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js +34 -36
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +31 -12
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +129 -35
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +31 -12
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +210 -0
- package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -0
- package/lib/commonjs/domain/groupChannel/index.js +8 -0
- package/lib/commonjs/domain/groupChannel/index.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js +4 -0
- package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +4 -4
- 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/component/GroupChannelBannedUsersHeader.js +39 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +54 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js +34 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js +38 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js +34 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/index.js +62 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js +45 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/types.js +6 -0
- package/lib/commonjs/domain/groupChannelBannedUsers/types.js.map +1 -0
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +2 -1
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +32 -30
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationHeader.js +39 -0
- package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationMenu.js +103 -0
- package/lib/commonjs/domain/groupChannelModeration/component/GroupChannelModerationMenu.js.map +1 -0
- package/lib/commonjs/domain/groupChannelModeration/index.js +46 -0
- package/lib/commonjs/domain/groupChannelModeration/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelModeration/module/createGroupChannelModerationModule.js +33 -0
- package/lib/commonjs/domain/groupChannelModeration/module/createGroupChannelModerationModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelModeration/module/moduleContext.js +46 -0
- package/lib/commonjs/domain/groupChannelModeration/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelModeration/types.js +6 -0
- package/lib/commonjs/domain/groupChannelModeration/types.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js +39 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +52 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js +34 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js +38 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js +34 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/index.js +70 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js +45 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/types.js +6 -0
- package/lib/commonjs/domain/groupChannelMutedMembers/types.js.map +1 -0
- package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js +39 -0
- package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js +140 -0
- package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js.map +1 -0
- package/lib/commonjs/domain/groupChannelNotifications/index.js +46 -0
- package/lib/commonjs/domain/groupChannelNotifications/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js +33 -0
- package/lib/commonjs/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelNotifications/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/groupChannelNotifications/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelNotifications/types.js +6 -0
- package/lib/commonjs/domain/groupChannelNotifications/types.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js +44 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +52 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js +34 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js +38 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js +34 -0
- package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/index.js +70 -0
- package/lib/commonjs/domain/groupChannelOperators/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js +45 -0
- package/lib/commonjs/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/module/moduleContext.js +45 -0
- package/lib/commonjs/domain/groupChannelOperators/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelOperators/types.js +6 -0
- package/lib/commonjs/domain/groupChannelOperators/types.js.map +1 -0
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -8
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +60 -6
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +9 -14
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
- package/lib/commonjs/domain/userList/component/UserListList.js +4 -1
- package/lib/commonjs/domain/userList/component/UserListList.js.map +1 -1
- package/lib/commonjs/domain/userList/component/UserListStatusError.js +2 -2
- package/lib/commonjs/domain/userList/component/UserListStatusError.js.map +1 -1
- package/lib/commonjs/domain/userList/module/createUserListModule.js.map +1 -1
- package/lib/commonjs/domain/userList/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelBannedUsersFragment.js +101 -0
- package/lib/commonjs/fragments/createGroupChannelBannedUsersFragment.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +9 -25
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +22 -8
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +21 -37
- package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +3 -11
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +95 -51
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelModerationFragment.js +68 -0
- package/lib/commonjs/fragments/createGroupChannelModerationFragment.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelMutedMembersFragment.js +116 -0
- package/lib/commonjs/fragments/createGroupChannelMutedMembersFragment.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelNotificationsFragment.js +34 -0
- package/lib/commonjs/fragments/createGroupChannelNotificationsFragment.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelOperatorsFragment.js +129 -0
- package/lib/commonjs/fragments/createGroupChannelOperatorsFragment.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelRegisterOperatorFragment.js +114 -0
- package/lib/commonjs/fragments/createGroupChannelRegisterOperatorFragment.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +5 -1
- package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
- package/lib/commonjs/hooks/useConnection.js +7 -0
- package/lib/commonjs/hooks/useConnection.js.map +1 -1
- package/lib/commonjs/hooks/useContext.js +27 -7
- package/lib/commonjs/hooks/useContext.js.map +1 -1
- package/lib/commonjs/hooks/useKeyboardStatus.js +93 -0
- package/lib/commonjs/hooks/useKeyboardStatus.js.map +1 -0
- package/lib/commonjs/hooks/useMentionSuggestion.js +110 -0
- package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -0
- package/lib/commonjs/hooks/useMentionTextInput.js +139 -0
- package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -0
- package/lib/commonjs/index.js +165 -42
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/libs/EmojiManager.js +100 -0
- package/lib/commonjs/libs/EmojiManager.js.map +1 -0
- package/lib/commonjs/libs/MentionConfig.js +47 -0
- package/lib/commonjs/libs/MentionConfig.js.map +1 -0
- package/lib/commonjs/libs/MentionManager.js +235 -0
- package/lib/commonjs/libs/MentionManager.js.map +1 -0
- package/lib/commonjs/localization/StringSet.type.js +77 -16
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/common.js +19 -0
- package/lib/commonjs/utils/common.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 +22 -2
- package/lib/module/components/ChannelCover.js.map +1 -1
- package/lib/module/components/ChatFlatList.js +3 -2
- package/lib/module/components/ChatFlatList.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +11 -6
- package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +12 -2
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +25 -10
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +9 -3
- package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +86 -12
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +101 -17
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/index.js.map +1 -1
- package/lib/module/components/MessageRenderer/index.js +22 -5
- package/lib/module/components/MessageRenderer/index.js.map +1 -1
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +132 -0
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -0
- package/lib/module/components/ReactionAddons/MessageReactionAddon.js +118 -0
- package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -0
- package/lib/module/components/ReactionAddons/ReactionRoundedButton.js +74 -0
- package/lib/module/components/ReactionAddons/ReactionRoundedButton.js.map +1 -0
- package/lib/module/components/ReactionAddons/index.js +7 -0
- package/lib/module/components/ReactionAddons/index.js.map +1 -0
- package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +135 -0
- package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -0
- package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +259 -0
- package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -0
- package/lib/module/components/ReactionBottomSheets/index.js +7 -0
- package/lib/module/components/ReactionBottomSheets/index.js.map +1 -0
- package/lib/module/components/TypedPlaceholder.js +2 -2
- package/lib/module/components/TypedPlaceholder.js.map +1 -1
- package/lib/module/components/UserActionBar.js +8 -5
- package/lib/module/components/UserActionBar.js.map +1 -1
- package/lib/module/constants.js +1 -0
- package/lib/module/constants.js.map +1 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js +9 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +123 -81
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/{Localization.js → LocalizationCtx.js} +1 -1
- package/lib/module/contexts/LocalizationCtx.js.map +1 -0
- package/lib/module/contexts/{PlatformService.js → PlatformServiceCtx.js} +1 -1
- package/lib/module/contexts/PlatformServiceCtx.js.map +1 -0
- package/lib/module/contexts/ReactionCtx.js +85 -0
- package/lib/module/contexts/ReactionCtx.js.map +1 -0
- package/lib/module/contexts/{SendbirdChat.js → SendbirdChatCtx.js} +21 -7
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -0
- package/lib/module/contexts/UserProfileCtx.js +101 -0
- package/lib/module/contexts/UserProfileCtx.js.map +1 -0
- package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js +35 -38
- package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +27 -14
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +126 -37
- package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +32 -14
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +188 -0
- package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -0
- package/lib/module/domain/groupChannel/index.js +1 -0
- package/lib/module/domain/groupChannel/index.js.map +1 -1
- package/lib/module/domain/groupChannel/module/createGroupChannelModule.js +3 -0
- package/lib/module/domain/groupChannel/module/createGroupChannelModule.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +4 -4
- 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/component/GroupChannelBannedUsersHeader.js +25 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +41 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js +21 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js +25 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js +21 -0
- package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/index.js +7 -0
- package/lib/module/domain/groupChannelBannedUsers/index.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js +30 -0
- package/lib/module/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/module/moduleContext.js +25 -0
- package/lib/module/domain/groupChannelBannedUsers/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelBannedUsers/types.js +2 -0
- package/lib/module/domain/groupChannelBannedUsers/types.js.map +1 -0
- package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +3 -2
- package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
- package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +34 -33
- package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
- package/lib/module/domain/groupChannelList/types.js.map +1 -1
- package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationHeader.js +25 -0
- package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationHeader.js.map +1 -0
- package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationMenu.js +87 -0
- package/lib/module/domain/groupChannelModeration/component/GroupChannelModerationMenu.js.map +1 -0
- package/lib/module/domain/groupChannelModeration/index.js +5 -0
- package/lib/module/domain/groupChannelModeration/index.js.map +1 -0
- package/lib/module/domain/groupChannelModeration/module/createGroupChannelModerationModule.js +21 -0
- package/lib/module/domain/groupChannelModeration/module/createGroupChannelModerationModule.js.map +1 -0
- package/lib/module/domain/groupChannelModeration/module/moduleContext.js +26 -0
- package/lib/module/domain/groupChannelModeration/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelModeration/types.js +2 -0
- package/lib/module/domain/groupChannelModeration/types.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js +25 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +39 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js +21 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js +25 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js +21 -0
- package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/index.js +8 -0
- package/lib/module/domain/groupChannelMutedMembers/index.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js +30 -0
- package/lib/module/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/module/moduleContext.js +25 -0
- package/lib/module/domain/groupChannelMutedMembers/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelMutedMembers/types.js +2 -0
- package/lib/module/domain/groupChannelMutedMembers/types.js.map +1 -0
- package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js +25 -0
- package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js.map +1 -0
- package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js +122 -0
- package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js.map +1 -0
- package/lib/module/domain/groupChannelNotifications/index.js +5 -0
- package/lib/module/domain/groupChannelNotifications/index.js.map +1 -0
- package/lib/module/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js +21 -0
- package/lib/module/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js.map +1 -0
- package/lib/module/domain/groupChannelNotifications/module/moduleContext.js +25 -0
- package/lib/module/domain/groupChannelNotifications/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelNotifications/types.js +2 -0
- package/lib/module/domain/groupChannelNotifications/types.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js +30 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +39 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js +21 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js +25 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js +21 -0
- package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/index.js +8 -0
- package/lib/module/domain/groupChannelOperators/index.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js +30 -0
- package/lib/module/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/module/moduleContext.js +25 -0
- package/lib/module/domain/groupChannelOperators/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelOperators/types.js +2 -0
- package/lib/module/domain/groupChannelOperators/types.js.map +1 -0
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +2 -8
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +57 -6
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js +10 -15
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
- package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
- package/lib/module/domain/userList/component/UserListList.js +3 -1
- package/lib/module/domain/userList/component/UserListList.js.map +1 -1
- package/lib/module/domain/userList/component/UserListStatusError.js +2 -2
- package/lib/module/domain/userList/component/UserListStatusError.js.map +1 -1
- package/lib/module/domain/userList/module/createUserListModule.js.map +1 -1
- package/lib/module/domain/userList/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelBannedUsersFragment.js +84 -0
- package/lib/module/fragments/createGroupChannelBannedUsersFragment.js.map +1 -0
- package/lib/module/fragments/createGroupChannelCreateFragment.js +10 -26
- package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +22 -8
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelInviteFragment.js +22 -37
- package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +4 -11
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js +99 -56
- package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelModerationFragment.js +53 -0
- package/lib/module/fragments/createGroupChannelModerationFragment.js.map +1 -0
- package/lib/module/fragments/createGroupChannelMutedMembersFragment.js +98 -0
- package/lib/module/fragments/createGroupChannelMutedMembersFragment.js.map +1 -0
- package/lib/module/fragments/createGroupChannelNotificationsFragment.js +22 -0
- package/lib/module/fragments/createGroupChannelNotificationsFragment.js.map +1 -0
- package/lib/module/fragments/createGroupChannelOperatorsFragment.js +111 -0
- package/lib/module/fragments/createGroupChannelOperatorsFragment.js.map +1 -0
- package/lib/module/fragments/createGroupChannelRegisterOperatorFragment.js +94 -0
- package/lib/module/fragments/createGroupChannelRegisterOperatorFragment.js.map +1 -0
- package/lib/module/fragments/createGroupChannelSettingsFragment.js +5 -1
- package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
- package/lib/module/hooks/useConnection.js +7 -0
- package/lib/module/hooks/useConnection.js.map +1 -1
- package/lib/module/hooks/useContext.js +15 -3
- package/lib/module/hooks/useContext.js.map +1 -1
- package/lib/module/hooks/useKeyboardStatus.js +75 -0
- package/lib/module/hooks/useKeyboardStatus.js.map +1 -0
- package/lib/module/hooks/useMentionSuggestion.js +100 -0
- package/lib/module/hooks/useMentionSuggestion.js.map +1 -0
- package/lib/module/hooks/useMentionTextInput.js +128 -0
- package/lib/module/hooks/useMentionTextInput.js.map +1 -0
- package/lib/module/index.js +17 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/libs/EmojiManager.js +90 -0
- package/lib/module/libs/EmojiManager.js.map +1 -0
- package/lib/module/libs/MentionConfig.js +39 -0
- package/lib/module/libs/MentionConfig.js.map +1 -0
- package/lib/module/libs/MentionManager.js +223 -0
- package/lib/module/libs/MentionManager.js.map +1 -0
- package/lib/module/localization/StringSet.type.js +78 -17
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/common.js +7 -0
- package/lib/module/utils/common.js.map +1 -0
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/__template__/types.d.ts +3 -3
- package/lib/typescript/src/components/ChannelCover.d.ts +2 -2
- package/lib/typescript/src/components/ChatFlatList.d.ts +1 -1
- package/lib/typescript/src/components/FileViewer.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +2 -2
- package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +11 -2
- package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/MessageOutgoingStatus.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +1 -1
- package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +2 -2
- package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +4 -1
- package/lib/typescript/src/components/MessageRenderer/index.d.ts +4 -3
- package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
- package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +8 -0
- package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +6 -0
- package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +14 -0
- package/lib/typescript/src/components/ReactionAddons/index.d.ts +11 -0
- package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +3 -0
- package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +3 -0
- package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +20 -0
- package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
- package/lib/typescript/src/components/StatusComposition.d.ts +1 -1
- package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -2
- package/lib/typescript/src/components/UserActionBar.d.ts +5 -3
- package/lib/typescript/src/components/UserSelectableBar.d.ts +1 -1
- package/lib/typescript/src/constants.d.ts +1 -0
- package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
- package/lib/typescript/src/contexts/{Localization.d.ts → LocalizationCtx.d.ts} +2 -2
- package/lib/typescript/src/contexts/{PlatformService.d.ts → PlatformServiceCtx.d.ts} +1 -1
- package/lib/typescript/src/contexts/ReactionCtx.d.ts +18 -0
- package/lib/typescript/src/contexts/{SendbirdChat.d.ts → SendbirdChatCtx.d.ts} +17 -5
- package/lib/typescript/src/contexts/UserProfileCtx.d.ts +15 -0
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +36 -7
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +34 -5
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +20 -3
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannel/index.d.ts +1 -0
- package/lib/typescript/src/domain/groupChannel/module/createGroupChannelModule.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/types.d.ts +25 -8
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/index.d.ts +6 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelBannedUsers/types.d.ts +47 -0
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannelList/types.d.ts +5 -11
- package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelModeration/index.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannelModeration/module/createGroupChannelModerationModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelModeration/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelModeration/types.d.ts +43 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/index.d.ts +7 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelMutedMembers/types.d.ts +47 -0
- package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelNotifications/index.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelNotifications/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelNotifications/types.d.ts +33 -0
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -0
- package/lib/typescript/src/domain/groupChannelOperators/index.d.ts +7 -0
- package/lib/typescript/src/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelOperators/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelOperators/types.d.ts +49 -0
- package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +5 -1
- package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +17 -11
- package/lib/typescript/src/domain/userList/component/UserListList.d.ts +2 -1
- package/lib/typescript/src/domain/userList/component/UserListStatusError.d.ts +2 -2
- package/lib/typescript/src/domain/userList/module/createUserListModule.d.ts +2 -1
- package/lib/typescript/src/domain/userList/types.d.ts +4 -3
- package/lib/typescript/src/fragments/createGroupChannelBannedUsersFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createGroupChannelCreateFragment.d.ts +2 -1
- package/lib/typescript/src/fragments/createGroupChannelInviteFragment.d.ts +2 -1
- package/lib/typescript/src/fragments/createGroupChannelModerationFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createGroupChannelMutedMembersFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createGroupChannelNotificationsFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createGroupChannelOperatorsFragment.d.ts +3 -0
- package/lib/typescript/src/fragments/createGroupChannelRegisterOperatorFragment.d.ts +5 -0
- package/lib/typescript/src/hooks/useConnection.d.ts +1 -1
- package/lib/typescript/src/hooks/useContext.d.ts +7 -1
- package/lib/typescript/src/hooks/useKeyboardStatus.d.ts +6 -0
- package/lib/typescript/src/hooks/useMentionSuggestion.d.ts +17 -0
- package/lib/typescript/src/hooks/useMentionTextInput.d.ts +18 -0
- package/lib/typescript/src/index.d.ts +16 -5
- package/lib/typescript/src/libs/EmojiManager.d.ts +16 -0
- package/lib/typescript/src/libs/MentionConfig.d.ts +24 -0
- package/lib/typescript/src/libs/MentionManager.d.ts +61 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +63 -9
- package/lib/typescript/src/platform/createFileService.native.d.ts +1 -1
- package/lib/typescript/src/platform/createMediaService.expo.d.ts +1 -1
- package/lib/typescript/src/platform/createMediaService.native.d.ts +1 -1
- package/lib/typescript/src/platform/dynamicModule.d.ts +1 -1
- package/lib/typescript/src/platform/types.d.ts +5 -5
- package/lib/typescript/src/types.d.ts +13 -4
- package/lib/typescript/src/utils/common.d.ts +1 -0
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +11 -11
- package/src/components/ChannelCover.tsx +23 -3
- package/src/components/ChatFlatList.tsx +2 -1
- package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +17 -12
- package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +25 -18
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +20 -10
- package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +9 -2
- package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +82 -14
- package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +135 -61
- package/src/components/MessageRenderer/UserMessage/index.tsx +8 -1
- package/src/components/MessageRenderer/index.tsx +40 -8
- package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +106 -0
- package/src/components/ReactionAddons/MessageReactionAddon.tsx +123 -0
- package/src/components/ReactionAddons/ReactionRoundedButton.tsx +71 -0
- package/src/components/ReactionAddons/index.tsx +7 -0
- package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +113 -0
- package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +249 -0
- package/src/components/ReactionBottomSheets/index.tsx +24 -0
- package/src/components/TypedPlaceholder.tsx +4 -4
- package/src/components/UserActionBar.tsx +10 -4
- package/src/constants.ts +2 -0
- package/src/containers/GroupChannelPreviewContainer.tsx +8 -1
- package/src/containers/SendbirdUIKitContainer.tsx +161 -84
- package/src/contexts/{Localization.tsx → LocalizationCtx.tsx} +0 -0
- package/src/contexts/{PlatformService.tsx → PlatformServiceCtx.tsx} +0 -0
- package/src/contexts/ReactionCtx.tsx +102 -0
- package/src/contexts/{SendbirdChat.tsx → SendbirdChatCtx.tsx} +34 -6
- package/src/contexts/UserProfileCtx.tsx +135 -0
- package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +57 -29
- package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +56 -13
- package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +138 -41
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +27 -10
- package/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.tsx +173 -0
- package/src/domain/groupChannel/index.ts +1 -0
- package/src/domain/groupChannel/module/createGroupChannelModule.tsx +12 -1
- package/src/domain/groupChannel/module/moduleContext.tsx +4 -4
- package/src/domain/groupChannel/types.ts +29 -6
- package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.tsx +14 -0
- package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.tsx +33 -0
- package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.tsx +18 -0
- package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusError.tsx +19 -0
- package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.tsx +18 -0
- package/src/domain/groupChannelBannedUsers/index.ts +6 -0
- package/src/domain/groupChannelBannedUsers/module/createGroupChannelBannedUsersModule.tsx +21 -0
- package/src/domain/groupChannelBannedUsers/module/moduleContext.tsx +30 -0
- package/src/domain/groupChannelBannedUsers/types.ts +50 -0
- package/src/domain/groupChannelList/component/GroupChannelListList.tsx +2 -1
- package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +37 -43
- package/src/domain/groupChannelList/types.ts +3 -9
- package/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.tsx +14 -0
- package/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.tsx +84 -0
- package/src/domain/groupChannelModeration/index.ts +4 -0
- package/src/domain/groupChannelModeration/module/createGroupChannelModerationModule.tsx +15 -0
- package/src/domain/groupChannelModeration/module/moduleContext.tsx +33 -0
- package/src/domain/groupChannelModeration/types.ts +48 -0
- package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.tsx +14 -0
- package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.tsx +31 -0
- package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.tsx +18 -0
- package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusError.tsx +19 -0
- package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.tsx +18 -0
- package/src/domain/groupChannelMutedMembers/index.ts +7 -0
- package/src/domain/groupChannelMutedMembers/module/createGroupChannelMutedMembersModule.tsx +21 -0
- package/src/domain/groupChannelMutedMembers/module/moduleContext.tsx +30 -0
- package/src/domain/groupChannelMutedMembers/types.ts +50 -0
- package/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.tsx +14 -0
- package/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.tsx +128 -0
- package/src/domain/groupChannelNotifications/index.ts +4 -0
- package/src/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.tsx +15 -0
- package/src/domain/groupChannelNotifications/module/moduleContext.tsx +31 -0
- package/src/domain/groupChannelNotifications/types.ts +38 -0
- package/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.tsx +25 -0
- package/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.tsx +30 -0
- package/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.tsx +18 -0
- package/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusError.tsx +19 -0
- package/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.tsx +18 -0
- package/src/domain/groupChannelOperators/index.ts +7 -0
- package/src/domain/groupChannelOperators/module/createGroupChannelOperatorsModule.tsx +21 -0
- package/src/domain/groupChannelOperators/module/moduleContext.tsx +30 -0
- package/src/domain/groupChannelOperators/types.ts +52 -0
- package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +2 -7
- package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +51 -3
- package/src/domain/groupChannelSettings/module/moduleContext.tsx +9 -12
- package/src/domain/groupChannelSettings/types.ts +4 -0
- package/src/domain/groupChannelUserList/types.ts +31 -11
- package/src/domain/userList/component/UserListList.tsx +5 -1
- package/src/domain/userList/component/UserListStatusError.tsx +2 -2
- package/src/domain/userList/module/createUserListModule.tsx +3 -1
- package/src/domain/userList/types.ts +4 -1
- package/src/fragments/createGroupChannelBannedUsersFragment.tsx +80 -0
- package/src/fragments/createGroupChannelCreateFragment.tsx +18 -32
- package/src/fragments/createGroupChannelFragment.tsx +31 -11
- package/src/fragments/createGroupChannelInviteFragment.tsx +28 -50
- package/src/fragments/createGroupChannelListFragment.tsx +4 -10
- package/src/fragments/createGroupChannelMembersFragment.tsx +110 -67
- package/src/fragments/createGroupChannelModerationFragment.tsx +57 -0
- package/src/fragments/createGroupChannelMutedMembersFragment.tsx +93 -0
- package/src/fragments/createGroupChannelNotificationsFragment.tsx +27 -0
- package/src/fragments/createGroupChannelOperatorsFragment.tsx +101 -0
- package/src/fragments/createGroupChannelRegisterOperatorFragment.tsx +94 -0
- package/src/fragments/createGroupChannelSettingsFragment.tsx +11 -1
- package/src/hooks/useConnection.ts +5 -1
- package/src/hooks/useContext.ts +17 -3
- package/src/hooks/useKeyboardStatus.ts +54 -0
- package/src/hooks/useMentionSuggestion.ts +106 -0
- package/src/hooks/useMentionTextInput.ts +139 -0
- package/src/index.ts +22 -5
- package/src/libs/EmojiManager.ts +80 -0
- package/src/libs/MentionConfig.ts +40 -0
- package/src/libs/MentionManager.tsx +240 -0
- package/src/localization/StringSet.type.ts +137 -22
- package/src/platform/createFileService.native.ts +1 -1
- package/src/types.ts +12 -0
- package/src/utils/common.ts +8 -0
- package/src/version.ts +1 -1
- package/lib/commonjs/contexts/Localization.js.map +0 -1
- package/lib/commonjs/contexts/PlatformService.js.map +0 -1
- package/lib/commonjs/contexts/SendbirdChat.js.map +0 -1
- package/lib/module/contexts/Localization.js.map +0 -1
- package/lib/module/contexts/PlatformService.js.map +0 -1
- package/lib/module/contexts/SendbirdChat.js.map +0 -1
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import type { SendbirdFileMessage, SendbirdUser, SendbirdUserMessage } from '@sendbird/uikit-utils';
|
|
5
|
+
import { createMentionTemplateRegex, replaceWithRegex } from '@sendbird/uikit-utils';
|
|
6
|
+
|
|
7
|
+
import type { MentionedUser, Range } from '../types';
|
|
8
|
+
import type { MentionConfigInterface } from './MentionConfig';
|
|
9
|
+
|
|
10
|
+
class MentionManager {
|
|
11
|
+
private _invalidStartsKeywords: string[];
|
|
12
|
+
private _templateRegex: RegExp;
|
|
13
|
+
|
|
14
|
+
constructor(public config: MentionConfigInterface, public mentionEnabled: boolean) {
|
|
15
|
+
this._invalidStartsKeywords = [this.config.trigger, this.config.delimiter];
|
|
16
|
+
this._templateRegex = createMentionTemplateRegex(this.config.trigger);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public rangeHelpers = {
|
|
20
|
+
inRangeUnderOver(start: number, num: number, end: number) {
|
|
21
|
+
return start < num && num < end;
|
|
22
|
+
},
|
|
23
|
+
inRangeUnderMore(start: number, num: number, end: number) {
|
|
24
|
+
return start < num && num <= end;
|
|
25
|
+
},
|
|
26
|
+
inRangeLessOver(start: number, num: number, end: number) {
|
|
27
|
+
return start <= num && num < end;
|
|
28
|
+
},
|
|
29
|
+
inRangeLessMore(start: number, num: number, end: number) {
|
|
30
|
+
return start <= num && num <= end;
|
|
31
|
+
},
|
|
32
|
+
overlaps(a: Range, b: Range, compare: 'underOver' | 'underMore' | 'lessOver' | 'lessMore' = 'underOver') {
|
|
33
|
+
const inRange = {
|
|
34
|
+
underOver: this.inRangeUnderOver,
|
|
35
|
+
underMore: this.inRangeUnderMore,
|
|
36
|
+
lessOver: this.inRangeLessOver,
|
|
37
|
+
lessMore: this.inRangeLessMore,
|
|
38
|
+
}[compare];
|
|
39
|
+
|
|
40
|
+
return inRange(a.start, b.start, a.end) || inRange(a.start, b.end, a.end);
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
public get templateRegex() {
|
|
45
|
+
return this._templateRegex;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public getSearchString = (text: string, selectionIndex: number) => {
|
|
49
|
+
const lastSpan = text.slice(0, selectionIndex).split(this.config.delimiter).pop() ?? '';
|
|
50
|
+
const triggerIdx = lastSpan.indexOf(this.config.trigger);
|
|
51
|
+
const mentionSpan = triggerIdx === -1 ? lastSpan : lastSpan.slice(triggerIdx);
|
|
52
|
+
const searchString = mentionSpan.slice(this.config.trigger.length);
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
searchString,
|
|
56
|
+
isTriggered: () => mentionSpan.startsWith(this.config.trigger),
|
|
57
|
+
isValidSearchString: () => this._invalidStartsKeywords.every((it) => !searchString.startsWith(it)),
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @description Reconcile the range by offset in the mentioned users
|
|
63
|
+
* */
|
|
64
|
+
public reconcileRangeOfMentionedUsers = (offset: number, selectionIndex: number, mentionedUsers: MentionedUser[]) => {
|
|
65
|
+
return mentionedUsers.map((it) => {
|
|
66
|
+
// Changes only on the right text of selection.
|
|
67
|
+
if (selectionIndex <= it.range.start) {
|
|
68
|
+
return {
|
|
69
|
+
...it,
|
|
70
|
+
range: {
|
|
71
|
+
start: it.range.start + offset,
|
|
72
|
+
end: it.range.end + offset,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return it;
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @description Remove users who in a range
|
|
83
|
+
* */
|
|
84
|
+
public removeMentionedUsersInSelection = (selection: Range, mentionedUsers: MentionedUser[]) => {
|
|
85
|
+
let lastSelection = 0;
|
|
86
|
+
let removedOffset = 0;
|
|
87
|
+
const filtered = mentionedUsers.filter((it) => {
|
|
88
|
+
const shouldRemove = this.rangeHelpers.overlaps(selection, it.range, 'lessMore');
|
|
89
|
+
if (shouldRemove) {
|
|
90
|
+
lastSelection = Math.max(lastSelection, it.range.end);
|
|
91
|
+
removedOffset -= it.range.end - it.range.start;
|
|
92
|
+
}
|
|
93
|
+
return !shouldRemove;
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
return { filtered, lastSelection, removedOffset };
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
public getSearchStringRangeInText = (selectionIndex: number, searchString: string): Range => {
|
|
100
|
+
return {
|
|
101
|
+
start: selectionIndex - searchString.length - this.config.trigger.length,
|
|
102
|
+
end: selectionIndex,
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @description User to @{user.id} template format
|
|
108
|
+
* */
|
|
109
|
+
public asMentionedMessageTemplate = (user: SendbirdUser, delimiter = false) => {
|
|
110
|
+
return `${this.config.trigger}{${user.userId}}` + (delimiter ? this.config.delimiter : '');
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @description User to @user.nickname text format
|
|
115
|
+
* */
|
|
116
|
+
public asMentionedMessageText = (user: SendbirdUser, delimiter = false) => {
|
|
117
|
+
return `${this.config.trigger}${user.nickname}` + (delimiter ? this.config.delimiter : '');
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @description Bold @user.nickname
|
|
122
|
+
* */
|
|
123
|
+
public textToMentionedComponents = (text: string, mentionedUsers: MentionedUser[]) => {
|
|
124
|
+
if (!this.mentionEnabled || mentionedUsers.length === 0) return text;
|
|
125
|
+
|
|
126
|
+
const { leftText, components } = mentionedUsers
|
|
127
|
+
.sort((a, b) => b.range.start - a.range.start)
|
|
128
|
+
.reduce(
|
|
129
|
+
({ leftText, components }, curr, currentIndex) => {
|
|
130
|
+
const leftSpan = leftText.slice(0, curr.range.start);
|
|
131
|
+
const mentionSpan = leftText.slice(curr.range.start, curr.range.end);
|
|
132
|
+
const rightSpan = leftText.slice(curr.range.end);
|
|
133
|
+
|
|
134
|
+
return {
|
|
135
|
+
leftText: leftSpan,
|
|
136
|
+
components: [
|
|
137
|
+
<Text key={mentionSpan + currentIndex} style={styles.mentionedText}>
|
|
138
|
+
{mentionSpan}
|
|
139
|
+
</Text>,
|
|
140
|
+
rightSpan,
|
|
141
|
+
...components,
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
{ leftText: text, components: [] as (string | JSX.Element)[] },
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
return [leftText, ...components];
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
public textToMentionedMessageTemplate = (text: string, mentionedUsers: MentionedUser[]) => {
|
|
152
|
+
if (!this.mentionEnabled) return text;
|
|
153
|
+
|
|
154
|
+
const { leftText, strings } = mentionedUsers
|
|
155
|
+
.sort((a, b) => b.range.start - a.range.start)
|
|
156
|
+
.reduce(
|
|
157
|
+
({ leftText, strings }, curr) => {
|
|
158
|
+
const leftSpan = leftText.slice(0, curr.range.start);
|
|
159
|
+
const templateSpan = this.asMentionedMessageTemplate(curr.user);
|
|
160
|
+
const rightSpan = leftText.slice(curr.range.end);
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
leftText: leftSpan,
|
|
164
|
+
strings: [templateSpan, rightSpan, ...strings],
|
|
165
|
+
};
|
|
166
|
+
},
|
|
167
|
+
{ leftText: text, strings: [] as string[] },
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
return [leftText, ...strings].join('');
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* @description Convert @{user.id} template to @user.nickname text and MentionedUser[] array.
|
|
175
|
+
* */
|
|
176
|
+
public templateToTextAndMentionedUsers = (template: string, mentionedUsers: SendbirdUser[]) => {
|
|
177
|
+
const actualMentionedUsers: MentionedUser[] = [];
|
|
178
|
+
|
|
179
|
+
let offsetToMove = 0;
|
|
180
|
+
const mentionedText = replaceWithRegex(
|
|
181
|
+
template,
|
|
182
|
+
this.templateRegex,
|
|
183
|
+
({ match, matchIndex, groups }) => {
|
|
184
|
+
const user = mentionedUsers.find((it) => it.userId === groups[2]);
|
|
185
|
+
if (user && typeof matchIndex === 'number') {
|
|
186
|
+
const userIdSpan = match;
|
|
187
|
+
const userNicknameSpan = this.asMentionedMessageText(user);
|
|
188
|
+
|
|
189
|
+
const offsetAfterConverted = userNicknameSpan.length - userIdSpan.length;
|
|
190
|
+
|
|
191
|
+
const originalRange: Range = {
|
|
192
|
+
start: matchIndex,
|
|
193
|
+
end: matchIndex + userIdSpan.length,
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const convertedRange: Range = {
|
|
197
|
+
start: Math.max(0, originalRange.start + offsetToMove),
|
|
198
|
+
end: originalRange.end + offsetToMove + offsetAfterConverted,
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
offsetToMove += offsetAfterConverted;
|
|
202
|
+
|
|
203
|
+
actualMentionedUsers.push({ range: convertedRange, user });
|
|
204
|
+
return userNicknameSpan;
|
|
205
|
+
}
|
|
206
|
+
return match;
|
|
207
|
+
},
|
|
208
|
+
'',
|
|
209
|
+
).join('');
|
|
210
|
+
|
|
211
|
+
return {
|
|
212
|
+
mentionedText,
|
|
213
|
+
mentionedUsers: actualMentionedUsers,
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
public shouldUseMentionedMessageTemplate = (
|
|
218
|
+
message?: SendbirdUserMessage | SendbirdFileMessage,
|
|
219
|
+
): message is RequiredSpecific<
|
|
220
|
+
SendbirdUserMessage | SendbirdFileMessage,
|
|
221
|
+
'mentionedMessageTemplate' | 'mentionedUsers' | 'mentionedUserIds' | 'mentionType'
|
|
222
|
+
> => {
|
|
223
|
+
return Boolean(
|
|
224
|
+
this.mentionEnabled &&
|
|
225
|
+
message?.mentionedMessageTemplate &&
|
|
226
|
+
message?.mentionedUsers &&
|
|
227
|
+
message?.mentionedUsers.length > 0,
|
|
228
|
+
);
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
type RequiredSpecific<T, K extends keyof T> = T & {
|
|
233
|
+
[P in K]-?: T[P];
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
const styles = createStyleSheet({
|
|
237
|
+
mentionedText: { fontWeight: 'bold' },
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
export default MentionManager;
|
|
@@ -4,15 +4,16 @@ import type {
|
|
|
4
4
|
PartialDeep,
|
|
5
5
|
SendbirdFileMessage,
|
|
6
6
|
SendbirdGroupChannel,
|
|
7
|
+
SendbirdMember,
|
|
7
8
|
SendbirdMessage,
|
|
8
9
|
SendbirdUser,
|
|
9
10
|
} from '@sendbird/uikit-utils';
|
|
10
11
|
import {
|
|
11
|
-
|
|
12
|
+
getDateSeparatorFormat,
|
|
12
13
|
getGroupChannelLastMessage,
|
|
13
14
|
getGroupChannelPreviewTime,
|
|
14
15
|
getGroupChannelTitle,
|
|
15
|
-
|
|
16
|
+
getMessageTimeFormat,
|
|
16
17
|
} from '@sendbird/uikit-utils';
|
|
17
18
|
|
|
18
19
|
/**
|
|
@@ -39,9 +40,13 @@ export interface StringSet {
|
|
|
39
40
|
/** GroupChannel > Input */
|
|
40
41
|
INPUT_PLACEHOLDER_ACTIVE: string;
|
|
41
42
|
INPUT_PLACEHOLDER_DISABLED: string;
|
|
43
|
+
INPUT_PLACEHOLDER_MUTED: string;
|
|
42
44
|
INPUT_EDIT_OK: string;
|
|
43
45
|
INPUT_EDIT_CANCEL: string;
|
|
44
46
|
|
|
47
|
+
/** GroupChannel > Suggested mention list */
|
|
48
|
+
MENTION_LIMITED: (mentionLimit: number) => string;
|
|
49
|
+
|
|
45
50
|
/** GroupChannel > Dialog > Message */
|
|
46
51
|
DIALOG_MESSAGE_COPY: string;
|
|
47
52
|
DIALOG_MESSAGE_EDIT: string;
|
|
@@ -66,9 +71,13 @@ export interface StringSet {
|
|
|
66
71
|
HEADER_RIGHT: string;
|
|
67
72
|
|
|
68
73
|
/** GroupChannelSettings > Menu */
|
|
69
|
-
|
|
74
|
+
MENU_MODERATION: string;
|
|
70
75
|
MENU_MEMBERS: string;
|
|
71
76
|
MENU_LEAVE_CHANNEL: string;
|
|
77
|
+
MENU_NOTIFICATION: string;
|
|
78
|
+
MENU_NOTIFICATION_LABEL_ON: string;
|
|
79
|
+
MENU_NOTIFICATION_LABEL_OFF: string;
|
|
80
|
+
MENU_NOTIFICATION_LABEL_MENTION_ONLY: string;
|
|
72
81
|
|
|
73
82
|
/** GroupChannelSettings > Dialog */
|
|
74
83
|
DIALOG_CHANGE_NAME: string;
|
|
@@ -81,6 +90,43 @@ export interface StringSet {
|
|
|
81
90
|
DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;
|
|
82
91
|
DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;
|
|
83
92
|
};
|
|
93
|
+
GROUP_CHANNEL_NOTIFICATIONS: {
|
|
94
|
+
/** GroupChannelNotifications > Header */
|
|
95
|
+
HEADER_TITLE: string;
|
|
96
|
+
|
|
97
|
+
/** GroupChannelNotifications > Menu */
|
|
98
|
+
MENU_NOTIFICATIONS: string;
|
|
99
|
+
MENU_NOTIFICATIONS_DESC: string;
|
|
100
|
+
MENU_NOTIFICATIONS_OPTION_ALL: string;
|
|
101
|
+
MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: string;
|
|
102
|
+
};
|
|
103
|
+
GROUP_CHANNEL_MODERATION: {
|
|
104
|
+
/** GroupChannelModeration > Header */
|
|
105
|
+
HEADER_TITLE: string;
|
|
106
|
+
|
|
107
|
+
/** GroupChannelModeration > Menu */
|
|
108
|
+
MENU_OPERATORS: string;
|
|
109
|
+
MENU_MUTED_MEMBERS: string;
|
|
110
|
+
MENU_BANNED_USERS: string;
|
|
111
|
+
MENU_FREEZE_CHANNEL: string;
|
|
112
|
+
};
|
|
113
|
+
GROUP_CHANNEL_OPERATORS: {
|
|
114
|
+
/** GroupChannelOperators > Header */
|
|
115
|
+
HEADER_TITLE: string;
|
|
116
|
+
};
|
|
117
|
+
GROUP_CHANNEL_REGISTER_OPERATOR: {
|
|
118
|
+
/** GroupChannelRegisterOperator > Header */
|
|
119
|
+
HEADER_TITLE: string;
|
|
120
|
+
HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdMember> }) => string;
|
|
121
|
+
};
|
|
122
|
+
GROUP_CHANNEL_MUTED_MEMBERS: {
|
|
123
|
+
/** GroupChannelMutedMembers > Header */
|
|
124
|
+
HEADER_TITLE: string;
|
|
125
|
+
};
|
|
126
|
+
GROUP_CHANNEL_BANNED_USERS: {
|
|
127
|
+
/** GroupChannelBannedUsers > Header */
|
|
128
|
+
HEADER_TITLE: string;
|
|
129
|
+
};
|
|
84
130
|
GROUP_CHANNEL_LIST: {
|
|
85
131
|
/** GroupChannelList > Header */
|
|
86
132
|
HEADER_TITLE: string;
|
|
@@ -106,14 +152,10 @@ export interface StringSet {
|
|
|
106
152
|
/** GroupChannelMembers > Header */
|
|
107
153
|
HEADER_TITLE: string;
|
|
108
154
|
|
|
109
|
-
/**
|
|
155
|
+
/** @deprecated Please use in LABELS **/
|
|
110
156
|
USER_BAR_ME_POSTFIX: string;
|
|
157
|
+
/** @deprecated Please use in LABELS **/
|
|
111
158
|
USER_BAR_OPERATOR: string;
|
|
112
|
-
|
|
113
|
-
/** GroupChannelMembers > Dialog */
|
|
114
|
-
DIALOG_USER_DISMISS_OPERATOR: string;
|
|
115
|
-
DIALOG_USER_MUTE: string;
|
|
116
|
-
DIALOG_USER_BAN: string;
|
|
117
159
|
};
|
|
118
160
|
GROUP_CHANNEL_INVITE: {
|
|
119
161
|
/** GroupChannelInvite > Header */
|
|
@@ -130,13 +172,23 @@ export interface StringSet {
|
|
|
130
172
|
USER_NO_NAME: string;
|
|
131
173
|
CHANNEL_NO_MEMBERS: string;
|
|
132
174
|
TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;
|
|
175
|
+
|
|
176
|
+
USER_BAR_ME_POSTFIX: string;
|
|
177
|
+
USER_BAR_OPERATOR: string;
|
|
178
|
+
|
|
179
|
+
REGISTER_AS_OPERATOR: string;
|
|
180
|
+
UNREGISTER_OPERATOR: string;
|
|
181
|
+
MUTE: string;
|
|
182
|
+
UNMUTE: string;
|
|
183
|
+
BAN: string;
|
|
184
|
+
UNBAN: string;
|
|
133
185
|
};
|
|
134
186
|
FILE_VIEWER: {
|
|
135
187
|
TITLE: (message: SendbirdFileMessage) => string;
|
|
136
188
|
SUBTITLE: (message: SendbirdFileMessage) => string;
|
|
137
189
|
};
|
|
138
190
|
PLACEHOLDER: {
|
|
139
|
-
|
|
191
|
+
NO_BANNED_USERS: string;
|
|
140
192
|
NO_USERS: string;
|
|
141
193
|
NO_CHANNELS: string;
|
|
142
194
|
NO_MESSAGES: string;
|
|
@@ -174,6 +226,11 @@ export interface StringSet {
|
|
|
174
226
|
TURN_OFF_NOTIFICATIONS_ERROR: string;
|
|
175
227
|
LEAVE_CHANNEL_ERROR: string;
|
|
176
228
|
};
|
|
229
|
+
PROFILE_CARD: {
|
|
230
|
+
BUTTON_MESSAGE: string;
|
|
231
|
+
BODY_LABEL: string;
|
|
232
|
+
BODY: (user: SendbirdUser | SendbirdMember) => string;
|
|
233
|
+
};
|
|
177
234
|
}
|
|
178
235
|
|
|
179
236
|
type StringSetCreateOptions = {
|
|
@@ -196,20 +253,23 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
196
253
|
HEADER_TITLE: (currentUserId, channel) =>
|
|
197
254
|
getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),
|
|
198
255
|
LIST_BANNER_FROZEN: 'Channel is frozen',
|
|
199
|
-
LIST_DATE_SEPARATOR: (date, locale) =>
|
|
256
|
+
LIST_DATE_SEPARATOR: (date, locale) => getDateSeparatorFormat(date, locale ?? dateLocale),
|
|
200
257
|
LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,
|
|
201
258
|
|
|
202
|
-
MESSAGE_BUBBLE_TIME: (message, locale) =>
|
|
259
|
+
MESSAGE_BUBBLE_TIME: (message, locale) => getMessageTimeFormat(new Date(message.createdAt), locale ?? dateLocale),
|
|
203
260
|
MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,
|
|
204
261
|
MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',
|
|
205
262
|
MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',
|
|
206
263
|
MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',
|
|
207
264
|
|
|
208
265
|
INPUT_PLACEHOLDER_ACTIVE: 'Enter message',
|
|
209
|
-
INPUT_PLACEHOLDER_DISABLED: 'Chat
|
|
266
|
+
INPUT_PLACEHOLDER_DISABLED: 'Chat not available in this channel.',
|
|
267
|
+
INPUT_PLACEHOLDER_MUTED: "You're muted by the operator.",
|
|
210
268
|
INPUT_EDIT_OK: 'Save',
|
|
211
269
|
INPUT_EDIT_CANCEL: 'Cancel',
|
|
212
270
|
|
|
271
|
+
MENTION_LIMITED: (mentionLimit) => `You can have up to ${mentionLimit} mentions per message.`,
|
|
272
|
+
|
|
213
273
|
DIALOG_MESSAGE_COPY: 'Copy',
|
|
214
274
|
DIALOG_MESSAGE_EDIT: 'Edit',
|
|
215
275
|
DIALOG_MESSAGE_SAVE: 'Save',
|
|
@@ -228,9 +288,13 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
228
288
|
GROUP_CHANNEL_SETTINGS: {
|
|
229
289
|
HEADER_TITLE: 'Channel information',
|
|
230
290
|
HEADER_RIGHT: 'Edit',
|
|
231
|
-
|
|
291
|
+
MENU_MODERATION: 'Moderation',
|
|
232
292
|
MENU_MEMBERS: 'Members',
|
|
233
293
|
MENU_LEAVE_CHANNEL: 'Leave channel',
|
|
294
|
+
MENU_NOTIFICATION: 'Notifications',
|
|
295
|
+
MENU_NOTIFICATION_LABEL_ON: 'On',
|
|
296
|
+
MENU_NOTIFICATION_LABEL_OFF: 'Off',
|
|
297
|
+
MENU_NOTIFICATION_LABEL_MENTION_ONLY: 'Mentions only',
|
|
234
298
|
DIALOG_CHANGE_NAME: 'Change channel name',
|
|
235
299
|
DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',
|
|
236
300
|
DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',
|
|
@@ -242,6 +306,44 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
242
306
|
DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',
|
|
243
307
|
...overrides?.GROUP_CHANNEL_SETTINGS,
|
|
244
308
|
},
|
|
309
|
+
GROUP_CHANNEL_NOTIFICATIONS: {
|
|
310
|
+
HEADER_TITLE: 'Notifications',
|
|
311
|
+
MENU_NOTIFICATIONS: 'Notifications',
|
|
312
|
+
MENU_NOTIFICATIONS_DESC:
|
|
313
|
+
'Turn on push notifications if you wish to be notified when messages are delivered to this channel.',
|
|
314
|
+
MENU_NOTIFICATIONS_OPTION_ALL: 'All new messages',
|
|
315
|
+
MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: 'Mentions only',
|
|
316
|
+
...overrides?.GROUP_CHANNEL_NOTIFICATIONS,
|
|
317
|
+
},
|
|
318
|
+
GROUP_CHANNEL_MODERATION: {
|
|
319
|
+
HEADER_TITLE: 'Moderation',
|
|
320
|
+
MENU_OPERATORS: 'Operators',
|
|
321
|
+
MENU_MUTED_MEMBERS: 'Muted members',
|
|
322
|
+
MENU_BANNED_USERS: 'Banned users',
|
|
323
|
+
MENU_FREEZE_CHANNEL: 'Freeze channel',
|
|
324
|
+
...overrides?.GROUP_CHANNEL_MODERATION,
|
|
325
|
+
},
|
|
326
|
+
GROUP_CHANNEL_OPERATORS: {
|
|
327
|
+
HEADER_TITLE: 'Operators',
|
|
328
|
+
...overrides?.GROUP_CHANNEL_OPERATORS,
|
|
329
|
+
},
|
|
330
|
+
GROUP_CHANNEL_REGISTER_OPERATOR: {
|
|
331
|
+
HEADER_TITLE: 'Set as operators',
|
|
332
|
+
HEADER_RIGHT: ({ selectedUsers }) => {
|
|
333
|
+
const len = selectedUsers.length;
|
|
334
|
+
if (len === 0) return 'Add';
|
|
335
|
+
return `Add (${len})`;
|
|
336
|
+
},
|
|
337
|
+
...overrides?.GROUP_CHANNEL_OPERATORS,
|
|
338
|
+
},
|
|
339
|
+
GROUP_CHANNEL_MUTED_MEMBERS: {
|
|
340
|
+
HEADER_TITLE: 'Muted members',
|
|
341
|
+
...overrides?.GROUP_CHANNEL_MUTED_MEMBERS,
|
|
342
|
+
},
|
|
343
|
+
GROUP_CHANNEL_BANNED_USERS: {
|
|
344
|
+
HEADER_TITLE: 'Banned users',
|
|
345
|
+
...overrides?.GROUP_CHANNEL_BANNED_USERS,
|
|
346
|
+
},
|
|
245
347
|
GROUP_CHANNEL_LIST: {
|
|
246
348
|
HEADER_TITLE: 'Channels',
|
|
247
349
|
CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>
|
|
@@ -264,11 +366,10 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
264
366
|
},
|
|
265
367
|
GROUP_CHANNEL_MEMBERS: {
|
|
266
368
|
HEADER_TITLE: 'Members',
|
|
369
|
+
/** @deprecated Please use in LABELS **/
|
|
267
370
|
USER_BAR_ME_POSTFIX: ' (You)',
|
|
371
|
+
/** @deprecated Please use in LABELS **/
|
|
268
372
|
USER_BAR_OPERATOR: 'Operator',
|
|
269
|
-
DIALOG_USER_DISMISS_OPERATOR: 'Dismiss operator',
|
|
270
|
-
DIALOG_USER_MUTE: 'Mute',
|
|
271
|
-
DIALOG_USER_BAN: 'Ban',
|
|
272
373
|
...overrides?.GROUP_CHANNEL_MEMBERS,
|
|
273
374
|
},
|
|
274
375
|
GROUP_CHANNEL_CREATE: {
|
|
@@ -299,14 +400,22 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
299
400
|
if (users.length === 2) return `${userNames.join(' and ')} are typing...`;
|
|
300
401
|
return 'Several people are typing...';
|
|
301
402
|
},
|
|
403
|
+
USER_BAR_ME_POSTFIX: ' (You)',
|
|
404
|
+
USER_BAR_OPERATOR: 'Operator',
|
|
405
|
+
REGISTER_AS_OPERATOR: 'Register as operator',
|
|
406
|
+
UNREGISTER_OPERATOR: 'Unregister operator',
|
|
407
|
+
MUTE: 'Mute',
|
|
408
|
+
UNMUTE: 'Unmute',
|
|
409
|
+
BAN: 'Ban',
|
|
410
|
+
UNBAN: 'Unban',
|
|
302
411
|
...overrides?.LABELS,
|
|
303
412
|
},
|
|
304
413
|
FILE_VIEWER: {
|
|
305
414
|
TITLE: (message) => message.sender?.nickname || USER_NO_NAME,
|
|
306
|
-
SUBTITLE: (message) =>
|
|
415
|
+
SUBTITLE: (message) => getMessageTimeFormat(new Date(message.createdAt), dateLocale),
|
|
307
416
|
},
|
|
308
417
|
PLACEHOLDER: {
|
|
309
|
-
|
|
418
|
+
NO_BANNED_USERS: 'No banned users',
|
|
310
419
|
NO_USERS: 'No users',
|
|
311
420
|
NO_CHANNELS: 'No channels',
|
|
312
421
|
NO_MESSAGES: 'No messages',
|
|
@@ -321,11 +430,11 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
321
430
|
},
|
|
322
431
|
DIALOG: {
|
|
323
432
|
ALERT_DEFAULT_OK: 'OK',
|
|
324
|
-
ALERT_PERMISSIONS_TITLE: 'Allow
|
|
433
|
+
ALERT_PERMISSIONS_TITLE: 'Allow access?',
|
|
325
434
|
ALERT_PERMISSIONS_MESSAGE: (permission, appName = 'Application') => {
|
|
326
|
-
return `${appName} need permission to access your ${permission}
|
|
435
|
+
return `${appName} need permission to access your ${permission}.`;
|
|
327
436
|
},
|
|
328
|
-
ALERT_PERMISSIONS_OK: '
|
|
437
|
+
ALERT_PERMISSIONS_OK: 'Go to settings',
|
|
329
438
|
PROMPT_DEFAULT_OK: 'Submit',
|
|
330
439
|
PROMPT_DEFAULT_CANCEL: 'Cancel',
|
|
331
440
|
PROMPT_DEFAULT_PLACEHOLDER: 'Enter',
|
|
@@ -348,5 +457,11 @@ export const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOp
|
|
|
348
457
|
LEAVE_CHANNEL_ERROR: "Couldn't leave channel.",
|
|
349
458
|
...overrides?.TOAST,
|
|
350
459
|
},
|
|
460
|
+
PROFILE_CARD: {
|
|
461
|
+
BUTTON_MESSAGE: 'Message',
|
|
462
|
+
BODY_LABEL: 'User ID',
|
|
463
|
+
BODY: (user) => user.userId,
|
|
464
|
+
...overrides?.PROFILE_CARD,
|
|
465
|
+
},
|
|
351
466
|
};
|
|
352
467
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type CameraRoll from '@react-native-
|
|
1
|
+
import type { CameraRoll } from '@react-native-camera-roll/camera-roll';
|
|
2
2
|
import { Platform } from 'react-native';
|
|
3
3
|
import type * as DocumentPicker from 'react-native-document-picker';
|
|
4
4
|
import type * as FileAccess from 'react-native-file-access';
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { ErrorInfo, ReactNode } from 'react';
|
|
2
2
|
|
|
3
|
+
import type { SendbirdUser } from '@sendbird/uikit-utils';
|
|
4
|
+
|
|
3
5
|
export type KeyValuePairGet = [string, string | null];
|
|
4
6
|
export type KeyValuePairSet = [string, string];
|
|
5
7
|
export interface LocalCacheStorage {
|
|
@@ -16,3 +18,13 @@ export interface LocalCacheStorage {
|
|
|
16
18
|
export type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };
|
|
17
19
|
|
|
18
20
|
export type CommonComponent<P = {}> = (props: P & { children?: ReactNode }) => null | JSX.Element; //ReactNode;
|
|
21
|
+
|
|
22
|
+
export type MentionedUser = {
|
|
23
|
+
range: Range;
|
|
24
|
+
user: SendbirdUser;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type Range = {
|
|
28
|
+
start: number;
|
|
29
|
+
end: number;
|
|
30
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Linking } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import { Logger } from '@sendbird/uikit-utils';
|
|
4
|
+
|
|
5
|
+
export const openUrl = (url: string) => {
|
|
6
|
+
const targetUrl = url.startsWith('http') ? url : 'https://' + url;
|
|
7
|
+
Linking.openURL(targetUrl).catch((err) => Logger.warn('Cannot open url', err));
|
|
8
|
+
};
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const VERSION = '2.0
|
|
1
|
+
const VERSION = '2.2.0';
|
|
2
2
|
export default VERSION;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["LocalizationContext","React","createContext","LocalizationProvider","children","stringSet","STRINGS"],"sources":["Localization.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { StringSet } from '../localization/StringSet.type';\n\ntype Props = React.PropsWithChildren<{\n stringSet: StringSet;\n}>;\n\nexport type LocalizationContextType = {\n STRINGS: StringSet;\n};\n\nexport const LocalizationContext = React.createContext<LocalizationContextType | null>(null);\nexport const LocalizationProvider = ({ children, stringSet }: Props) => {\n return <LocalizationContext.Provider value={{ STRINGS: stringSet }}>{children}</LocalizationContext.Provider>;\n};\n"],"mappings":";;;;;;;AAAA;;;;AAYO,MAAMA,mBAAmB,gBAAGC,cAAA,CAAMC,aAAN,CAAoD,IAApD,CAA5B;;;;AACA,MAAMC,oBAAoB,GAAG,QAAoC;EAAA,IAAnC;IAAEC,QAAF;IAAYC;EAAZ,CAAmC;EACtE,oBAAO,6BAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAE;MAAEC,OAAO,EAAED;IAAX;EAArC,GAA8DD,QAA9D,CAAP;AACD,CAFM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformService.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService?: MediaServiceInterface;\n}>;\n\nexport const PlatformServiceContext = React.createContext<Props | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;;;AAgBO,MAAMA,sBAAsB,gBAAGC,cAAA,CAAMC,aAAN,CAAkC,IAAlC,CAA/B;;;;AACA,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,6BAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","useEffect","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","AppState","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled"],"sources":["SendbirdChat.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileType } from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n sdkInstance: SendbirdChatSDK;\n\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n}>;\n\ntype Context = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = { nickname };\n\n if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","LocalizationContext","createContext","LocalizationProvider","children","stringSet","STRINGS"],"sources":["Localization.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { StringSet } from '../localization/StringSet.type';\n\ntype Props = React.PropsWithChildren<{\n stringSet: StringSet;\n}>;\n\nexport type LocalizationContextType = {\n STRINGS: StringSet;\n};\n\nexport const LocalizationContext = React.createContext<LocalizationContextType | null>(null);\nexport const LocalizationProvider = ({ children, stringSet }: Props) => {\n return <LocalizationContext.Provider value={{ STRINGS: stringSet }}>{children}</LocalizationContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAYA,OAAO,MAAMC,mBAAmB,gBAAGD,KAAK,CAACE,aAAN,CAAoD,IAApD,CAA5B;AACP,OAAO,MAAMC,oBAAoB,GAAG,QAAoC;EAAA,IAAnC;IAAEC,QAAF;IAAYC;EAAZ,CAAmC;EACtE,oBAAO,oBAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAE;MAAEC,OAAO,EAAED;IAAX;EAArC,GAA8DD,QAA9D,CAAP;AACD,CAFM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","PlatformServiceContext","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformService.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService?: MediaServiceInterface;\n}>;\n\nexport const PlatformServiceContext = React.createContext<Props | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAgBA,OAAO,MAAMC,sBAAsB,gBAAGD,KAAK,CAACE,aAAN,CAAkC,IAAlC,CAA/B;AACP,OAAO,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,oBAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useState","AppState","useAppFeatures","confirmAndMarkAsDelivered","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","children","sdkInstance","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","currentUser","_setCurrentUser","forceUpdate","appFeatures","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled"],"sources":["SendbirdChat.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileType } from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n sdkInstance: SendbirdChatSDK;\n\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n}>;\n\ntype Context = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = { nickname };\n\n if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
|