@sendbird/uikit-react 3.6.11-beta.0 → 3.6.11-beta.2
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/App.js +55 -55
- package/Channel/components/ChannelHeader.js +22 -22
- package/Channel/components/ChannelUI.js +48 -48
- package/Channel/components/FileViewer.js +18 -18
- package/Channel/components/FrozenNotification.js +4 -4
- package/Channel/components/Message.js +42 -42
- package/Channel/components/MessageInput.js +34 -34
- package/Channel/components/MessageList.js +43 -43
- package/Channel/components/RemoveMessageModal.js +22 -22
- package/Channel/components/SuggestedMentionList.js +20 -20
- package/Channel/components/TypingIndicator.js +18 -18
- package/Channel/components/UnreadCount.js +4 -4
- package/Channel/context.js +15 -15
- package/Channel/utils/compareMessagesForGrouping.js +7 -7
- package/Channel/utils/getMessagePartsInfo.js +8 -8
- package/Channel.js +48 -48
- package/ChannelList/components/AddChannel.js +16 -16
- package/ChannelList/components/ChannelListHeader.js +6 -6
- package/ChannelList/components/ChannelListUI.js +33 -33
- package/ChannelList/components/ChannelPreview.js +29 -29
- package/ChannelList/components/ChannelPreviewAction.js +15 -15
- package/ChannelList/context.js +9 -9
- package/ChannelList.js +33 -33
- package/{ChannelListProvider-52997aa4.js → ChannelListProvider-1188e373.js} +17 -14
- package/ChannelListProvider-1188e373.js.map +1 -0
- package/{ChannelProvider-c675e242.js → ChannelProvider-9de00431.js} +13 -13
- package/{ChannelProvider-c675e242.js.map → ChannelProvider-9de00431.js.map} +1 -1
- package/ChannelSettings/components/ChannelProfile.js +13 -13
- package/ChannelSettings/components/ChannelSettingsUI.js +18 -18
- package/ChannelSettings/components/EditDetailsModal.js +13 -13
- package/ChannelSettings/components/LeaveChannel.js +12 -12
- package/ChannelSettings/components/ModerationPanel.js +15 -15
- package/ChannelSettings/components/UserListItem.js +11 -11
- package/ChannelSettings/components/UserPanel.js +14 -14
- package/ChannelSettings/context.js +3 -3
- package/ChannelSettings.js +18 -18
- package/CreateChannel/components/CreateChannelUI.js +14 -14
- package/CreateChannel/components/InviteUsers.js +14 -14
- package/CreateChannel/components/SelectChannelType.js +11 -11
- package/CreateChannel/context.js +4 -4
- package/CreateChannel.js +14 -14
- package/{CreateChannelProvider-cc40c17f.js → CreateChannelProvider-a2fad282.js} +1 -1
- package/{CreateChannelProvider-cc40c17f.js.map → CreateChannelProvider-a2fad282.js.map} +1 -1
- package/CreateOpenChannel/components/CreateOpenChannelUI.js +11 -11
- package/CreateOpenChannel/context.js +1 -1
- package/CreateOpenChannel.js +11 -11
- package/EditUserProfile/components/EditUserProfileUI.js +13 -13
- package/EditUserProfile.js +13 -13
- package/{LocalizationContext-1d7d5046.js → LocalizationContext-2463058b.js} +3 -3
- package/{LocalizationContext-1d7d5046.js.map → LocalizationContext-2463058b.js.map} +1 -1
- package/{MediaQueryContext-a8f216c8.js → MediaQueryContext-e3429d12.js} +1 -1
- package/{MediaQueryContext-a8f216c8.js.map → MediaQueryContext-e3429d12.js.map} +1 -1
- package/{MemberList-10f76588.js → MemberList-593867cb.js} +6 -6
- package/{MemberList-10f76588.js.map → MemberList-593867cb.js.map} +1 -1
- package/MessageSearch/components/MessageSearchUI.js +13 -13
- package/MessageSearch/context.js +1 -1
- package/MessageSearch.js +13 -13
- package/OpenChannel/components/FrozenChannelNotification.js +4 -4
- package/OpenChannel/components/OpenChannelHeader.js +12 -12
- package/OpenChannel/components/OpenChannelInput.js +20 -20
- package/OpenChannel/components/OpenChannelMessage.js +31 -31
- package/OpenChannel/components/OpenChannelMessageList.js +34 -34
- package/OpenChannel/components/OpenChannelUI.js +34 -34
- package/OpenChannel/context.js +8 -8
- package/OpenChannel.js +34 -34
- package/OpenChannelList/components/OpenChannelListUI.js +15 -15
- package/OpenChannelList/components/OpenChannelPreview.js +3 -3
- package/OpenChannelList/context.js +3 -3
- package/OpenChannelList.js +15 -15
- package/{OpenChannelListProvider-ea45dd27.js → OpenChannelListProvider-a0a09f0b.js} +3 -3
- package/{OpenChannelListProvider-ea45dd27.js.map → OpenChannelListProvider-a0a09f0b.js.map} +1 -1
- package/{OpenChannelProvider-7566d5ba.js → OpenChannelProvider-3e4b8c8e.js} +7 -7
- package/{OpenChannelProvider-7566d5ba.js.map → OpenChannelProvider-3e4b8c8e.js.map} +1 -1
- package/OpenChannelSettings/components/EditDetailsModal.js +14 -14
- package/OpenChannelSettings/components/OpenChannelProfile.js +14 -14
- package/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
- package/OpenChannelSettings/components/OperatorUI.js +17 -17
- package/OpenChannelSettings/components/ParticipantUI.js +15 -15
- package/OpenChannelSettings/context.js +3 -3
- package/OpenChannelSettings.js +18 -18
- package/{RemoveMessageModal-052a7531.js → RemoveMessageModal-9162aebe.js} +5 -5
- package/{RemoveMessageModal-052a7531.js.map → RemoveMessageModal-9162aebe.js.map} +1 -1
- package/SendbirdProvider.js +17 -17
- package/Thread/components/ParentMessageInfo.js +38 -38
- package/Thread/components/ParentMessageInfoItem.js +25 -25
- package/Thread/components/ThreadHeader.js +6 -6
- package/Thread/components/ThreadList.js +42 -42
- package/Thread/components/ThreadListItem.js +42 -42
- package/Thread/components/ThreadMessageInput.js +34 -34
- package/Thread/components/ThreadUI.js +47 -47
- package/Thread/context.js +12 -12
- package/Thread.js +47 -47
- package/{ThreadProvider-9c3f6dd1.js → ThreadProvider-9a3b145f.js} +9 -9
- package/{ThreadProvider-9c3f6dd1.js.map → ThreadProvider-9a3b145f.js.map} +1 -1
- package/{UserProfileContext-050e38d1.js → UserProfileContext-4ae968eb.js} +1 -1
- package/{UserProfileContext-050e38d1.js.map → UserProfileContext-4ae968eb.js.map} +1 -1
- package/VoicePlayer/context.js +3 -3
- package/VoicePlayer/useVoicePlayer.js +11 -11
- package/VoiceRecorder/context.js +11 -11
- package/VoiceRecorder/useVoiceRecorder.js +10 -10
- package/{WebAudioUtils-feb2f826.js → WebAudioUtils-f9386235.js} +2 -2
- package/{WebAudioUtils-feb2f826.js.map → WebAudioUtils-f9386235.js.map} +1 -1
- package/{_rollupPluginBabelHelpers-127d506a.js → _rollupPluginBabelHelpers-50c9576f.js} +1 -1
- package/_rollupPluginBabelHelpers-50c9576f.js.map +1 -0
- package/{actionTypes-6978f57c.js → actionTypes-501b8c11.js} +1 -1
- package/{actionTypes-6978f57c.js.map → actionTypes-501b8c11.js.map} +1 -1
- package/cjs/App.js +55 -55
- package/cjs/Channel/components/ChannelHeader.js +22 -22
- package/cjs/Channel/components/ChannelUI.js +48 -48
- package/cjs/Channel/components/FileViewer.js +18 -18
- package/cjs/Channel/components/FrozenNotification.js +4 -4
- package/cjs/Channel/components/Message.js +42 -42
- package/cjs/Channel/components/MessageInput.js +34 -34
- package/cjs/Channel/components/MessageList.js +43 -43
- package/cjs/Channel/components/RemoveMessageModal.js +22 -22
- package/cjs/Channel/components/SuggestedMentionList.js +20 -20
- package/cjs/Channel/components/TypingIndicator.js +18 -18
- package/cjs/Channel/components/UnreadCount.js +4 -4
- package/cjs/Channel/context.js +15 -15
- package/cjs/Channel/utils/compareMessagesForGrouping.js +7 -7
- package/cjs/Channel/utils/getMessagePartsInfo.js +8 -8
- package/cjs/Channel.js +48 -48
- package/cjs/ChannelList/components/AddChannel.js +16 -16
- package/cjs/ChannelList/components/ChannelListHeader.js +6 -6
- package/cjs/ChannelList/components/ChannelListUI.js +33 -33
- package/cjs/ChannelList/components/ChannelPreview.js +29 -29
- package/cjs/ChannelList/components/ChannelPreviewAction.js +15 -15
- package/cjs/ChannelList/context.js +9 -9
- package/cjs/ChannelList.js +33 -33
- package/cjs/{ChannelListProvider-50b25757.js → ChannelListProvider-e55e6242.js} +17 -14
- package/cjs/ChannelListProvider-e55e6242.js.map +1 -0
- package/cjs/{ChannelProvider-1d47dc41.js → ChannelProvider-6fa73019.js} +13 -13
- package/cjs/{ChannelProvider-1d47dc41.js.map → ChannelProvider-6fa73019.js.map} +1 -1
- package/cjs/ChannelSettings/components/ChannelProfile.js +13 -13
- package/cjs/ChannelSettings/components/ChannelSettingsUI.js +18 -18
- package/cjs/ChannelSettings/components/EditDetailsModal.js +13 -13
- package/cjs/ChannelSettings/components/LeaveChannel.js +12 -12
- package/cjs/ChannelSettings/components/ModerationPanel.js +15 -15
- package/cjs/ChannelSettings/components/UserListItem.js +11 -11
- package/cjs/ChannelSettings/components/UserPanel.js +14 -14
- package/cjs/ChannelSettings/context.js +3 -3
- package/cjs/ChannelSettings.js +18 -18
- package/cjs/CreateChannel/components/CreateChannelUI.js +14 -14
- package/cjs/CreateChannel/components/InviteUsers.js +14 -14
- package/cjs/CreateChannel/components/SelectChannelType.js +11 -11
- package/cjs/CreateChannel/context.js +4 -4
- package/cjs/CreateChannel.js +14 -14
- package/cjs/{CreateChannelProvider-742f0f71.js → CreateChannelProvider-8b8a557c.js} +1 -1
- package/cjs/{CreateChannelProvider-742f0f71.js.map → CreateChannelProvider-8b8a557c.js.map} +1 -1
- package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +11 -11
- package/cjs/CreateOpenChannel/context.js +1 -1
- package/cjs/CreateOpenChannel.js +11 -11
- package/cjs/EditUserProfile/components/EditUserProfileUI.js +13 -13
- package/cjs/EditUserProfile.js +13 -13
- package/cjs/{LocalizationContext-9e45201f.js → LocalizationContext-482c1343.js} +3 -3
- package/cjs/{LocalizationContext-9e45201f.js.map → LocalizationContext-482c1343.js.map} +1 -1
- package/cjs/{MediaQueryContext-0b9f5e79.js → MediaQueryContext-73aac8cf.js} +1 -1
- package/cjs/{MediaQueryContext-0b9f5e79.js.map → MediaQueryContext-73aac8cf.js.map} +1 -1
- package/cjs/{MemberList-dd79130e.js → MemberList-26b8de48.js} +6 -6
- package/cjs/{MemberList-dd79130e.js.map → MemberList-26b8de48.js.map} +1 -1
- package/cjs/MessageSearch/components/MessageSearchUI.js +13 -13
- package/cjs/MessageSearch/context.js +1 -1
- package/cjs/MessageSearch.js +13 -13
- package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
- package/cjs/OpenChannel/components/OpenChannelHeader.js +12 -12
- package/cjs/OpenChannel/components/OpenChannelInput.js +20 -20
- package/cjs/OpenChannel/components/OpenChannelMessage.js +31 -31
- package/cjs/OpenChannel/components/OpenChannelMessageList.js +34 -34
- package/cjs/OpenChannel/components/OpenChannelUI.js +34 -34
- package/cjs/OpenChannel/context.js +8 -8
- package/cjs/OpenChannel.js +34 -34
- package/cjs/OpenChannelList/components/OpenChannelListUI.js +15 -15
- package/cjs/OpenChannelList/components/OpenChannelPreview.js +3 -3
- package/cjs/OpenChannelList/context.js +3 -3
- package/cjs/OpenChannelList.js +15 -15
- package/cjs/{OpenChannelListProvider-0947eaab.js → OpenChannelListProvider-2e3ee48d.js} +3 -3
- package/cjs/{OpenChannelListProvider-0947eaab.js.map → OpenChannelListProvider-2e3ee48d.js.map} +1 -1
- package/cjs/{OpenChannelProvider-cdb5efab.js → OpenChannelProvider-8577ea58.js} +7 -7
- package/cjs/{OpenChannelProvider-cdb5efab.js.map → OpenChannelProvider-8577ea58.js.map} +1 -1
- package/cjs/OpenChannelSettings/components/EditDetailsModal.js +14 -14
- package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +14 -14
- package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
- package/cjs/OpenChannelSettings/components/OperatorUI.js +17 -17
- package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -15
- package/cjs/OpenChannelSettings/context.js +3 -3
- package/cjs/OpenChannelSettings.js +18 -18
- package/cjs/{RemoveMessageModal-ff40b635.js → RemoveMessageModal-dfeeb36a.js} +5 -5
- package/cjs/{RemoveMessageModal-ff40b635.js.map → RemoveMessageModal-dfeeb36a.js.map} +1 -1
- package/cjs/SendbirdProvider.js +17 -17
- package/cjs/Thread/components/ParentMessageInfo.js +38 -38
- package/cjs/Thread/components/ParentMessageInfoItem.js +25 -25
- package/cjs/Thread/components/ThreadHeader.js +6 -6
- package/cjs/Thread/components/ThreadList.js +42 -42
- package/cjs/Thread/components/ThreadListItem.js +42 -42
- package/cjs/Thread/components/ThreadMessageInput.js +34 -34
- package/cjs/Thread/components/ThreadUI.js +47 -47
- package/cjs/Thread/context.js +12 -12
- package/cjs/Thread.js +47 -47
- package/cjs/{ThreadProvider-ecea486a.js → ThreadProvider-8b0cf491.js} +9 -9
- package/cjs/{ThreadProvider-ecea486a.js.map → ThreadProvider-8b0cf491.js.map} +1 -1
- package/cjs/{UserProfileContext-7e36a6f3.js → UserProfileContext-fa8d0383.js} +1 -1
- package/cjs/{UserProfileContext-7e36a6f3.js.map → UserProfileContext-fa8d0383.js.map} +1 -1
- package/cjs/VoicePlayer/context.js +3 -3
- package/cjs/VoicePlayer/useVoicePlayer.js +11 -11
- package/cjs/VoiceRecorder/context.js +11 -11
- package/cjs/VoiceRecorder/useVoiceRecorder.js +10 -10
- package/cjs/{WebAudioUtils-15df1d2d.js → WebAudioUtils-142344fd.js} +2 -2
- package/cjs/{WebAudioUtils-15df1d2d.js.map → WebAudioUtils-142344fd.js.map} +1 -1
- package/cjs/{_rollupPluginBabelHelpers-32e06a4f.js → _rollupPluginBabelHelpers-83d7e84b.js} +1 -1
- package/cjs/_rollupPluginBabelHelpers-83d7e84b.js.map +1 -0
- package/cjs/{actionTypes-266f0e4d.js → actionTypes-1d118952.js} +1 -1
- package/cjs/{actionTypes-266f0e4d.js.map → actionTypes-1d118952.js.map} +1 -1
- package/cjs/{color-da906a8e.js → color-d83b77ac.js} +1 -1
- package/cjs/{color-da906a8e.js.map → color-d83b77ac.js.map} +1 -1
- package/cjs/{compareIds-6f4238a7.js → compareIds-bef997cb.js} +1 -1
- package/cjs/{compareIds-6f4238a7.js.map → compareIds-bef997cb.js.map} +1 -1
- package/cjs/{const-81c5b6fd.js → const-1726bde0.js} +1 -1
- package/cjs/{const-81c5b6fd.js.map → const-1726bde0.js.map} +1 -1
- package/cjs/{const-8a80e7a4.js → const-67ff9e34.js} +1 -1
- package/cjs/{const-8a80e7a4.js.map → const-67ff9e34.js.map} +1 -1
- package/cjs/{consts-a9e07b6c.js → consts-b018b1ed.js} +1 -1
- package/cjs/{consts-a9e07b6c.js.map → consts-b018b1ed.js.map} +1 -1
- package/cjs/{consts-cb188d77.js → consts-bf228385.js} +1 -1
- package/cjs/{consts-cb188d77.js.map → consts-bf228385.js.map} +1 -1
- package/cjs/{consts-cbf7ddd6.js → consts-d3b53f23.js} +1 -1
- package/cjs/{consts-cbf7ddd6.js.map → consts-d3b53f23.js.map} +1 -1
- package/cjs/{consts-b63bb532.js → consts-fb07c671.js} +1 -1
- package/cjs/{consts-b63bb532.js.map → consts-fb07c671.js.map} +1 -1
- package/cjs/{context-827c4e18.js → context-bd2878ff.js} +2 -2
- package/cjs/{context-827c4e18.js.map → context-bd2878ff.js.map} +1 -1
- package/cjs/dist/index.css +97 -97
- package/cjs/dist/index.css.map +1 -1
- package/cjs/{index-93e76826.js → index-11f9cc0f.js} +3 -3
- package/cjs/{index-93e76826.js.map → index-11f9cc0f.js.map} +1 -1
- package/cjs/{index-52a2c7ef.js → index-18720f0d.js} +2 -2
- package/cjs/{index-52a2c7ef.js.map → index-18720f0d.js.map} +1 -1
- package/cjs/{index-c6a8de13.js → index-1a9fdbb4.js} +7 -7
- package/cjs/{index-c6a8de13.js.map → index-1a9fdbb4.js.map} +1 -1
- package/cjs/{index-58460943.js → index-1f6b30ea.js} +3 -3
- package/cjs/{index-58460943.js.map → index-1f6b30ea.js.map} +1 -1
- package/cjs/{index-0972d3a4.js → index-2ab19f9b.js} +4 -4
- package/cjs/{index-0972d3a4.js.map → index-2ab19f9b.js.map} +1 -1
- package/cjs/{index-859638a8.js → index-4b5a006d.js} +5 -5
- package/cjs/{index-859638a8.js.map → index-4b5a006d.js.map} +1 -1
- package/cjs/{index-14c60240.js → index-4eb7e2b5.js} +2 -2
- package/cjs/{index-14c60240.js.map → index-4eb7e2b5.js.map} +1 -1
- package/cjs/{index-2beeddcd.js → index-56a25735.js} +5 -5
- package/cjs/{index-2beeddcd.js.map → index-56a25735.js.map} +1 -1
- package/cjs/{index-5466fdd6.js → index-6ab9a40d.js} +2 -2
- package/cjs/{index-5466fdd6.js.map → index-6ab9a40d.js.map} +1 -1
- package/cjs/{index-f6688c5a.js → index-759f2a26.js} +4 -4
- package/cjs/{index-f6688c5a.js.map → index-759f2a26.js.map} +1 -1
- package/cjs/{index-f2228baf.js → index-7c374c20.js} +2 -2
- package/cjs/{index-f2228baf.js.map → index-7c374c20.js.map} +1 -1
- package/cjs/{index-2cf76116.js → index-7f41c4b6.js} +3 -3
- package/cjs/{index-2cf76116.js.map → index-7f41c4b6.js.map} +1 -1
- package/cjs/{index-fad8e38b.js → index-81baccd0.js} +4 -4
- package/cjs/{index-fad8e38b.js.map → index-81baccd0.js.map} +1 -1
- package/cjs/{index-d957a2b4.js → index-857630c5.js} +9 -9
- package/cjs/{index-d957a2b4.js.map → index-857630c5.js.map} +1 -1
- package/cjs/{index-6add5824.js → index-8ec12d1d.js} +6 -6
- package/cjs/{index-6add5824.js.map → index-8ec12d1d.js.map} +1 -1
- package/cjs/{index-9f4d38fe.js → index-91b4af96.js} +4 -4
- package/cjs/{index-9f4d38fe.js.map → index-91b4af96.js.map} +1 -1
- package/cjs/{index-1f4a47f9.js → index-c9b003b3.js} +2 -2
- package/cjs/{index-1f4a47f9.js.map → index-c9b003b3.js.map} +1 -1
- package/cjs/{index-cb306d53.js → index-cbcacbee.js} +1 -1
- package/cjs/{index-cb306d53.js.map → index-cbcacbee.js.map} +1 -1
- package/cjs/{index-159278b7.js → index-d04f312e.js} +1 -1
- package/cjs/{index-159278b7.js.map → index-d04f312e.js.map} +1 -1
- package/cjs/{index-750b3845.js → index-e9ac5ae1.js} +4 -4
- package/cjs/{index-750b3845.js.map → index-e9ac5ae1.js.map} +1 -1
- package/cjs/{index-6afd0c95.js → index-fbe9cc73.js} +3 -3
- package/cjs/{index-6afd0c95.js.map → index-fbe9cc73.js.map} +1 -1
- package/cjs/index.js +59 -59
- package/cjs/{index.module-5c934abb.js → index.module-a24e9cd7.js} +1 -1
- package/cjs/{index.module-5c934abb.js.map → index.module-a24e9cd7.js.map} +1 -1
- package/cjs/package.json +1 -1
- package/cjs/{resolvedReplyType-dabf3c08.js → resolvedReplyType-85b4bd7c.js} +1 -1
- package/cjs/{resolvedReplyType-dabf3c08.js.map → resolvedReplyType-85b4bd7c.js.map} +1 -1
- package/cjs/sendbirdSelectors.js +3 -3
- package/cjs/{stringFormatterUtils-9b35afa3.js → stringFormatterUtils-8d6592ca.js} +3 -3
- package/cjs/{stringFormatterUtils-9b35afa3.js.map → stringFormatterUtils-8d6592ca.js.map} +1 -1
- package/cjs/{stringSet-42559b9c.js → stringSet-d00535a5.js} +1 -1
- package/cjs/{stringSet-42559b9c.js.map → stringSet-d00535a5.js.map} +1 -1
- package/cjs/{tokenize-f3db7c7b.js → tokenize-9296fc47.js} +2 -2
- package/cjs/{tokenize-f3db7c7b.js.map → tokenize-9296fc47.js.map} +1 -1
- package/cjs/{topics-f8d48fd6.js → topics-adde627b.js} +1 -1
- package/cjs/{topics-f8d48fd6.js.map → topics-adde627b.js.map} +1 -1
- package/cjs/{types-08752342.js → types-0b5148cb.js} +1 -1
- package/cjs/{types-08752342.js.map → types-0b5148cb.js.map} +1 -1
- package/cjs/ui/Accordion.js +2 -2
- package/cjs/ui/AccordionGroup.js +2 -2
- package/cjs/ui/AdminMessage.js +2 -2
- package/cjs/ui/Avatar.js +1 -1
- package/cjs/ui/Badge.js +4 -4
- package/cjs/ui/BottomSheet.js +4 -4
- package/cjs/ui/Button.js +2 -2
- package/cjs/ui/ChannelAvatar.js +2 -2
- package/cjs/ui/ConnectionStatus.js +4 -4
- package/cjs/ui/ContextMenu.js +6 -6
- package/cjs/ui/DateSeparator.js +3 -3
- package/cjs/ui/EmojiReactions.js +14 -14
- package/cjs/ui/FileMessageItemBody.js +7 -7
- package/cjs/ui/FileViewer.js +12 -12
- package/cjs/ui/IconButton.js +1 -1
- package/cjs/ui/Input.js +2 -2
- package/cjs/ui/Label.js +2 -2
- package/cjs/ui/LinkLabel.js +2 -2
- package/cjs/ui/MentionLabel.js +11 -11
- package/cjs/ui/MentionUserLabel.js +1 -1
- package/cjs/ui/MessageContent.js +31 -31
- package/cjs/ui/MessageInput/hooks/usePaste.js +4 -4
- package/cjs/ui/MessageInput.js +14 -14
- package/cjs/ui/MessageItemMenu.js +9 -9
- package/cjs/ui/MessageItemReactionMenu.js +9 -9
- package/cjs/ui/MessageSearchFileItem.js +12 -12
- package/cjs/ui/MessageSearchItem.js +8 -8
- package/cjs/ui/MessageStatus.js +11 -11
- package/cjs/ui/Modal.js +9 -9
- package/cjs/ui/OGMessageItemBody.js +14 -14
- package/cjs/ui/OpenChannelAdminMessage.js +2 -2
- package/cjs/ui/OpenChannelAvatar.js +5 -5
- package/cjs/ui/OpenchannelConversationHeader.js +6 -6
- package/cjs/ui/OpenchannelFileMessage.js +16 -16
- package/cjs/ui/OpenchannelOGMessage.js +18 -18
- package/cjs/ui/OpenchannelThumbnailMessage.js +15 -15
- package/cjs/ui/OpenchannelUserMessage.js +16 -16
- package/cjs/ui/PlaceHolder.js +5 -5
- package/cjs/ui/PlaybackTime.js +2 -2
- package/cjs/ui/QuoteMessage.js +8 -8
- package/cjs/ui/QuoteMessageInput.js +8 -8
- package/cjs/ui/ReactionBadge.js +2 -2
- package/cjs/ui/ReactionButton.js +4 -4
- package/cjs/ui/SortByRow.js +1 -1
- package/cjs/ui/TextButton.js +1 -1
- package/cjs/ui/TextMessageItemBody.js +14 -14
- package/cjs/ui/ThreadReplies.js +5 -5
- package/cjs/ui/ThumbnailMessageItemBody.js +7 -7
- package/cjs/ui/Toggle.js +1 -1
- package/cjs/ui/Tooltip.js +2 -2
- package/cjs/ui/UnknownMessageItemBody.js +7 -7
- package/cjs/ui/UserListItem.js +11 -11
- package/cjs/ui/UserProfile.js +9 -9
- package/cjs/ui/VoiceMessageItemBody.js +11 -11
- package/cjs/ui/VoiceMessgeInput.js +7 -7
- package/cjs/ui/Word.js +11 -11
- package/cjs/{useHandleUploadFiles-c411fe73.js → useHandleUploadFiles-b2fc56e5.js} +10 -10
- package/cjs/{useHandleUploadFiles-c411fe73.js.map → useHandleUploadFiles-b2fc56e5.js.map} +1 -1
- package/cjs/{useLongPress-1d936b57.js → useLongPress-1c0f4696.js} +3 -3
- package/cjs/{useLongPress-1d936b57.js.map → useLongPress-1c0f4696.js.map} +1 -1
- package/cjs/{useSendMultipleFilesMessage-68cb79a9.js → useSendMultipleFilesMessage-81cdc9d0.js} +4 -4
- package/cjs/{useSendMultipleFilesMessage-68cb79a9.js.map → useSendMultipleFilesMessage-81cdc9d0.js.map} +1 -1
- package/cjs/useSendbirdStateContext.js +1 -1
- package/cjs/utils/message/isVoiceMessage.js +3 -3
- package/cjs/{utils-86333a85.js → utils-418b4438.js} +3 -3
- package/cjs/{utils-86333a85.js.map → utils-418b4438.js.map} +1 -1
- package/cjs/{utils-de4ebd32.js → utils-5bfb4516.js} +1 -1
- package/cjs/{utils-de4ebd32.js.map → utils-5bfb4516.js.map} +1 -1
- package/cjs/{utils-4446c8a7.js → utils-68aa6bf6.js} +4 -4
- package/cjs/{utils-4446c8a7.js.map → utils-68aa6bf6.js.map} +1 -1
- package/cjs/{utils-598f212e.js → utils-991911af.js} +1 -1
- package/cjs/{utils-598f212e.js.map → utils-991911af.js.map} +1 -1
- package/cjs/{utils-b08188c3.js → utils-b34d4e2c.js} +2 -2
- package/cjs/{utils-b08188c3.js.map → utils-b34d4e2c.js.map} +1 -1
- package/cjs/{utils-b5676d3d.js → utils-c47c68b1.js} +1 -1
- package/cjs/{utils-b5676d3d.js.map → utils-c47c68b1.js.map} +1 -1
- package/cjs/{uuid-d0dc3474.js → uuid-b2806cf5.js} +1 -1
- package/cjs/{uuid-d0dc3474.js.map → uuid-b2806cf5.js.map} +1 -1
- package/cjs/withSendbird.js +1 -1
- package/{color-80ab0797.js → color-b7f211a8.js} +1 -1
- package/{color-80ab0797.js.map → color-b7f211a8.js.map} +1 -1
- package/{compareIds-f24a9d12.js → compareIds-8ed6e36a.js} +1 -1
- package/{compareIds-f24a9d12.js.map → compareIds-8ed6e36a.js.map} +1 -1
- package/{const-fb4ba209.js → const-711048c3.js} +1 -1
- package/{const-fb4ba209.js.map → const-711048c3.js.map} +1 -1
- package/{const-7d3f5989.js → const-74ec9eb4.js} +1 -1
- package/{const-7d3f5989.js.map → const-74ec9eb4.js.map} +1 -1
- package/{consts-a3d3287a.js → consts-675764c9.js} +1 -1
- package/{consts-a3d3287a.js.map → consts-675764c9.js.map} +1 -1
- package/{consts-9cb946fd.js → consts-691a3935.js} +1 -1
- package/{consts-9cb946fd.js.map → consts-691a3935.js.map} +1 -1
- package/{consts-1155d9f8.js → consts-6ee24012.js} +1 -1
- package/{consts-1155d9f8.js.map → consts-6ee24012.js.map} +1 -1
- package/{consts-5230ea9f.js → consts-eb77e905.js} +1 -1
- package/{consts-5230ea9f.js.map → consts-eb77e905.js.map} +1 -1
- package/{context-b787a386.js → context-b4c70964.js} +2 -2
- package/{context-b787a386.js.map → context-b4c70964.js.map} +1 -1
- package/dist/index.css +97 -97
- package/dist/index.css.map +1 -1
- package/{index-4c2e86ae.js → index-128523eb.js} +3 -3
- package/{index-4c2e86ae.js.map → index-128523eb.js.map} +1 -1
- package/{index-bc42f0e9.js → index-13401b87.js} +2 -2
- package/{index-bc42f0e9.js.map → index-13401b87.js.map} +1 -1
- package/{index-7d38c662.js → index-3530f4f6.js} +4 -4
- package/{index-7d38c662.js.map → index-3530f4f6.js.map} +1 -1
- package/{index-d8c8e716.js → index-5cb32ab5.js} +3 -3
- package/{index-d8c8e716.js.map → index-5cb32ab5.js.map} +1 -1
- package/{index-dd767201.js → index-5d6a0f12.js} +3 -3
- package/{index-dd767201.js.map → index-5d6a0f12.js.map} +1 -1
- package/{index-6cc54ebd.js → index-60a7bf91.js} +5 -5
- package/{index-6cc54ebd.js.map → index-60a7bf91.js.map} +1 -1
- package/{index-8107de87.js → index-7700a436.js} +1 -1
- package/{index-8107de87.js.map → index-7700a436.js.map} +1 -1
- package/{index-011f0166.js → index-7946293f.js} +6 -6
- package/{index-011f0166.js.map → index-7946293f.js.map} +1 -1
- package/{index-d32155ad.js → index-7b7478f5.js} +5 -5
- package/{index-d32155ad.js.map → index-7b7478f5.js.map} +1 -1
- package/{index-4a754b7d.js → index-82178c6a.js} +7 -7
- package/{index-4a754b7d.js.map → index-82178c6a.js.map} +1 -1
- package/{index-943e51f9.js → index-8a01c364.js} +4 -4
- package/{index-943e51f9.js.map → index-8a01c364.js.map} +1 -1
- package/{index-fff2d336.js → index-98138798.js} +2 -2
- package/{index-fff2d336.js.map → index-98138798.js.map} +1 -1
- package/{index-b6042797.js → index-98887e8d.js} +1 -1
- package/{index-b6042797.js.map → index-98887e8d.js.map} +1 -1
- package/{index-ca44517a.js → index-aa520474.js} +2 -2
- package/{index-ca44517a.js.map → index-aa520474.js.map} +1 -1
- package/{index-1dc25336.js → index-ae7ef8cf.js} +4 -4
- package/{index-1dc25336.js.map → index-ae7ef8cf.js.map} +1 -1
- package/{index-30ccc7d1.js → index-b22c4150.js} +2 -2
- package/{index-30ccc7d1.js.map → index-b22c4150.js.map} +1 -1
- package/{index-0f1ca805.js → index-b25ffa7e.js} +4 -4
- package/{index-0f1ca805.js.map → index-b25ffa7e.js.map} +1 -1
- package/{index-b490e8af.js → index-c421b228.js} +9 -9
- package/{index-b490e8af.js.map → index-c421b228.js.map} +1 -1
- package/{index-33ce0e5c.js → index-d99155f7.js} +4 -4
- package/{index-33ce0e5c.js.map → index-d99155f7.js.map} +1 -1
- package/{index-644f4972.js → index-daa3ae67.js} +2 -2
- package/{index-644f4972.js.map → index-daa3ae67.js.map} +1 -1
- package/{index-7fdcc106.js → index-e15f6b6a.js} +3 -3
- package/{index-7fdcc106.js.map → index-e15f6b6a.js.map} +1 -1
- package/index.d.ts +1 -1
- package/index.js +59 -59
- package/{index.module-0935752c.js → index.module-60af77d3.js} +1 -1
- package/{index.module-0935752c.js.map → index.module-60af77d3.js.map} +1 -1
- package/package.json +1 -1
- package/{resolvedReplyType-19c339c2.js → resolvedReplyType-1a128514.js} +1 -1
- package/{resolvedReplyType-19c339c2.js.map → resolvedReplyType-1a128514.js.map} +1 -1
- package/sendbirdSelectors.js +3 -3
- package/{stringFormatterUtils-8cdfbc30.js → stringFormatterUtils-dbad592d.js} +3 -3
- package/{stringFormatterUtils-8cdfbc30.js.map → stringFormatterUtils-dbad592d.js.map} +1 -1
- package/{stringSet-4010aa20.js → stringSet-2814bf17.js} +1 -1
- package/{stringSet-4010aa20.js.map → stringSet-2814bf17.js.map} +1 -1
- package/{tokenize-5d004ff2.js → tokenize-4b153552.js} +2 -2
- package/{tokenize-5d004ff2.js.map → tokenize-4b153552.js.map} +1 -1
- package/{topics-e010c6d3.js → topics-5659403d.js} +1 -1
- package/{topics-e010c6d3.js.map → topics-5659403d.js.map} +1 -1
- package/{types-933c231a.js → types-89092633.js} +1 -1
- package/{types-933c231a.js.map → types-89092633.js.map} +1 -1
- package/ui/Accordion.js +2 -2
- package/ui/AccordionGroup.js +2 -2
- package/ui/AdminMessage.js +2 -2
- package/ui/Avatar.js +1 -1
- package/ui/Badge.js +4 -4
- package/ui/BottomSheet.js +4 -4
- package/ui/Button.js +2 -2
- package/ui/ChannelAvatar.js +2 -2
- package/ui/ConnectionStatus.js +4 -4
- package/ui/ContextMenu.js +6 -6
- package/ui/DateSeparator.js +3 -3
- package/ui/EmojiReactions.js +14 -14
- package/ui/FileMessageItemBody.js +7 -7
- package/ui/FileViewer.js +12 -12
- package/ui/IconButton.js +1 -1
- package/ui/Input.js +2 -2
- package/ui/Label.js +2 -2
- package/ui/LinkLabel.js +2 -2
- package/ui/MentionLabel.js +11 -11
- package/ui/MentionUserLabel.js +1 -1
- package/ui/MessageContent.js +31 -31
- package/ui/MessageInput/hooks/usePaste.js +4 -4
- package/ui/MessageInput.js +14 -14
- package/ui/MessageItemMenu.js +9 -9
- package/ui/MessageItemReactionMenu.js +9 -9
- package/ui/MessageSearchFileItem.js +12 -12
- package/ui/MessageSearchItem.js +8 -8
- package/ui/MessageStatus.js +11 -11
- package/ui/Modal.js +9 -9
- package/ui/OGMessageItemBody.js +14 -14
- package/ui/OpenChannelAdminMessage.js +2 -2
- package/ui/OpenChannelAvatar.js +5 -5
- package/ui/OpenchannelConversationHeader.js +6 -6
- package/ui/OpenchannelFileMessage.js +16 -16
- package/ui/OpenchannelOGMessage.js +18 -18
- package/ui/OpenchannelThumbnailMessage.js +15 -15
- package/ui/OpenchannelUserMessage.js +16 -16
- package/ui/PlaceHolder.js +5 -5
- package/ui/PlaybackTime.js +2 -2
- package/ui/QuoteMessage.js +8 -8
- package/ui/QuoteMessageInput.js +8 -8
- package/ui/ReactionBadge.js +2 -2
- package/ui/ReactionButton.js +4 -4
- package/ui/SortByRow.js +1 -1
- package/ui/TextButton.js +1 -1
- package/ui/TextMessageItemBody.js +14 -14
- package/ui/ThreadReplies.js +5 -5
- package/ui/ThumbnailMessageItemBody.js +7 -7
- package/ui/Toggle.js +1 -1
- package/ui/Tooltip.js +2 -2
- package/ui/UnknownMessageItemBody.js +7 -7
- package/ui/UserListItem.js +11 -11
- package/ui/UserProfile.js +9 -9
- package/ui/VoiceMessageItemBody.js +11 -11
- package/ui/VoiceMessgeInput.js +7 -7
- package/ui/Word.js +11 -11
- package/{useHandleUploadFiles-2e10b130.js → useHandleUploadFiles-406a6c9c.js} +10 -10
- package/{useHandleUploadFiles-2e10b130.js.map → useHandleUploadFiles-406a6c9c.js.map} +1 -1
- package/{useLongPress-ffee648f.js → useLongPress-5e1ad951.js} +3 -3
- package/{useLongPress-ffee648f.js.map → useLongPress-5e1ad951.js.map} +1 -1
- package/{useSendMultipleFilesMessage-25198999.js → useSendMultipleFilesMessage-a3a2c84b.js} +4 -4
- package/{useSendMultipleFilesMessage-25198999.js.map → useSendMultipleFilesMessage-a3a2c84b.js.map} +1 -1
- package/useSendbirdStateContext.js +1 -1
- package/utils/message/isVoiceMessage.js +3 -3
- package/{utils-dd91485e.js → utils-0c22998a.js} +4 -4
- package/{utils-dd91485e.js.map → utils-0c22998a.js.map} +1 -1
- package/{utils-88995afe.js → utils-407da489.js} +1 -1
- package/{utils-88995afe.js.map → utils-407da489.js.map} +1 -1
- package/{utils-648f7f14.js → utils-7cc92ac2.js} +1 -1
- package/{utils-648f7f14.js.map → utils-7cc92ac2.js.map} +1 -1
- package/{utils-dae17f0e.js → utils-b97d5113.js} +3 -3
- package/{utils-dae17f0e.js.map → utils-b97d5113.js.map} +1 -1
- package/{utils-3a10580f.js → utils-cae84d8a.js} +2 -2
- package/{utils-3a10580f.js.map → utils-cae84d8a.js.map} +1 -1
- package/{utils-1467ebd7.js → utils-ebf008e2.js} +1 -1
- package/{utils-1467ebd7.js.map → utils-ebf008e2.js.map} +1 -1
- package/{uuid-2e10561d.js → uuid-16373bba.js} +1 -1
- package/{uuid-2e10561d.js.map → uuid-16373bba.js.map} +1 -1
- package/withSendbird.js +1 -1
- package/ChannelListProvider-52997aa4.js.map +0 -1
- package/_rollupPluginBabelHelpers-127d506a.js.map +0 -1
- package/cjs/ChannelListProvider-50b25757.js.map +0 -1
- package/cjs/_rollupPluginBabelHelpers-32e06a4f.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenChannelProvider-cdb5efab.js","sources":["../../src/modules/OpenChannel/context/utils.ts","../../src/modules/OpenChannel/context/dux/actionTypes.ts","../../src/modules/OpenChannel/context/dux/reducers.ts","../../src/modules/OpenChannel/context/dux/initialState.ts","../../src/modules/OpenChannel/context/hooks/useSetChannel.ts","../../src/modules/OpenChannel/context/hooks/useHandleChannelEvents.ts","../../src/modules/OpenChannel/context/hooks/useInitialMessagesFetch.ts","../../src/modules/OpenChannel/context/hooks/useScrollCallback.ts","../../src/modules/OpenChannel/context/hooks/useCheckScrollBottom.ts","../../src/modules/OpenChannel/context/hooks/useSendMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useFileUploadCallback.ts","../../src/modules/OpenChannel/context/hooks/useUpdateMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useDeleteMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useResendMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useTrimMessageList.ts","../../src/modules/OpenChannel/context/OpenChannelProvider.tsx"],"sourcesContent":["import type React from 'react';\nimport type { User } from '@sendbird/chat';\nimport type { UserMessage } from '@sendbird/chat/message';\nimport type { OpenChannel, ParticipantListQuery } from '@sendbird/chat/openChannel';\nimport format from 'date-fns/format';\n\nimport { Logger } from '../../../lib/SendbirdState';\nimport { CoreMessageType, SendableMessageType } from '../../../utils';\n\nexport const getMessageCreatedAt = (message: SendableMessageType): string => format(message.createdAt, 'p');\n\nexport const shouldFetchMore = (messageLength: number, maxMessages: number): boolean => {\n if (typeof maxMessages !== 'number') {\n return true;\n }\n\n if (typeof maxMessages === 'number'\n && maxMessages > messageLength\n ) {\n return true;\n }\n return false;\n};\n\n/* eslint-disable default-param-last */\nexport const scrollIntoLast = (initialTry = 0, scrollRef: React.RefObject<HTMLElement>): void => {\n const MAX_TRIES = 10;\n const currentTry = initialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const scrollDOM = scrollRef?.current || document.querySelector('.sendbird-openchannel-conversation-scroll__container__item-container');\n // eslint-disable-next-line no-multi-assign\n scrollDOM.scrollTop = scrollDOM.scrollHeight;\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(currentTry + 1, scrollRef);\n }, 500 * currentTry);\n }\n};\n\nexport const isSameGroup = (\n message: CoreMessageType,\n comparingMessage: CoreMessageType,\n): boolean => {\n if (!(\n message\n && comparingMessage\n && message?.messageType\n && message.messageType !== 'admin'\n && comparingMessage?.messageType\n && comparingMessage.messageType !== 'admin'\n && (message as SendableMessageType)?.sender\n && (comparingMessage as SendableMessageType)?.sender\n && message?.createdAt\n && comparingMessage?.createdAt\n && (message as SendableMessageType)?.sender?.userId\n && (comparingMessage as SendableMessageType)?.sender?.userId\n )) {\n return false;\n }\n // to fix typecasting\n const message_ = message as UserMessage;\n const comparingMessage_ = comparingMessage as UserMessage;\n return (\n message_?.sendingStatus === comparingMessage_?.sendingStatus\n && message_?.sender?.userId === comparingMessage_?.sender?.userId\n && (\n getMessageCreatedAt(message as SendableMessageType) === getMessageCreatedAt(comparingMessage as SendableMessageType)\n )\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage: CoreMessageType,\n currMessage: CoreMessageType,\n nextMessage: CoreMessageType,\n): [boolean, boolean] => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n);\n\nexport const kFormatter = (num: number): string => {\n if (Math.abs(num) > 999999) {\n return `${(Math.abs(num) / 1000000).toFixed(1)}M`;\n }\n\n if (Math.abs(num) > 999) {\n return `${(Math.abs(num) / 1000).toFixed(1)}K`;\n }\n\n return `${num}`;\n};\n\nexport const isOperator = (openChannel: OpenChannel, userId: string): boolean => {\n const operators = openChannel?.operators;\n if (operators.map(operator => operator.userId).indexOf(userId) < 0) {\n return false;\n }\n return true;\n};\n\nexport const isDisabledBecauseFrozen = (openChannel: OpenChannel, userId: string): boolean => {\n const isFrozen = openChannel?.isFrozen;\n return isFrozen && !isOperator(openChannel, userId);\n};\n\nexport const isDisabledBecauseMuted = (mutedParticipantIds: Array<string>, userId: string): boolean => {\n return mutedParticipantIds.indexOf(userId) > -1;\n};\n\nexport const fetchWithListQuery = (\n listQuery: ParticipantListQuery,\n logger: Logger,\n eachQueryNextCallback: (users: Array<User>) => void,\n): void => {\n const fetchList = (query: ParticipantListQuery) => {\n const { hasNext } = query;\n if (hasNext) {\n query.next().then((users) => {\n eachQueryNextCallback(users);\n fetchList(query);\n }).catch((error) => {\n logger.warning('OpenChannel | FetchUserList failed', error);\n });\n } else {\n logger.info('OpenChannel | FetchUserList finished');\n }\n };\n logger.info('OpenChannel | FetchUserList start', listQuery);\n fetchList(listQuery);\n};\n\nexport const pxToNumber = (px: string | number): number | void => {\n if (typeof px === 'number') {\n return px;\n }\n if (typeof px === 'string') {\n const parsed = Number.parseFloat(px);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n return null;\n};\n","export const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const EXIT_CURRENT_CHANNEL = 'EXIT_CURRENT_CHANNEL';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';\nexport const SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';\nexport const SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';\nexport const SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';\nexport const RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START';\nexport const FETCH_PARTICIPANT_LIST = 'FETCH_PARTICIPANT_LIST';\nexport const FETCH_BANNED_USER_LIST = 'FETCH_BANNED_USER_LIST';\nexport const FETCH_MUTED_USER_LIST = 'FETCH_MUTED_USER_LIST';\nexport const TRIM_MESSAGE_LIST = 'TRIM_MESSAGE_LIST';\n\n// event handlers\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\nexport const ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';\nexport const ON_USER_ENTERED = 'ON_USER_ENTERED';\nexport const ON_USER_EXITED = 'ON_USER_EXITED';\nexport const ON_USER_MUTED = 'ON_USER_MUTED';\nexport const ON_USER_UNMUTED = 'ON_USER_UNMUTED';\nexport const ON_USER_BANNED = 'ON_USER_BANNED';\nexport const ON_USER_UNBANNED = 'ON_USER_UNBANNED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';\nexport const ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';\nexport const ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';\nexport const ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';\nexport const ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';\nexport const ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';\nexport const ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';\n","import { State as initialStateInterface } from './initialState';\nimport * as actionTypes from './actionTypes';\n\nimport compareIds from '../../../../utils/compareIds';\nimport { SendableMessageType } from '../../../../utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @ts-ignore: Unreachable code error\ninterface ActionInterface {\n type: string;\n payload?: any;\n}\n\nexport default function reducer(\n state: initialStateInterface,\n action: ActionInterface,\n): initialStateInterface {\n switch (action.type) {\n case actionTypes.RESET_MESSAGES: {\n return {\n ...state,\n allMessages: [],\n };\n }\n case actionTypes.EXIT_CURRENT_CHANNEL: {\n if (action.payload?.url === state.currentOpenChannel?.url) {\n return {\n ...state,\n currentOpenChannel: null,\n };\n }\n return state;\n }\n case actionTypes.SET_CURRENT_CHANNEL: {\n const gottenChannel = action.payload;\n const operators = gottenChannel.operators;\n if (\n !state.isInvalid\n && state.currentOpenChannel\n && state.currentOpenChannel.url\n && (state.currentOpenChannel.url === gottenChannel.url)\n ) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: gottenChannel,\n isInvalid: false,\n operators: operators,\n participants: operators,\n bannedParticipantIds: [],\n mutedParticipantIds: [],\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_START: {\n return {\n ...state,\n loading: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_SUCESS:\n case actionTypes.GET_PREV_MESSAGES_FAIL: {\n const isFailed = (action.type === actionTypes.GET_PREV_MESSAGES_FAIL);\n const {\n currentOpenChannel = {},\n messages = [],\n hasMore,\n lastMessageTimestamp,\n } = action.payload;\n const actionChannelUrl = currentOpenChannel.url;\n const receivedMessages = isFailed ? [] : messages;\n const _hasMore = isFailed ? false : hasMore;\n const _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;\n\n const stateChannel = state.currentOpenChannel;\n const stateChannelUrl = stateChannel.url;\n\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n const filteredAllMessages = state.allMessages.filter((message) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, message.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: _hasMore,\n lastMessageTimestamp: _lastMessageTimestamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_START: {\n const {\n message,\n channel,\n } = action.payload;\n if (channel?.url !== state.currentOpenChannel.url\n || state.allMessages.some((m) => (m as SendableMessageType).reqId === message.reqId)\n // Handing failed first than sending start issue\n ) {\n return state;\n }\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n message,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_SUCCEEDED: {\n const sentMessage = action.payload;\n const newMessages = state.allMessages.map((m) => (\n compareIds((m as SendableMessageType).reqId, sentMessage.reqId) ? sentMessage : m\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SENDING_MESSAGE_FAILED: {\n const sentMessage = action.payload;\n sentMessage.sendingStatus = 'failed';\n if (!(state.allMessages.some((m) => (m as SendableMessageType)?.reqId === sentMessage?.reqId))) {\n // Handling failed first than sending start issue\n return {\n ...state,\n allMessages: [\n ...state.allMessages.filter((m) => !compareIds((m as SendableMessageType).reqId, sentMessage)),\n sentMessage,\n ],\n };\n } else {\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds((m as SendableMessageType).reqId, sentMessage.reqId) ? sentMessage : m\n )),\n };\n }\n }\n case actionTypes.TRIM_MESSAGE_LIST: {\n const { allMessages } = state;\n const messageLimit = action.payload?.messageLimit;\n if (messageLimit\n && messageLimit > 0\n && allMessages?.length > messageLimit\n ) {\n const sliceAt = allMessages.length - messageLimit;\n return {\n ...state,\n allMessages: allMessages.slice(sliceAt),\n };\n }\n return state;\n }\n case actionTypes.RESENDING_MESSAGE_START: {\n const eventedChannel = action.payload.channel;\n const resentMessage = action.payload.message;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds((m as SendableMessageType).reqId, resentMessage.reqId) ? resentMessage : m\n )),\n };\n }\n case actionTypes.FETCH_PARTICIPANT_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedParticipantList = action.payload.users;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, ...fetchedParticipantList],\n // Should check duplication\n };\n }\n case actionTypes.FETCH_BANNED_USER_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedBannedUserList = action.payload.users;\n if (\n (eventedChannel.url !== state.currentOpenChannel.url)\n || !(fetchedBannedUserList.every(user => typeof user.userId === 'string'))\n ) {\n return state;\n }\n return {\n ...state,\n bannedParticipantIds: [\n ...state.bannedParticipantIds,\n ...fetchedBannedUserList.map(user => user.userId),\n ],\n // Should check duplication\n };\n }\n case actionTypes.FETCH_MUTED_USER_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedMutedUserList = action.payload.users;\n if (\n (eventedChannel.url !== state.currentOpenChannel.url)\n || !(fetchedMutedUserList.every(user => typeof user.userId === 'string'))\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: [\n ...state.mutedParticipantIds,\n ...fetchedMutedUserList.map(user => user.userId),\n ],\n // Should check duplication\n };\n }\n // events\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const eventedChannel = action.payload.channel;\n const receivedMessage = action.payload.message;\n\n const {\n currentOpenChannel,\n } = state;\n\n if (\n !compareIds(eventedChannel.url, currentOpenChannel.url)\n || (\n !(state.allMessages.map(\n (message) => message.messageId).indexOf(receivedMessage.messageId) < 0\n ))\n ) {\n return state;\n }\n\n return {\n ...state,\n allMessages: [...state.allMessages, receivedMessage],\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedMessage = action.payload.message;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((message) => (\n message.isIdentical(updatedMessage)\n ? updatedMessage\n : message\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED: {\n const eventedChannel = action.payload.channel;\n const deletedMessageId = action.payload.messageId;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.filter((message) => (\n !compareIds(message.messageId, deletedMessageId)\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID: {\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds((m as SendableMessageType).reqId, action.payload)\n )),\n };\n }\n case actionTypes.ON_OPERATOR_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedOperators = action.payload.operators;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: eventedChannel,\n operators: updatedOperators,\n };\n }\n case actionTypes.ON_USER_ENTERED: {\n const eventedChannel = action.payload.channel;\n const enteredUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, enteredUser],\n };\n }\n case actionTypes.ON_USER_EXITED: {\n const eventedChannel = action.payload.channel;\n const exitedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: state.participants.filter((participant) => (\n !compareIds(participant.userId, exitedUser.userId)\n )),\n };\n }\n case actionTypes.ON_USER_MUTED: {\n const eventedChannel = action.payload.channel;\n const mutedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.mutedParticipantIds.indexOf(mutedUser.userId) >= 0\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: [...state.mutedParticipantIds, mutedUser.userId],\n };\n }\n case actionTypes.ON_USER_UNMUTED: {\n const eventedChannel = action.payload.channel;\n const unmutedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.mutedParticipantIds.indexOf(unmutedUser.userId) < 0\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: state.mutedParticipantIds.filter(userId => userId !== unmutedUser.userId),\n };\n }\n case actionTypes.ON_USER_BANNED: {\n const eventedChannel = action.payload.channel;\n const bannedUser = action.payload.user;\n const currentUser = action.payload.currentUser;\n const currentChannel = state.currentOpenChannel;\n if (currentChannel?.url === eventedChannel?.url && bannedUser?.userId === currentUser?.userId) {\n return {\n ...state,\n currentOpenChannel: null,\n };\n } else if (currentChannel?.url === eventedChannel?.url) {\n return {\n ...state,\n bannedParticipantIds: [...state.bannedParticipantIds, bannedUser.userId],\n };\n }\n return state;\n }\n case actionTypes.ON_USER_UNBANNED: {\n const eventedChannel = action.payload.channel;\n const unbannedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (currentChannel?.url === eventedChannel?.url) {\n return {\n ...state,\n bannedParticipantIds: state.bannedParticipantIds.filter((userId) => userId !== unbannedUser.userId),\n };\n }\n return state;\n }\n case actionTypes.ON_CHANNEL_FROZEN: {\n const frozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== frozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: true,\n };\n }\n case actionTypes.ON_CHANNEL_UNFROZEN: {\n const unfrozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== unfrozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: false,\n };\n }\n case actionTypes.ON_CHANNEL_CHANGED: {\n const changedChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== changedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: changedChannel,\n };\n }\n case actionTypes.ON_CHANNEL_DELETED: {\n const deletedChannelUrl = action.payload;\n const currentChannel = state?.currentOpenChannel;\n if (currentChannel?.url === deletedChannelUrl) {\n return {\n ...state,\n currentOpenChannel: null,\n };\n }\n return state;\n }\n case actionTypes.ON_META_DATA_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaDataKeys = action.payload.metaDataKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaCounterKeys = action.payload.metaCounterKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_MENTION_RECEIVED: {\n // const eventedChannel = action.payload.channel;\n // const mentionedMessage = action.payload.message;\n // return {\n // ...state\n // };\n return state;\n }\n default:\n return state;\n }\n}\n","import type { User } from '@sendbird/chat';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { CoreMessageType } from '../../../../utils';\n\nexport interface State {\n allMessages: Array<CoreMessageType>;\n loading: boolean;\n initialized: boolean;\n currentOpenChannel: OpenChannel;\n isInvalid: boolean;\n hasMore: boolean;\n lastMessageTimestamp: number;\n frozen: boolean;\n operators: Array<User>;\n participants: Array<User>;\n bannedParticipantIds: Array<string>;\n mutedParticipantIds: Array<string>;\n}\n\nconst initialState: State = {\n allMessages: [],\n loading: false,\n initialized: false,\n currentOpenChannel: null,\n isInvalid: false,\n hasMore: false,\n lastMessageTimestamp: 0,\n frozen: false,\n operators: [],\n participants: [],\n bannedParticipantIds: [],\n mutedParticipantIds: [],\n};\n\nexport default initialState;\n","import type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\nimport { useEffect } from 'react';\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface DynamicParams {\n channelUrl: string;\n sdkInit: boolean;\n fetchingParticipants: boolean;\n userId: string;\n currentOpenChannel: OpenChannel;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: ({ type, payload }: { type: string, payload: any }) => void;\n}\n\nfunction useSetChannel(\n { channelUrl, sdkInit, fetchingParticipants, userId, currentOpenChannel }: DynamicParams,\n { sdk, logger, messagesDispatcher }: StaticParams,\n): void {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk?.openChannel) {\n if (currentOpenChannel && currentOpenChannel?.exit) {\n currentOpenChannel.exit?.().then(() => {\n logger.info('OpenChannel | useSetChannel: Exit from the previous open channel', currentOpenChannel?.url);\n messagesDispatcher({\n type: messageActionTypes.EXIT_CURRENT_CHANNEL,\n payload: currentOpenChannel,\n });\n });\n }\n logger.info('OpenChannel | useSetChannel: Fetching channel', channelUrl);\n sdk.openChannel.getChannel(channelUrl).then((openChannel) => {\n logger.info('OpenChannel | useSetChannel: Succeeded to fetch channel', openChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: openChannel,\n });\n openChannel.enter().then(() => {\n if (openChannel.isOperator(userId)) { // only operator has a permission to fetch these list\n const bannedParticipantListQuery = openChannel.createBannedUserListQuery();\n const mutedParticipantListQuery = openChannel.createMutedUserListQuery();\n utils.fetchWithListQuery(\n bannedParticipantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_BANNED_USER_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n utils.fetchWithListQuery(\n mutedParticipantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_MUTED_USER_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n } else {\n openChannel.getMyMutedInfo()\n .then((mutedInfo) => {\n if (mutedInfo?.isMuted) {\n messagesDispatcher({\n type: messageActionTypes.FETCH_MUTED_USER_LIST,\n payload: {\n channel: openChannel,\n users: [sdk?.currentUser],\n },\n });\n }\n });\n }\n if (fetchingParticipants) {\n // fetch participants list\n const participantListQuery = openChannel.createParticipantListQuery({\n limit: openChannel.participantCount,\n });\n utils.fetchWithListQuery(\n participantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_PARTICIPANT_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n }\n }).catch((error) => {\n logger.warning('OpenChannel | useSetChannel: Failed to enter channel', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n payload: null,\n });\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useSetChannel: Failed to fetch channel', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n payload: null,\n });\n });\n }\n }, [channelUrl, sdkInit, fetchingParticipants]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\nimport { ChannelType } from '@sendbird/chat';\nimport { OpenChannel, OpenChannelHandler, SendbirdOpenChat } from '@sendbird/chat/openChannel';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport uuidv4 from '../../../../utils/uuid';\nimport { scrollIntoLast } from '../utils';\nimport { Logger } from '../../../../lib/SendbirdState';\n\ntype MessagesDispatcherType = {\n type: string, payload: any,\n};\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n checkScrollBottom: () => boolean;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n scrollRef: React.RefObject<HTMLElement>;\n messagesDispatcher: (props: MessagesDispatcherType) => void;\n}\n\nfunction useHandleChannelEvents(\n { currentOpenChannel, checkScrollBottom }: DynamicParams,\n { sdk, logger, messagesDispatcher, scrollRef }: StaticParams,\n): void {\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (currentOpenChannel && currentOpenChannel.url && sdk?.openChannel?.addOpenChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Setup evnet handler', messageReceiverId);\n const channelHandlerParams: OpenChannelHandler = {\n onMessageReceived: (channel, message) => {\n const scrollToEnd = checkScrollBottom();\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n if (scrollToEnd) {\n try {\n setTimeout(() => {\n scrollIntoLast(0, scrollRef);\n });\n } catch (error) {\n logger.warning('OpenChannel | onMessageReceived | scroll to end failed');\n }\n }\n },\n onMessageUpdated: (channel, message) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n },\n onMessageDeleted: (channel, messageId) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', { channelUrl, messageId });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: { channel, messageId },\n });\n },\n onOperatorUpdated: (channel, operators) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', { channelUrl, operators });\n messagesDispatcher({\n type: messageActionTypes.ON_OPERATOR_UPDATED,\n payload: { channel, operators },\n });\n },\n onUserEntered: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_ENTERED,\n payload: { channel, user },\n });\n },\n onUserExited: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserExited', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_EXITED,\n payload: { channel, user },\n });\n },\n onUserMuted: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: { channel, user },\n });\n },\n onUserUnmuted: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNMUTED,\n payload: { channel, user },\n });\n },\n onUserBanned: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_BANNED,\n payload: { channel, user, currentUser: sdk?.currentUser },\n });\n },\n onUserUnbanned: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNBANNED,\n payload: { channel, user },\n });\n },\n onChannelFrozen: (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n },\n onChannelUnfrozen: (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n },\n onChannelChanged: (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n },\n onMetaDataCreated: (channel, metaData) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_CREATED,\n payload: { channel, metaData },\n });\n },\n onMetaDataUpdated: (channel, metaData) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_UPDATED,\n payload: { channel, metaData },\n });\n },\n onMetaDataDeleted: (channel, metaDataKeys) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', { channelUrl, metaDataKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_DELETED,\n payload: { channel, metaDataKeys },\n });\n },\n onMetaCounterCreated: (channel, metaCounter) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_CREATED,\n payload: { channel, metaCounter },\n });\n },\n onMetaCounterUpdated: (channel, metaCounter) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_UPDATED,\n payload: { channel, metaCounter },\n });\n },\n onMetaCounterDeleted: (channel, metaCounterKeys) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', { channelUrl, metaCounterKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_DELETED,\n payload: { channel, metaCounterKeys },\n });\n },\n onMentionReceived: (channel, message) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MENTION_RECEIVED,\n payload: { channel, message },\n });\n },\n onChannelDeleted: (channelUrl, channelType) => {\n if (channelType === ChannelType.OPEN && currentOpenChannel?.url === channelUrl) {\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n }\n },\n };\n\n const ChannelHandler = new OpenChannelHandler(channelHandlerParams);\n\n sdk?.openChannel?.addOpenChannelHandler(messageReceiverId, ChannelHandler);\n }\n\n return () => {\n if (sdk?.openChannel?.removeOpenChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);\n sdk.openChannel.removeOpenChannelHandler(messageReceiverId);\n }\n };\n }, [currentOpenChannel]);\n}\n\nexport default useHandleChannelEvents;\n","import { MessageListParams } from '@sendbird/chat/message';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport React, { useEffect } from 'react';\n\nimport type { CustomUseReducerDispatcher, Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { scrollIntoLast } from '../utils';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n userFilledMessageListParams?: Record<string, any>;\n}\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: CustomUseReducerDispatcher;\n scrollRef: React.RefObject<HTMLElement>;\n}\n\nfunction useInitialMessagesFetch(\n { currentOpenChannel, userFilledMessageListParams }: DynamicParams,\n { logger, messagesDispatcher, scrollRef }: StaticParams,\n): void {\n useEffect(() => {\n logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n payload: null,\n });\n\n if (currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {\n const messageListParams: MessageListParams = {\n nextResultSize: 0,\n prevResultSize: 30,\n isInclusive: true,\n includeReactions: false,\n };\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach((key) => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | useInitialMessagesFetch: Used customizedMessageListParams');\n }\n\n logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages', { currentOpenChannel, messageListParams });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n payload: null,\n });\n currentOpenChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then((messages) => {\n logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => { scrollIntoLast(0, scrollRef); });\n }).catch((error) => {\n logger.error('OpenChannel | useInitialMessagesFetch: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n });\n }\n }, [currentOpenChannel, userFilledMessageListParams]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useCallback } from 'react';\nimport type { MessageListParams } from '@sendbird/chat/message';\nimport type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport type { CustomUseReducerDispatcher, Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n lastMessageTimestamp: number;\n fetchMore?: boolean;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: CustomUseReducerDispatcher;\n hasMore: boolean;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n userFilledMessageListParams?: Record<string, any>;\n}\ntype CallbackReturn = (callback: () => void) => void;\n\nfunction useScrollCallback(\n { currentOpenChannel, lastMessageTimestamp, fetchMore }: DynamicParams,\n { sdk, logger, messagesDispatcher, hasMore, userFilledMessageListParams }: StaticParams,\n): CallbackReturn {\n return useCallback((callback) => {\n if (fetchMore && hasMore) {\n logger.info('OpenChannel | useScrollCallback: start');\n const messageListParams: MessageListParams = {\n prevResultSize: 30,\n includeReactions: false,\n nextResultSize: 0,\n };\n\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach((key) => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | useScrollCallback: Used userFilledMessageListParams', userFilledMessageListParams);\n }\n\n logger.info('OpenChannel | useScrollCallback: Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(lastMessageTimestamp || new Date().getTime(), messageListParams).then((messages) => {\n logger.info('OpenChannel | useScrollCallback: Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => {\n callback();\n });\n }).catch((error) => {\n logger.error('OpenChannel | useScrollCallback: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n });\n }\n }, [currentOpenChannel, lastMessageTimestamp, fetchMore, sdk]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\nimport { Logger } from '../../../..';\n\ninterface DynamicParams {\n conversationScrollRef: React.RefObject<HTMLDivElement>;\n}\ninterface StaticParams {\n logger: Logger;\n}\n\nfunction useCheckScrollBottom(\n { conversationScrollRef }: DynamicParams,\n { logger }: StaticParams,\n): () => boolean {\n return useCallback(() => {\n let isBottom = true;\n if (conversationScrollRef && conversationScrollRef?.current) {\n try {\n const conversationScroll = conversationScrollRef.current;\n isBottom = conversationScroll.scrollHeight <= conversationScroll.scrollTop + conversationScroll.clientHeight;\n } catch (error) {\n logger.error('OpenChannel | useCheckScrollBottom', error);\n }\n }\n return isBottom;\n }, [conversationScrollRef]);\n}\n\nexport default useCheckScrollBottom;\n","import type { UserMessageCreateParams } from '@sendbird/chat/message';\nimport type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport React, { useCallback } from 'react';\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n onBeforeSendUserMessage: (text: string) => UserMessageCreateParams;\n checkScrollBottom: () => boolean;\n messageInputRef: React.RefObject<HTMLInputElement>;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: (props: { type: string, payload: any }) => void;\n scrollRef: React.RefObject<HTMLElement>;\n}\n\nfunction useSendMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef }: DynamicParams,\n { sdk, logger, messagesDispatcher, scrollRef }: StaticParams,\n): () => void {\n return useCallback(() => {\n if (sdk) {\n const text = messageInputRef.current.innerText;\n const createParamsDefault = (txt: string | number): UserMessageCreateParams => {\n const message = txt as string;\n const params: UserMessageCreateParams = {\n message: message,\n };\n return params;\n };\n const createCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';\n if (createCustomParams) {\n logger.info('OpenChannel | useSendMessageCallback: Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);\n logger.info('OpenChannel | useSendMessageCallback: Sending message has started', params);\n\n const isBottom = checkScrollBottom();\n let pendingMsg = null;\n currentOpenChannel.sendUserMessage(params)\n .onPending((pendingMessage) => {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: pendingMessage,\n channel: currentOpenChannel,\n },\n });\n pendingMsg = pendingMessage;\n })\n .onSucceeded((message) => {\n logger.info('OpenChannel | useSendMessageCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast(0, scrollRef);\n });\n }\n })\n .onFailed((error) => {\n logger.warning('OpenChannel | useSendMessageCallback: Sending message failed', error);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: pendingMsg,\n });\n // https://sendbird.com/docs/chat/v3/javascript/guides/error-codes#2-server-error-codes\n // TODO: Do we need to handle the error cases?\n // @ts-ignore\n if (error?.code === 900041) {\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: {\n channel: currentOpenChannel,\n user: sdk.currentUser,\n },\n });\n }\n });\n }\n }, [currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef]);\n}\n\nexport default useSendMessageCallback;\n","import { useCallback } from 'react';\nimport type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\nimport type { FileMessageCreateParams } from '@sendbird/chat/message';\n\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n onBeforeSendFileMessage: (file: File) => FileMessageCreateParams;\n checkScrollBottom: () => boolean;\n imageCompression?: {\n compressionRate?: number,\n resizingWidth?: number | string,\n resizingHeight?: number | string,\n };\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: (props: { type: string, payload: any }) => void;\n}\n\ntype CallbackReturn = (files: Array<File> | File) => void;\n\nfunction useFileUploadCallback({\n currentOpenChannel,\n checkScrollBottom,\n imageCompression = {},\n onBeforeSendFileMessage,\n}: DynamicParams,\n{ sdk, logger, messagesDispatcher, scrollRef }: StaticParams,\n): CallbackReturn {\n return useCallback((files) => {\n if (sdk) {\n /**\n * OpenChannel does not currently support file lists.\n * However, this change is made to maintain interface consistency with group channels.\n */\n const file = Array.isArray(files) ? files[0] : files;\n const {\n compressionRate,\n resizingWidth,\n resizingHeight,\n } = imageCompression;\n const createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';\n\n const compressibleFileType = (file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg');\n const compressibleRatio = (compressionRate > 0) && (compressionRate < 1);\n // pxToNumber returns null if values are invalid\n const compressibleDiamensions = utils.pxToNumber(resizingWidth)\n || utils.pxToNumber(resizingHeight);\n\n const canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);\n\n const createParamsDefault = (file_): FileMessageCreateParams => {\n const params: FileMessageCreateParams = {};\n params.file = file_;\n return params;\n };\n\n if (canCompressImage) { // Using image compression\n try {\n const image: HTMLImageElement = document.createElement('img');\n image.src = URL.createObjectURL(file);\n image.onload = () => {\n URL.revokeObjectURL(image.src);\n const canvas = document.createElement('canvas');\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n let targetWidth = utils.pxToNumber(resizingWidth) || imageWidth;\n let targetHeight = utils.pxToNumber(resizingHeight) || imageHeight;\n\n // In canvas.toBlob(callback, mimeType, qualityArgument)\n // qualityArgument doesnt work\n // so in case compressibleDiamensions are not present, we use ratio\n if (file.type === 'image/png' && !compressibleDiamensions) {\n targetWidth *= compressionRate;\n targetHeight *= compressionRate;\n }\n\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0, targetWidth, targetHeight);\n context.canvas.toBlob(\n (newImageBlob) => {\n const compressedFile = new File([newImageBlob], file.name, { type: file.type });\n if (createCustomParams) {\n logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(compressedFile) : createParamsDefault(compressedFile);\n logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);\n\n const isBottom = checkScrollBottom();\n currentOpenChannel.sendFileMessage(params)\n .onPending((pendingMessage) => {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n },\n });\n })\n .onSucceeded((message) => {\n logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast(0, scrollRef);\n });\n }\n })\n .onFailed((error, message) => {\n logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', { message, error });\n // @ts-ignore\n message.localUrl = URL.createObjectURL(file);\n // @ts-ignore\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n });\n },\n file.type,\n compressionRate,\n );\n };\n } catch (error) {\n logger.warning('OpenChannel | useFileUploadCallback: Sending file message with image compression failed', error);\n }\n } else { // Not using image compression\n if (createCustomParams) {\n logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);\n logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);\n\n const isBottom = checkScrollBottom();\n currentOpenChannel.sendFileMessage(params)\n .onPending((pendingMessage) => {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n },\n });\n })\n .onSucceeded((message) => {\n logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast(0, scrollRef);\n });\n }\n })\n .onFailed((error, message) => {\n logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', { message, error });\n // @ts-ignore\n message.localUrl = URL.createObjectURL(file);\n // @ts-ignore\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n });\n }\n }\n }, [currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression]);\n}\n\nexport default useFileUploadCallback;\n","import type { UserMessageUpdateParams } from '@sendbird/chat/message';\n\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n onBeforeSendUserMessage?: (text) => UserMessageUpdateParams;\n}\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: (props: { type: string, payload :any }) => void;\n}\ntype CallbackReturn = (messageId, text, callback) => void;\n\nfunction useUpdateMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage }: DynamicParams,\n { logger, messagesDispatcher }: StaticParams,\n): CallbackReturn {\n return useCallback((messageId, text, callback) => {\n const createParamsDefault = (txt) => {\n const params = {\n message: txt,\n };\n return params;\n };\n\n if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {\n logger.info('OpenChannel | useUpdateMessageCallback: Creating params using onBeforeUpdateUserMessage');\n }\n const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);\n currentOpenChannel.updateUserMessage(messageId, params)\n .then((message) => {\n if (callback) {\n callback();\n }\n logger.info('OpenChannel | useUpdateMessageCallback: Updating message succeeded', { message, params });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentOpenChannel,\n message,\n },\n });\n });\n }, [currentOpenChannel, onBeforeSendUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import type { UserMessage } from '@sendbird/chat/message';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { SendableMessageType } from '../../../../utils';\nimport { Logger } from '../../../../lib/SendbirdState';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n}\n\ntype MessagesDispatcherType = {\n type: string, payload: any,\n};\n\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: (dispatcher: MessagesDispatcherType) => void;\n}\n\ntype CallbackReturn = (\n message: SendableMessageType,\n callback?: () => void,\n) => void;\n\nfunction useDeleteMessageCallback(\n { currentOpenChannel }: DynamicParams,\n { logger, messagesDispatcher }: StaticParams,\n): CallbackReturn {\n return useCallback((message, callback) => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);\n const { sendingStatus } = message;\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState', sendingStatus);\n\n if (sendingStatus === 'failed' || sendingStatus === 'pending') {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (callback) {\n callback();\n }\n } else {\n if (!(message.messageType === 'file' || message.messageType === 'user')) {\n return;\n }\n const messageToDelete = message as UserMessage;\n currentOpenChannel.deleteMessage(messageToDelete).then(() => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message on server', sendingStatus);\n if (callback) {\n callback();\n }\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: {\n channel: currentOpenChannel,\n messageId: message.messageId,\n },\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);\n });\n }\n }, [currentOpenChannel]);\n}\n\nexport default useDeleteMessageCallback;\n","import type { FileMessage } from '@sendbird/chat/message';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { SendableMessageType } from '../../../../utils';\nimport { Logger } from '../../../../lib/SendbirdState';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n}\n\ntype MessagesDispatcherType = { type: string, payload: any };\n\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: (dispatcher: MessagesDispatcherType) => void;\n}\ntype CallbackReturn = (failedMessage: SendableMessageType) => void;\n\nfunction useResendMessageCallback(\n { currentOpenChannel }: DynamicParams,\n { logger, messagesDispatcher }: StaticParams,\n): CallbackReturn {\n return useCallback((failedMessage) => {\n logger.info('OpenChannel | useResendMessageCallback: Resending message has started', failedMessage);\n // eslint-disable-next-line no-param-reassign\n const { messageType, file } = failedMessage as FileMessage;\n if (typeof failedMessage?.isResendable === 'boolean' && failedMessage.isResendable) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESENDING_MESSAGE_START,\n payload: {\n channel: currentOpenChannel,\n message: failedMessage,\n },\n });\n\n // userMessage\n if (messageType === 'user' && failedMessage.messageType === 'user') {\n currentOpenChannel.resendUserMessage(failedMessage).then((message) => {\n logger.info('OpenChannel | useResendMessageCallback: Reseding message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useResendMessageCallback: Resending message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n });\n }\n\n // fileMessage\n if (messageType === 'file' && failedMessage.messageType === 'file') {\n currentOpenChannel.resendFileMessage(failedMessage, file).then((message) => {\n logger.info('OpenChannel | useResendMessageCallback: Resending file message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useResendMessageCallback: Resending file message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('OpenChannel | useResendMessageCallback: Message is not resendable');\n logger.warning('OpenChannel | useResendMessageCallback: Message is not resendable', failedMessage);\n }\n }, [currentOpenChannel]);\n}\n\nexport default useResendMessageCallback;\n","import { useEffect, useState } from 'react';\nimport { Logger } from '../../../..';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface DynamicParams {\n messagesLength: number;\n messageLimit: number;\n}\n\ntype MessagesDispatcherType = {\n type: string,\n payload: { messageLimit: number }\n};\n\ninterface StaticParams {\n messagesDispatcher: (dispatcher: MessagesDispatcherType) => void;\n logger: Logger;\n}\n\nconst THROTTLE_TIMER = 5000;\n\n// to trim message list so that we wont keep thousands of messages in memory\n// We are throttling here; not debouncing\n// it will be called once very 5 sec if messagesLength, messageLimit changes\n// we check if messagesLength > messageLimit before dispatching action\nfunction useTrimMessageList(\n { messagesLength, messageLimit }: DynamicParams,\n { messagesDispatcher, logger }: StaticParams,\n): void {\n const [inProgress, setInProgress] = useState(false);\n useEffect(() => {\n if (inProgress) {\n return;\n }\n if (typeof messagesLength === 'number' && messagesLength > messageLimit) {\n logger.info('Trimming MessageList');\n messagesDispatcher({\n type: messageActionTypes.TRIM_MESSAGE_LIST,\n payload: { messageLimit },\n });\n }\n setInProgress(true);\n setTimeout(() => { setInProgress(false); }, THROTTLE_TIMER);\n }, [messagesLength, messageLimit]);\n}\n\nexport default useTrimMessageList;\n","import React, {\n useRef,\n useEffect,\n useReducer,\n useMemo,\n} from 'react';\nimport type { FileMessageCreateParams, UserMessageCreateParams } from '@sendbird/chat/message';\nimport type { SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport * as utils from './utils';\nimport { UserProfileProvider } from '../../../lib/UserProfileContext';\nimport { RenderUserProfileProps } from '../../../types';\nimport messagesReducer from './dux/reducers';\nimport messagesInitialState, {\n State as MessageStoreState,\n} from './dux/initialState';\nimport * as messageActionTypes from './dux/actionTypes';\nimport { scrollIntoLast } from './utils';\nimport topics from '../../../lib/pubSub/topics';\n\n// hooks\nimport useSetChannel from './hooks/useSetChannel';\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useCheckScrollBottom from './hooks/useCheckScrollBottom';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useFileUploadCallback from './hooks/useFileUploadCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\nimport useTrimMessageList from './hooks/useTrimMessageList';\nimport useSendbirdStateContext from '../../../hooks/useSendbirdStateContext';\n\ntype OpenChannelQueries = {\n // https://sendbird.github.io/core-sdk-javascript/module-model_params_messageListParams-MessageListParams.html\n messageListParams?: {\n replyType?: string,\n messageType?: string,\n prevResultSize?: number,\n nextResultSize?: number,\n reverse?: boolean,\n isInclusive?: boolean,\n includeMetaArray?: boolean,\n // UIKit doesn't support emoji reaction in OpenChannel\n // includeReactions?: boolean,\n // UIKit doesn't support message threading in OpenChannel\n // includeThreadInfo?: boolean,\n includeParentMessageInfo?: boolean,\n showSubchannelMessagesOnly?: boolean,\n customTypes?: Array<string>,\n senderUserIds?: Array<string>,\n },\n};\n\nexport interface OpenChannelProviderProps {\n channelUrl: string;\n children?: React.ReactElement;\n isMessageGroupingEnabled?: boolean;\n queries?: OpenChannelQueries;\n messageLimit?: number;\n onBeforeSendUserMessage?(text: string): UserMessageCreateParams;\n onBeforeSendFileMessage?(file_: File): FileMessageCreateParams;\n onChatHeaderActionClick?(): void;\n onBackClick?(): void;\n disableUserProfile?: boolean;\n renderUserProfile?: (props: RenderUserProfileProps) => React.ReactElement;\n}\n\ninterface OpenChannelInterface extends OpenChannelProviderProps, MessageStoreState {\n // derived/utils\n messageInputRef: React.RefObject<HTMLInputElement>;\n conversationScrollRef: React.RefObject<HTMLDivElement>;\n disabled: boolean;\n amIBanned: boolean;\n amIMuted: boolean;\n amIOperator: boolean;\n fetchMore: boolean;\n checkScrollBottom: () => boolean;\n onScroll: (callback: () => void) => void;\n handleSendMessage: any;\n handleFileUpload: any;\n updateMessage: any;\n deleteMessage: any;\n resendMessage: any;\n}\n\nconst OpenChannelContext = React.createContext<OpenChannelInterface | null>(undefined);\n\nconst OpenChannelProvider: React.FC<OpenChannelProviderProps> = (props: OpenChannelProviderProps) => {\n const {\n channelUrl,\n children,\n isMessageGroupingEnabled = true,\n queries,\n onBeforeSendUserMessage,\n messageLimit,\n onBeforeSendFileMessage,\n onChatHeaderActionClick,\n onBackClick,\n } = props;\n\n // We didn't decide to support fetching participant list\n const fetchingParticipants = false;\n const globalStore = useSendbirdStateContext();\n\n const sdk = globalStore?.stores?.sdkStore?.sdk as SendbirdOpenChat;\n const sdkInit = globalStore?.stores?.sdkStore?.initialized;\n const user = globalStore?.stores?.userStore?.user;\n const config = globalStore?.config;\n const {\n userId,\n isOnline,\n logger,\n pubSub,\n imageCompression,\n } = config;\n\n // hook variables\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const {\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n operators,\n bannedParticipantIds,\n mutedParticipantIds,\n } = messagesStore;\n // ref\n const messageInputRef = useRef(null); // useSendMessageCallback\n const conversationScrollRef = useRef(null); // useScrollAfterSendMessageCallback\n\n // const\n const userFilledMessageListParams = queries?.messageListParams;\n const disabled = !initialized\n || !isOnline\n || utils.isDisabledBecauseFrozen(currentOpenChannel, userId)\n || utils.isDisabledBecauseMuted(mutedParticipantIds, userId);\n\n // useMemo\n const amIBanned = useMemo(() => {\n return bannedParticipantIds.indexOf(user.userId) >= 0;\n }, [channelUrl, bannedParticipantIds, user]);\n const amIMuted = useMemo(() => {\n return mutedParticipantIds.indexOf(user.userId) >= 0;\n }, [channelUrl, mutedParticipantIds, user]);\n const amIOperator = useMemo(() => {\n return operators.map(operator => operator.userId).indexOf(user.userId) >= 0;\n }, [channelUrl, operators, user]);\n\n // use hooks\n useSetChannel(\n { channelUrl, sdkInit, fetchingParticipants, userId, currentOpenChannel },\n { sdk, logger, messagesDispatcher },\n );\n\n const checkScrollBottom = useCheckScrollBottom(\n { conversationScrollRef },\n { logger },\n );\n useHandleChannelEvents(\n { currentOpenChannel, checkScrollBottom },\n { sdk, logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n useInitialMessagesFetch(\n { currentOpenChannel, userFilledMessageListParams },\n { logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n\n const fetchMore: boolean = utils.shouldFetchMore(allMessages?.length, messageLimit);\n // donot fetch more for streaming\n const onScroll = useScrollCallback(\n { currentOpenChannel, lastMessageTimestamp, fetchMore },\n { sdk, logger, messagesDispatcher, hasMore, userFilledMessageListParams },\n );\n const handleSendMessage = useSendMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef },\n { sdk, logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n const handleFileUpload = useFileUploadCallback(\n { currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression },\n { sdk, logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n const updateMessage = useUpdateMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage },\n { logger, messagesDispatcher },\n );\n const deleteMessage = useDeleteMessageCallback(\n { currentOpenChannel },\n { logger, messagesDispatcher },\n );\n const resendMessage = useResendMessageCallback(\n { currentOpenChannel },\n { logger, messagesDispatcher },\n );\n\n useTrimMessageList(\n { messagesLength: allMessages?.length, messageLimit },\n { messagesDispatcher, logger },\n );\n\n // handle API calls from withSendbird\n useEffect(() => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) {\n return;\n }\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast(0, conversationScrollRef);\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: { message, channel },\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast(0, conversationScrollRef);\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: { message, channel },\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return () => {\n if (subscriber) {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n }\n };\n }, [channelUrl, sdkInit]);\n\n return (\n <OpenChannelContext.Provider value={{\n // props\n channelUrl,\n children,\n isMessageGroupingEnabled,\n queries,\n onBeforeSendUserMessage,\n messageLimit,\n onBeforeSendFileMessage,\n onChatHeaderActionClick,\n onBackClick,\n // store\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n operators,\n bannedParticipantIds,\n mutedParticipantIds,\n // derived/utils\n messageInputRef,\n conversationScrollRef,\n disabled,\n amIBanned,\n amIMuted,\n amIOperator,\n checkScrollBottom,\n fetchMore,\n onScroll,\n handleSendMessage,\n handleFileUpload,\n updateMessage,\n deleteMessage,\n resendMessage,\n }}>\n <UserProfileProvider\n isOpenChannel\n renderUserProfile={props?.renderUserProfile}\n disableUserProfile={props?.disableUserProfile ?? config?.disableUserProfile}\n >\n {children}\n </UserProfileProvider>\n </OpenChannelContext.Provider>\n );\n};\n\nexport type UseOpenChannelType = () => OpenChannelInterface;\nconst useOpenChannelContext: UseOpenChannelType = () => React.useContext(OpenChannelContext);\n\nexport {\n OpenChannelProvider,\n useOpenChannelContext,\n};\n"],"names":["getMessageCreatedAt","message","format","createdAt","shouldFetchMore","messageLength","maxMessages","scrollIntoLast","initialTry","arguments","length","undefined","scrollRef","MAX_TRIES","currentTry","scrollDOM","current","document","querySelector","scrollTop","scrollHeight","error","setTimeout","isSameGroup","comparingMessage","_sender","_sender2","_message_$sender","_comparingMessage_$se","messageType","sender","userId","message_","comparingMessage_","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","kFormatter","num","Math","abs","toFixed","isOperator","openChannel","operators","map","operator","indexOf","isDisabledBecauseFrozen","isFrozen","isDisabledBecauseMuted","mutedParticipantIds","fetchWithListQuery","listQuery","logger","eachQueryNextCallback","fetchList","query","hasNext","next","then","users","catch","warning","info","pxToNumber","px","parsed","Number","parseFloat","isNaN","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","RESET_MESSAGES","EXIT_CURRENT_CHANNEL","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","GET_PREV_MESSAGES_FAIL","SENDING_MESSAGE_FAILED","SENDING_MESSAGE_SUCCEEDED","SENDING_MESSAGE_START","RESENDING_MESSAGE_START","FETCH_PARTICIPANT_LIST","FETCH_BANNED_USER_LIST","FETCH_MUTED_USER_LIST","TRIM_MESSAGE_LIST","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","ON_OPERATOR_UPDATED","ON_USER_ENTERED","ON_USER_EXITED","ON_USER_MUTED","ON_USER_UNMUTED","ON_USER_BANNED","ON_USER_UNBANNED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_CHANNEL_CHANGED","ON_CHANNEL_DELETED","ON_META_DATA_CREATED","ON_META_DATA_UPDATED","ON_META_DATA_DELETED","ON_META_COUNTERS_CREATED","ON_META_COUNTERS_UPDATED","ON_META_COUNTERS_DELETED","ON_MENTION_RECEIVED","reducer","state","action","type","actionTypes","_objectSpread","allMessages","_action$payload","_state$currentOpenCha","payload","url","currentOpenChannel","gottenChannel","isInvalid","participants","bannedParticipantIds","loading","isFailed","messages","hasMore","lastMessageTimestamp","actionChannelUrl","receivedMessages","_hasMore","_lastMessageTimestamp","stateChannel","stateChannelUrl","filteredAllMessages","filter","find","_ref","messageId","compareIds","initialized","channel","some","m","reqId","sentMessage","newMessages","_action$payload2","messageLimit","sliceAt","slice","eventedChannel","resentMessage","fetchedParticipantList","fetchedBannedUserList","every","user","fetchedMutedUserList","receivedMessage","updatedMessage","currentChannel","isIdentical","deletedMessageId","updatedOperators","enteredUser","exitedUser","participant","mutedUser","unmutedUser","bannedUser","currentUser","unbannedUser","frozenChannel","frozen","unfrozenChannel","changedChannel","deletedChannelUrl","initialState","useSetChannel","_ref2","channelUrl","sdkInit","fetchingParticipants","sdk","messagesDispatcher","useEffect","exit","_currentOpenChannel$e","call","messageActionTypes","getChannel","enter","bannedParticipantListQuery","createBannedUserListQuery","mutedParticipantListQuery","createMutedUserListQuery","utils","getMyMutedInfo","mutedInfo","isMuted","participantListQuery","createParticipantListQuery","limit","participantCount","useHandleChannelEvents","checkScrollBottom","_sdk$openChannel","messageReceiverId","uuidv4","addOpenChannelHandler","_sdk$openChannel2","channelHandlerParams","onMessageReceived","scrollToEnd","onMessageUpdated","onMessageDeleted","onOperatorUpdated","onUserEntered","onUserExited","onUserMuted","onUserUnmuted","onUserBanned","onUserUnbanned","onChannelFrozen","onChannelUnfrozen","onChannelChanged","onMetaDataCreated","metaData","onMetaDataUpdated","onMetaDataDeleted","metaDataKeys","onMetaCounterCreated","metaCounter","onMetaCounterUpdated","onMetaCounterDeleted","metaCounterKeys","onMentionReceived","onChannelDeleted","channelType","ChannelType","OPEN","ChannelHandler","OpenChannelHandler","_sdk$openChannel3","removeOpenChannelHandler","useInitialMessagesFetch","userFilledMessageListParams","getMessagesByTimestamp","messageListParams","nextResultSize","prevResultSize","isInclusive","includeReactions","Object","keys","forEach","key","Date","getTime","useScrollCallback","fetchMore","useCallback","callback","useCheckScrollBottom","conversationScrollRef","isBottom","conversationScroll","clientHeight","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","text","innerText","createParamsDefault","txt","params","createCustomParams","pendingMsg","sendUserMessage","onPending","pendingMessage","onSucceeded","onFailed","code","useFileUploadCallback","imageCompression","onBeforeSendFileMessage","files","file","Array","isArray","compressionRate","resizingWidth","resizingHeight","compressibleFileType","compressibleRatio","compressibleDiamensions","canCompressImage","file_","image","createElement","src","URL","createObjectURL","onload","revokeObjectURL","canvas","imageWidth","naturalWidth","width","imageHeight","naturalHeight","height","targetWidth","targetHeight","context","getContext","drawImage","toBlob","newImageBlob","compressedFile","File","name","sendFileMessage","requestState","localUrl","useUpdateMessageCallback","updateUserMessage","useDeleteMessageCallback","messageToDelete","deleteMessage","useResendMessageCallback","failedMessage","isResendable","resendUserMessage","resendFileMessage","console","THROTTLE_TIMER","useTrimMessageList","messagesLength","inProgress","setInProgress","useState","OpenChannelContext","React","createContext","OpenChannelProvider","props","_globalStore$stores","_globalStore$stores$s","_globalStore$stores2","_globalStore$stores2$","_globalStore$stores3","_globalStore$stores3$","_props$disableUserPro","children","isMessageGroupingEnabled","queries","onChatHeaderActionClick","onBackClick","globalStore","useSendbirdStateContext","stores","sdkStore","userStore","config","isOnline","pubSub","messagesStore","useReducer","messagesReducer","messagesInitialState","useRef","disabled","amIBanned","useMemo","amIMuted","amIOperator","onScroll","handleSendMessage","handleFileUpload","updateMessage","resendMessage","subscriber","Map","subscribe","set","topics","SEND_USER_MESSAGE","msg","SEND_MESSAGE_START","SEND_FILE_MESSAGE","UPDATE_USER_MESSAGE","fromSelector","DELETE_MESSAGE","s","remove","_unused","Provider","value","UserProfileProvider","isOpenChannel","renderUserProfile","disableUserProfile","useOpenChannelContext","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenChannelProvider-8577ea58.js","sources":["../../src/modules/OpenChannel/context/utils.ts","../../src/modules/OpenChannel/context/dux/actionTypes.ts","../../src/modules/OpenChannel/context/dux/reducers.ts","../../src/modules/OpenChannel/context/dux/initialState.ts","../../src/modules/OpenChannel/context/hooks/useSetChannel.ts","../../src/modules/OpenChannel/context/hooks/useHandleChannelEvents.ts","../../src/modules/OpenChannel/context/hooks/useInitialMessagesFetch.ts","../../src/modules/OpenChannel/context/hooks/useScrollCallback.ts","../../src/modules/OpenChannel/context/hooks/useCheckScrollBottom.ts","../../src/modules/OpenChannel/context/hooks/useSendMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useFileUploadCallback.ts","../../src/modules/OpenChannel/context/hooks/useUpdateMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useDeleteMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useResendMessageCallback.ts","../../src/modules/OpenChannel/context/hooks/useTrimMessageList.ts","../../src/modules/OpenChannel/context/OpenChannelProvider.tsx"],"sourcesContent":["import type React from 'react';\nimport type { User } from '@sendbird/chat';\nimport type { UserMessage } from '@sendbird/chat/message';\nimport type { OpenChannel, ParticipantListQuery } from '@sendbird/chat/openChannel';\nimport format from 'date-fns/format';\n\nimport { Logger } from '../../../lib/SendbirdState';\nimport { CoreMessageType, SendableMessageType } from '../../../utils';\n\nexport const getMessageCreatedAt = (message: SendableMessageType): string => format(message.createdAt, 'p');\n\nexport const shouldFetchMore = (messageLength: number, maxMessages: number): boolean => {\n if (typeof maxMessages !== 'number') {\n return true;\n }\n\n if (typeof maxMessages === 'number'\n && maxMessages > messageLength\n ) {\n return true;\n }\n return false;\n};\n\n/* eslint-disable default-param-last */\nexport const scrollIntoLast = (initialTry = 0, scrollRef: React.RefObject<HTMLElement>): void => {\n const MAX_TRIES = 10;\n const currentTry = initialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const scrollDOM = scrollRef?.current || document.querySelector('.sendbird-openchannel-conversation-scroll__container__item-container');\n // eslint-disable-next-line no-multi-assign\n scrollDOM.scrollTop = scrollDOM.scrollHeight;\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(currentTry + 1, scrollRef);\n }, 500 * currentTry);\n }\n};\n\nexport const isSameGroup = (\n message: CoreMessageType,\n comparingMessage: CoreMessageType,\n): boolean => {\n if (!(\n message\n && comparingMessage\n && message?.messageType\n && message.messageType !== 'admin'\n && comparingMessage?.messageType\n && comparingMessage.messageType !== 'admin'\n && (message as SendableMessageType)?.sender\n && (comparingMessage as SendableMessageType)?.sender\n && message?.createdAt\n && comparingMessage?.createdAt\n && (message as SendableMessageType)?.sender?.userId\n && (comparingMessage as SendableMessageType)?.sender?.userId\n )) {\n return false;\n }\n // to fix typecasting\n const message_ = message as UserMessage;\n const comparingMessage_ = comparingMessage as UserMessage;\n return (\n message_?.sendingStatus === comparingMessage_?.sendingStatus\n && message_?.sender?.userId === comparingMessage_?.sender?.userId\n && (\n getMessageCreatedAt(message as SendableMessageType) === getMessageCreatedAt(comparingMessage as SendableMessageType)\n )\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage: CoreMessageType,\n currMessage: CoreMessageType,\n nextMessage: CoreMessageType,\n): [boolean, boolean] => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n);\n\nexport const kFormatter = (num: number): string => {\n if (Math.abs(num) > 999999) {\n return `${(Math.abs(num) / 1000000).toFixed(1)}M`;\n }\n\n if (Math.abs(num) > 999) {\n return `${(Math.abs(num) / 1000).toFixed(1)}K`;\n }\n\n return `${num}`;\n};\n\nexport const isOperator = (openChannel: OpenChannel, userId: string): boolean => {\n const operators = openChannel?.operators;\n if (operators.map(operator => operator.userId).indexOf(userId) < 0) {\n return false;\n }\n return true;\n};\n\nexport const isDisabledBecauseFrozen = (openChannel: OpenChannel, userId: string): boolean => {\n const isFrozen = openChannel?.isFrozen;\n return isFrozen && !isOperator(openChannel, userId);\n};\n\nexport const isDisabledBecauseMuted = (mutedParticipantIds: Array<string>, userId: string): boolean => {\n return mutedParticipantIds.indexOf(userId) > -1;\n};\n\nexport const fetchWithListQuery = (\n listQuery: ParticipantListQuery,\n logger: Logger,\n eachQueryNextCallback: (users: Array<User>) => void,\n): void => {\n const fetchList = (query: ParticipantListQuery) => {\n const { hasNext } = query;\n if (hasNext) {\n query.next().then((users) => {\n eachQueryNextCallback(users);\n fetchList(query);\n }).catch((error) => {\n logger.warning('OpenChannel | FetchUserList failed', error);\n });\n } else {\n logger.info('OpenChannel | FetchUserList finished');\n }\n };\n logger.info('OpenChannel | FetchUserList start', listQuery);\n fetchList(listQuery);\n};\n\nexport const pxToNumber = (px: string | number): number | void => {\n if (typeof px === 'number') {\n return px;\n }\n if (typeof px === 'string') {\n const parsed = Number.parseFloat(px);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n return null;\n};\n","export const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const EXIT_CURRENT_CHANNEL = 'EXIT_CURRENT_CHANNEL';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';\nexport const SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';\nexport const SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';\nexport const SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';\nexport const RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START';\nexport const FETCH_PARTICIPANT_LIST = 'FETCH_PARTICIPANT_LIST';\nexport const FETCH_BANNED_USER_LIST = 'FETCH_BANNED_USER_LIST';\nexport const FETCH_MUTED_USER_LIST = 'FETCH_MUTED_USER_LIST';\nexport const TRIM_MESSAGE_LIST = 'TRIM_MESSAGE_LIST';\n\n// event handlers\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\nexport const ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';\nexport const ON_USER_ENTERED = 'ON_USER_ENTERED';\nexport const ON_USER_EXITED = 'ON_USER_EXITED';\nexport const ON_USER_MUTED = 'ON_USER_MUTED';\nexport const ON_USER_UNMUTED = 'ON_USER_UNMUTED';\nexport const ON_USER_BANNED = 'ON_USER_BANNED';\nexport const ON_USER_UNBANNED = 'ON_USER_UNBANNED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';\nexport const ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';\nexport const ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';\nexport const ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';\nexport const ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';\nexport const ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';\nexport const ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';\n","import { State as initialStateInterface } from './initialState';\nimport * as actionTypes from './actionTypes';\n\nimport compareIds from '../../../../utils/compareIds';\nimport { SendableMessageType } from '../../../../utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @ts-ignore: Unreachable code error\ninterface ActionInterface {\n type: string;\n payload?: any;\n}\n\nexport default function reducer(\n state: initialStateInterface,\n action: ActionInterface,\n): initialStateInterface {\n switch (action.type) {\n case actionTypes.RESET_MESSAGES: {\n return {\n ...state,\n allMessages: [],\n };\n }\n case actionTypes.EXIT_CURRENT_CHANNEL: {\n if (action.payload?.url === state.currentOpenChannel?.url) {\n return {\n ...state,\n currentOpenChannel: null,\n };\n }\n return state;\n }\n case actionTypes.SET_CURRENT_CHANNEL: {\n const gottenChannel = action.payload;\n const operators = gottenChannel.operators;\n if (\n !state.isInvalid\n && state.currentOpenChannel\n && state.currentOpenChannel.url\n && (state.currentOpenChannel.url === gottenChannel.url)\n ) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: gottenChannel,\n isInvalid: false,\n operators: operators,\n participants: operators,\n bannedParticipantIds: [],\n mutedParticipantIds: [],\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_START: {\n return {\n ...state,\n loading: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_SUCESS:\n case actionTypes.GET_PREV_MESSAGES_FAIL: {\n const isFailed = (action.type === actionTypes.GET_PREV_MESSAGES_FAIL);\n const {\n currentOpenChannel = {},\n messages = [],\n hasMore,\n lastMessageTimestamp,\n } = action.payload;\n const actionChannelUrl = currentOpenChannel.url;\n const receivedMessages = isFailed ? [] : messages;\n const _hasMore = isFailed ? false : hasMore;\n const _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;\n\n const stateChannel = state.currentOpenChannel;\n const stateChannelUrl = stateChannel.url;\n\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n const filteredAllMessages = state.allMessages.filter((message) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, message.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: _hasMore,\n lastMessageTimestamp: _lastMessageTimestamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_START: {\n const {\n message,\n channel,\n } = action.payload;\n if (channel?.url !== state.currentOpenChannel.url\n || state.allMessages.some((m) => (m as SendableMessageType).reqId === message.reqId)\n // Handing failed first than sending start issue\n ) {\n return state;\n }\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n message,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_SUCCEEDED: {\n const sentMessage = action.payload;\n const newMessages = state.allMessages.map((m) => (\n compareIds((m as SendableMessageType).reqId, sentMessage.reqId) ? sentMessage : m\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SENDING_MESSAGE_FAILED: {\n const sentMessage = action.payload;\n sentMessage.sendingStatus = 'failed';\n if (!(state.allMessages.some((m) => (m as SendableMessageType)?.reqId === sentMessage?.reqId))) {\n // Handling failed first than sending start issue\n return {\n ...state,\n allMessages: [\n ...state.allMessages.filter((m) => !compareIds((m as SendableMessageType).reqId, sentMessage)),\n sentMessage,\n ],\n };\n } else {\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds((m as SendableMessageType).reqId, sentMessage.reqId) ? sentMessage : m\n )),\n };\n }\n }\n case actionTypes.TRIM_MESSAGE_LIST: {\n const { allMessages } = state;\n const messageLimit = action.payload?.messageLimit;\n if (messageLimit\n && messageLimit > 0\n && allMessages?.length > messageLimit\n ) {\n const sliceAt = allMessages.length - messageLimit;\n return {\n ...state,\n allMessages: allMessages.slice(sliceAt),\n };\n }\n return state;\n }\n case actionTypes.RESENDING_MESSAGE_START: {\n const eventedChannel = action.payload.channel;\n const resentMessage = action.payload.message;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds((m as SendableMessageType).reqId, resentMessage.reqId) ? resentMessage : m\n )),\n };\n }\n case actionTypes.FETCH_PARTICIPANT_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedParticipantList = action.payload.users;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, ...fetchedParticipantList],\n // Should check duplication\n };\n }\n case actionTypes.FETCH_BANNED_USER_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedBannedUserList = action.payload.users;\n if (\n (eventedChannel.url !== state.currentOpenChannel.url)\n || !(fetchedBannedUserList.every(user => typeof user.userId === 'string'))\n ) {\n return state;\n }\n return {\n ...state,\n bannedParticipantIds: [\n ...state.bannedParticipantIds,\n ...fetchedBannedUserList.map(user => user.userId),\n ],\n // Should check duplication\n };\n }\n case actionTypes.FETCH_MUTED_USER_LIST: {\n const eventedChannel = action.payload.channel;\n const fetchedMutedUserList = action.payload.users;\n if (\n (eventedChannel.url !== state.currentOpenChannel.url)\n || !(fetchedMutedUserList.every(user => typeof user.userId === 'string'))\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: [\n ...state.mutedParticipantIds,\n ...fetchedMutedUserList.map(user => user.userId),\n ],\n // Should check duplication\n };\n }\n // events\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const eventedChannel = action.payload.channel;\n const receivedMessage = action.payload.message;\n\n const {\n currentOpenChannel,\n } = state;\n\n if (\n !compareIds(eventedChannel.url, currentOpenChannel.url)\n || (\n !(state.allMessages.map(\n (message) => message.messageId).indexOf(receivedMessage.messageId) < 0\n ))\n ) {\n return state;\n }\n\n return {\n ...state,\n allMessages: [...state.allMessages, receivedMessage],\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedMessage = action.payload.message;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((message) => (\n message.isIdentical(updatedMessage)\n ? updatedMessage\n : message\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED: {\n const eventedChannel = action.payload.channel;\n const deletedMessageId = action.payload.messageId;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.filter((message) => (\n !compareIds(message.messageId, deletedMessageId)\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID: {\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds((m as SendableMessageType).reqId, action.payload)\n )),\n };\n }\n case actionTypes.ON_OPERATOR_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedOperators = action.payload.operators;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: eventedChannel,\n operators: updatedOperators,\n };\n }\n case actionTypes.ON_USER_ENTERED: {\n const eventedChannel = action.payload.channel;\n const enteredUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, enteredUser],\n };\n }\n case actionTypes.ON_USER_EXITED: {\n const eventedChannel = action.payload.channel;\n const exitedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: state.participants.filter((participant) => (\n !compareIds(participant.userId, exitedUser.userId)\n )),\n };\n }\n case actionTypes.ON_USER_MUTED: {\n const eventedChannel = action.payload.channel;\n const mutedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.mutedParticipantIds.indexOf(mutedUser.userId) >= 0\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: [...state.mutedParticipantIds, mutedUser.userId],\n };\n }\n case actionTypes.ON_USER_UNMUTED: {\n const eventedChannel = action.payload.channel;\n const unmutedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (\n !currentChannel\n || (currentChannel.url && (currentChannel.url !== eventedChannel.url))\n || state.mutedParticipantIds.indexOf(unmutedUser.userId) < 0\n ) {\n return state;\n }\n return {\n ...state,\n mutedParticipantIds: state.mutedParticipantIds.filter(userId => userId !== unmutedUser.userId),\n };\n }\n case actionTypes.ON_USER_BANNED: {\n const eventedChannel = action.payload.channel;\n const bannedUser = action.payload.user;\n const currentUser = action.payload.currentUser;\n const currentChannel = state.currentOpenChannel;\n if (currentChannel?.url === eventedChannel?.url && bannedUser?.userId === currentUser?.userId) {\n return {\n ...state,\n currentOpenChannel: null,\n };\n } else if (currentChannel?.url === eventedChannel?.url) {\n return {\n ...state,\n bannedParticipantIds: [...state.bannedParticipantIds, bannedUser.userId],\n };\n }\n return state;\n }\n case actionTypes.ON_USER_UNBANNED: {\n const eventedChannel = action.payload.channel;\n const unbannedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (currentChannel?.url === eventedChannel?.url) {\n return {\n ...state,\n bannedParticipantIds: state.bannedParticipantIds.filter((userId) => userId !== unbannedUser.userId),\n };\n }\n return state;\n }\n case actionTypes.ON_CHANNEL_FROZEN: {\n const frozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== frozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: true,\n };\n }\n case actionTypes.ON_CHANNEL_UNFROZEN: {\n const unfrozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== unfrozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: false,\n };\n }\n case actionTypes.ON_CHANNEL_CHANGED: {\n const changedChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== changedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: changedChannel,\n };\n }\n case actionTypes.ON_CHANNEL_DELETED: {\n const deletedChannelUrl = action.payload;\n const currentChannel = state?.currentOpenChannel;\n if (currentChannel?.url === deletedChannelUrl) {\n return {\n ...state,\n currentOpenChannel: null,\n };\n }\n return state;\n }\n case actionTypes.ON_META_DATA_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaDataKeys = action.payload.metaDataKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaCounterKeys = action.payload.metaCounterKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_MENTION_RECEIVED: {\n // const eventedChannel = action.payload.channel;\n // const mentionedMessage = action.payload.message;\n // return {\n // ...state\n // };\n return state;\n }\n default:\n return state;\n }\n}\n","import type { User } from '@sendbird/chat';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { CoreMessageType } from '../../../../utils';\n\nexport interface State {\n allMessages: Array<CoreMessageType>;\n loading: boolean;\n initialized: boolean;\n currentOpenChannel: OpenChannel;\n isInvalid: boolean;\n hasMore: boolean;\n lastMessageTimestamp: number;\n frozen: boolean;\n operators: Array<User>;\n participants: Array<User>;\n bannedParticipantIds: Array<string>;\n mutedParticipantIds: Array<string>;\n}\n\nconst initialState: State = {\n allMessages: [],\n loading: false,\n initialized: false,\n currentOpenChannel: null,\n isInvalid: false,\n hasMore: false,\n lastMessageTimestamp: 0,\n frozen: false,\n operators: [],\n participants: [],\n bannedParticipantIds: [],\n mutedParticipantIds: [],\n};\n\nexport default initialState;\n","import type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\nimport { useEffect } from 'react';\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface DynamicParams {\n channelUrl: string;\n sdkInit: boolean;\n fetchingParticipants: boolean;\n userId: string;\n currentOpenChannel: OpenChannel;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: ({ type, payload }: { type: string, payload: any }) => void;\n}\n\nfunction useSetChannel(\n { channelUrl, sdkInit, fetchingParticipants, userId, currentOpenChannel }: DynamicParams,\n { sdk, logger, messagesDispatcher }: StaticParams,\n): void {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk?.openChannel) {\n if (currentOpenChannel && currentOpenChannel?.exit) {\n currentOpenChannel.exit?.().then(() => {\n logger.info('OpenChannel | useSetChannel: Exit from the previous open channel', currentOpenChannel?.url);\n messagesDispatcher({\n type: messageActionTypes.EXIT_CURRENT_CHANNEL,\n payload: currentOpenChannel,\n });\n });\n }\n logger.info('OpenChannel | useSetChannel: Fetching channel', channelUrl);\n sdk.openChannel.getChannel(channelUrl).then((openChannel) => {\n logger.info('OpenChannel | useSetChannel: Succeeded to fetch channel', openChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: openChannel,\n });\n openChannel.enter().then(() => {\n if (openChannel.isOperator(userId)) { // only operator has a permission to fetch these list\n const bannedParticipantListQuery = openChannel.createBannedUserListQuery();\n const mutedParticipantListQuery = openChannel.createMutedUserListQuery();\n utils.fetchWithListQuery(\n bannedParticipantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_BANNED_USER_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n utils.fetchWithListQuery(\n mutedParticipantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_MUTED_USER_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n } else {\n openChannel.getMyMutedInfo()\n .then((mutedInfo) => {\n if (mutedInfo?.isMuted) {\n messagesDispatcher({\n type: messageActionTypes.FETCH_MUTED_USER_LIST,\n payload: {\n channel: openChannel,\n users: [sdk?.currentUser],\n },\n });\n }\n });\n }\n if (fetchingParticipants) {\n // fetch participants list\n const participantListQuery = openChannel.createParticipantListQuery({\n limit: openChannel.participantCount,\n });\n utils.fetchWithListQuery(\n participantListQuery,\n logger,\n (users) => {\n messagesDispatcher({\n type: messageActionTypes.FETCH_PARTICIPANT_LIST,\n payload: {\n channel: openChannel,\n users,\n },\n });\n },\n );\n }\n }).catch((error) => {\n logger.warning('OpenChannel | useSetChannel: Failed to enter channel', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n payload: null,\n });\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useSetChannel: Failed to fetch channel', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n payload: null,\n });\n });\n }\n }, [channelUrl, sdkInit, fetchingParticipants]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\nimport { ChannelType } from '@sendbird/chat';\nimport { OpenChannel, OpenChannelHandler, SendbirdOpenChat } from '@sendbird/chat/openChannel';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport uuidv4 from '../../../../utils/uuid';\nimport { scrollIntoLast } from '../utils';\nimport { Logger } from '../../../../lib/SendbirdState';\n\ntype MessagesDispatcherType = {\n type: string, payload: any,\n};\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n checkScrollBottom: () => boolean;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n scrollRef: React.RefObject<HTMLElement>;\n messagesDispatcher: (props: MessagesDispatcherType) => void;\n}\n\nfunction useHandleChannelEvents(\n { currentOpenChannel, checkScrollBottom }: DynamicParams,\n { sdk, logger, messagesDispatcher, scrollRef }: StaticParams,\n): void {\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (currentOpenChannel && currentOpenChannel.url && sdk?.openChannel?.addOpenChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Setup evnet handler', messageReceiverId);\n const channelHandlerParams: OpenChannelHandler = {\n onMessageReceived: (channel, message) => {\n const scrollToEnd = checkScrollBottom();\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n if (scrollToEnd) {\n try {\n setTimeout(() => {\n scrollIntoLast(0, scrollRef);\n });\n } catch (error) {\n logger.warning('OpenChannel | onMessageReceived | scroll to end failed');\n }\n }\n },\n onMessageUpdated: (channel, message) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n },\n onMessageDeleted: (channel, messageId) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', { channelUrl, messageId });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: { channel, messageId },\n });\n },\n onOperatorUpdated: (channel, operators) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', { channelUrl, operators });\n messagesDispatcher({\n type: messageActionTypes.ON_OPERATOR_UPDATED,\n payload: { channel, operators },\n });\n },\n onUserEntered: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_ENTERED,\n payload: { channel, user },\n });\n },\n onUserExited: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserExited', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_EXITED,\n payload: { channel, user },\n });\n },\n onUserMuted: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: { channel, user },\n });\n },\n onUserUnmuted: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNMUTED,\n payload: { channel, user },\n });\n },\n onUserBanned: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_BANNED,\n payload: { channel, user, currentUser: sdk?.currentUser },\n });\n },\n onUserUnbanned: (channel, user) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNBANNED,\n payload: { channel, user },\n });\n },\n onChannelFrozen: (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n },\n onChannelUnfrozen: (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n },\n onChannelChanged: (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n },\n onMetaDataCreated: (channel, metaData) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_CREATED,\n payload: { channel, metaData },\n });\n },\n onMetaDataUpdated: (channel, metaData) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_UPDATED,\n payload: { channel, metaData },\n });\n },\n onMetaDataDeleted: (channel, metaDataKeys) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', { channelUrl, metaDataKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_DELETED,\n payload: { channel, metaDataKeys },\n });\n },\n onMetaCounterCreated: (channel, metaCounter) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_CREATED,\n payload: { channel, metaCounter },\n });\n },\n onMetaCounterUpdated: (channel, metaCounter) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_UPDATED,\n payload: { channel, metaCounter },\n });\n },\n onMetaCounterDeleted: (channel, metaCounterKeys) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', { channelUrl, metaCounterKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_DELETED,\n payload: { channel, metaCounterKeys },\n });\n },\n onMentionReceived: (channel, message) => {\n const channelUrl = channel?.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MENTION_RECEIVED,\n payload: { channel, message },\n });\n },\n onChannelDeleted: (channelUrl, channelType) => {\n if (channelType === ChannelType.OPEN && currentOpenChannel?.url === channelUrl) {\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n }\n },\n };\n\n const ChannelHandler = new OpenChannelHandler(channelHandlerParams);\n\n sdk?.openChannel?.addOpenChannelHandler(messageReceiverId, ChannelHandler);\n }\n\n return () => {\n if (sdk?.openChannel?.removeOpenChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);\n sdk.openChannel.removeOpenChannelHandler(messageReceiverId);\n }\n };\n }, [currentOpenChannel]);\n}\n\nexport default useHandleChannelEvents;\n","import { MessageListParams } from '@sendbird/chat/message';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport React, { useEffect } from 'react';\n\nimport type { CustomUseReducerDispatcher, Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { scrollIntoLast } from '../utils';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n userFilledMessageListParams?: Record<string, any>;\n}\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: CustomUseReducerDispatcher;\n scrollRef: React.RefObject<HTMLElement>;\n}\n\nfunction useInitialMessagesFetch(\n { currentOpenChannel, userFilledMessageListParams }: DynamicParams,\n { logger, messagesDispatcher, scrollRef }: StaticParams,\n): void {\n useEffect(() => {\n logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n payload: null,\n });\n\n if (currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {\n const messageListParams: MessageListParams = {\n nextResultSize: 0,\n prevResultSize: 30,\n isInclusive: true,\n includeReactions: false,\n };\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach((key) => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | useInitialMessagesFetch: Used customizedMessageListParams');\n }\n\n logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages', { currentOpenChannel, messageListParams });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n payload: null,\n });\n currentOpenChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then((messages) => {\n logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => { scrollIntoLast(0, scrollRef); });\n }).catch((error) => {\n logger.error('OpenChannel | useInitialMessagesFetch: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n });\n }\n }, [currentOpenChannel, userFilledMessageListParams]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useCallback } from 'react';\nimport type { MessageListParams } from '@sendbird/chat/message';\nimport type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport type { CustomUseReducerDispatcher, Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n lastMessageTimestamp: number;\n fetchMore?: boolean;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: CustomUseReducerDispatcher;\n hasMore: boolean;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n userFilledMessageListParams?: Record<string, any>;\n}\ntype CallbackReturn = (callback: () => void) => void;\n\nfunction useScrollCallback(\n { currentOpenChannel, lastMessageTimestamp, fetchMore }: DynamicParams,\n { sdk, logger, messagesDispatcher, hasMore, userFilledMessageListParams }: StaticParams,\n): CallbackReturn {\n return useCallback((callback) => {\n if (fetchMore && hasMore) {\n logger.info('OpenChannel | useScrollCallback: start');\n const messageListParams: MessageListParams = {\n prevResultSize: 30,\n includeReactions: false,\n nextResultSize: 0,\n };\n\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach((key) => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | useScrollCallback: Used userFilledMessageListParams', userFilledMessageListParams);\n }\n\n logger.info('OpenChannel | useScrollCallback: Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(lastMessageTimestamp || new Date().getTime(), messageListParams).then((messages) => {\n logger.info('OpenChannel | useScrollCallback: Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => {\n callback();\n });\n }).catch((error) => {\n logger.error('OpenChannel | useScrollCallback: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n });\n }\n }, [currentOpenChannel, lastMessageTimestamp, fetchMore, sdk]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\nimport { Logger } from '../../../..';\n\ninterface DynamicParams {\n conversationScrollRef: React.RefObject<HTMLDivElement>;\n}\ninterface StaticParams {\n logger: Logger;\n}\n\nfunction useCheckScrollBottom(\n { conversationScrollRef }: DynamicParams,\n { logger }: StaticParams,\n): () => boolean {\n return useCallback(() => {\n let isBottom = true;\n if (conversationScrollRef && conversationScrollRef?.current) {\n try {\n const conversationScroll = conversationScrollRef.current;\n isBottom = conversationScroll.scrollHeight <= conversationScroll.scrollTop + conversationScroll.clientHeight;\n } catch (error) {\n logger.error('OpenChannel | useCheckScrollBottom', error);\n }\n }\n return isBottom;\n }, [conversationScrollRef]);\n}\n\nexport default useCheckScrollBottom;\n","import type { UserMessageCreateParams } from '@sendbird/chat/message';\nimport type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport React, { useCallback } from 'react';\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n onBeforeSendUserMessage: (text: string) => UserMessageCreateParams;\n checkScrollBottom: () => boolean;\n messageInputRef: React.RefObject<HTMLInputElement>;\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: (props: { type: string, payload: any }) => void;\n scrollRef: React.RefObject<HTMLElement>;\n}\n\nfunction useSendMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef }: DynamicParams,\n { sdk, logger, messagesDispatcher, scrollRef }: StaticParams,\n): () => void {\n return useCallback(() => {\n if (sdk) {\n const text = messageInputRef.current.innerText;\n const createParamsDefault = (txt: string | number): UserMessageCreateParams => {\n const message = txt as string;\n const params: UserMessageCreateParams = {\n message: message,\n };\n return params;\n };\n const createCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';\n if (createCustomParams) {\n logger.info('OpenChannel | useSendMessageCallback: Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);\n logger.info('OpenChannel | useSendMessageCallback: Sending message has started', params);\n\n const isBottom = checkScrollBottom();\n let pendingMsg = null;\n currentOpenChannel.sendUserMessage(params)\n .onPending((pendingMessage) => {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: pendingMessage,\n channel: currentOpenChannel,\n },\n });\n pendingMsg = pendingMessage;\n })\n .onSucceeded((message) => {\n logger.info('OpenChannel | useSendMessageCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast(0, scrollRef);\n });\n }\n })\n .onFailed((error) => {\n logger.warning('OpenChannel | useSendMessageCallback: Sending message failed', error);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: pendingMsg,\n });\n // https://sendbird.com/docs/chat/v3/javascript/guides/error-codes#2-server-error-codes\n // TODO: Do we need to handle the error cases?\n // @ts-ignore\n if (error?.code === 900041) {\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: {\n channel: currentOpenChannel,\n user: sdk.currentUser,\n },\n });\n }\n });\n }\n }, [currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef]);\n}\n\nexport default useSendMessageCallback;\n","import { useCallback } from 'react';\nimport type { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\nimport type { FileMessageCreateParams } from '@sendbird/chat/message';\n\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n onBeforeSendFileMessage: (file: File) => FileMessageCreateParams;\n checkScrollBottom: () => boolean;\n imageCompression?: {\n compressionRate?: number,\n resizingWidth?: number | string,\n resizingHeight?: number | string,\n };\n}\ninterface StaticParams {\n sdk: SendbirdOpenChat;\n logger: Logger;\n messagesDispatcher: (props: { type: string, payload: any }) => void;\n}\n\ntype CallbackReturn = (files: Array<File> | File) => void;\n\nfunction useFileUploadCallback({\n currentOpenChannel,\n checkScrollBottom,\n imageCompression = {},\n onBeforeSendFileMessage,\n}: DynamicParams,\n{ sdk, logger, messagesDispatcher, scrollRef }: StaticParams,\n): CallbackReturn {\n return useCallback((files) => {\n if (sdk) {\n /**\n * OpenChannel does not currently support file lists.\n * However, this change is made to maintain interface consistency with group channels.\n */\n const file = Array.isArray(files) ? files[0] : files;\n const {\n compressionRate,\n resizingWidth,\n resizingHeight,\n } = imageCompression;\n const createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';\n\n const compressibleFileType = (file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg');\n const compressibleRatio = (compressionRate > 0) && (compressionRate < 1);\n // pxToNumber returns null if values are invalid\n const compressibleDiamensions = utils.pxToNumber(resizingWidth)\n || utils.pxToNumber(resizingHeight);\n\n const canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);\n\n const createParamsDefault = (file_): FileMessageCreateParams => {\n const params: FileMessageCreateParams = {};\n params.file = file_;\n return params;\n };\n\n if (canCompressImage) { // Using image compression\n try {\n const image: HTMLImageElement = document.createElement('img');\n image.src = URL.createObjectURL(file);\n image.onload = () => {\n URL.revokeObjectURL(image.src);\n const canvas = document.createElement('canvas');\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n let targetWidth = utils.pxToNumber(resizingWidth) || imageWidth;\n let targetHeight = utils.pxToNumber(resizingHeight) || imageHeight;\n\n // In canvas.toBlob(callback, mimeType, qualityArgument)\n // qualityArgument doesnt work\n // so in case compressibleDiamensions are not present, we use ratio\n if (file.type === 'image/png' && !compressibleDiamensions) {\n targetWidth *= compressionRate;\n targetHeight *= compressionRate;\n }\n\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0, targetWidth, targetHeight);\n context.canvas.toBlob(\n (newImageBlob) => {\n const compressedFile = new File([newImageBlob], file.name, { type: file.type });\n if (createCustomParams) {\n logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(compressedFile) : createParamsDefault(compressedFile);\n logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);\n\n const isBottom = checkScrollBottom();\n currentOpenChannel.sendFileMessage(params)\n .onPending((pendingMessage) => {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n },\n });\n })\n .onSucceeded((message) => {\n logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast(0, scrollRef);\n });\n }\n })\n .onFailed((error, message) => {\n logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', { message, error });\n // @ts-ignore\n message.localUrl = URL.createObjectURL(file);\n // @ts-ignore\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n });\n },\n file.type,\n compressionRate,\n );\n };\n } catch (error) {\n logger.warning('OpenChannel | useFileUploadCallback: Sending file message with image compression failed', error);\n }\n } else { // Not using image compression\n if (createCustomParams) {\n logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);\n logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);\n\n const isBottom = checkScrollBottom();\n currentOpenChannel.sendFileMessage(params)\n .onPending((pendingMessage) => {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n },\n });\n })\n .onSucceeded((message) => {\n logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n if (isBottom) {\n setTimeout(() => {\n utils.scrollIntoLast(0, scrollRef);\n });\n }\n })\n .onFailed((error, message) => {\n logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', { message, error });\n // @ts-ignore\n message.localUrl = URL.createObjectURL(file);\n // @ts-ignore\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n });\n }\n }\n }, [currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression]);\n}\n\nexport default useFileUploadCallback;\n","import type { UserMessageUpdateParams } from '@sendbird/chat/message';\n\nimport type { Logger } from '../../../../lib/SendbirdState';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n onBeforeSendUserMessage?: (text) => UserMessageUpdateParams;\n}\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: (props: { type: string, payload :any }) => void;\n}\ntype CallbackReturn = (messageId, text, callback) => void;\n\nfunction useUpdateMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage }: DynamicParams,\n { logger, messagesDispatcher }: StaticParams,\n): CallbackReturn {\n return useCallback((messageId, text, callback) => {\n const createParamsDefault = (txt) => {\n const params = {\n message: txt,\n };\n return params;\n };\n\n if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {\n logger.info('OpenChannel | useUpdateMessageCallback: Creating params using onBeforeUpdateUserMessage');\n }\n const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);\n currentOpenChannel.updateUserMessage(messageId, params)\n .then((message) => {\n if (callback) {\n callback();\n }\n logger.info('OpenChannel | useUpdateMessageCallback: Updating message succeeded', { message, params });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentOpenChannel,\n message,\n },\n });\n });\n }, [currentOpenChannel, onBeforeSendUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import type { UserMessage } from '@sendbird/chat/message';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { SendableMessageType } from '../../../../utils';\nimport { Logger } from '../../../../lib/SendbirdState';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n}\n\ntype MessagesDispatcherType = {\n type: string, payload: any,\n};\n\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: (dispatcher: MessagesDispatcherType) => void;\n}\n\ntype CallbackReturn = (\n message: SendableMessageType,\n callback?: () => void,\n) => void;\n\nfunction useDeleteMessageCallback(\n { currentOpenChannel }: DynamicParams,\n { logger, messagesDispatcher }: StaticParams,\n): CallbackReturn {\n return useCallback((message, callback) => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);\n const { sendingStatus } = message;\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState', sendingStatus);\n\n if (sendingStatus === 'failed' || sendingStatus === 'pending') {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (callback) {\n callback();\n }\n } else {\n if (!(message.messageType === 'file' || message.messageType === 'user')) {\n return;\n }\n const messageToDelete = message as UserMessage;\n currentOpenChannel.deleteMessage(messageToDelete).then(() => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message on server', sendingStatus);\n if (callback) {\n callback();\n }\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: {\n channel: currentOpenChannel,\n messageId: message.messageId,\n },\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);\n });\n }\n }, [currentOpenChannel]);\n}\n\nexport default useDeleteMessageCallback;\n","import type { FileMessage } from '@sendbird/chat/message';\nimport type { OpenChannel } from '@sendbird/chat/openChannel';\nimport { useCallback } from 'react';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { SendableMessageType } from '../../../../utils';\nimport { Logger } from '../../../../lib/SendbirdState';\n\ninterface DynamicParams {\n currentOpenChannel: OpenChannel;\n}\n\ntype MessagesDispatcherType = { type: string, payload: any };\n\ninterface StaticParams {\n logger: Logger;\n messagesDispatcher: (dispatcher: MessagesDispatcherType) => void;\n}\ntype CallbackReturn = (failedMessage: SendableMessageType) => void;\n\nfunction useResendMessageCallback(\n { currentOpenChannel }: DynamicParams,\n { logger, messagesDispatcher }: StaticParams,\n): CallbackReturn {\n return useCallback((failedMessage) => {\n logger.info('OpenChannel | useResendMessageCallback: Resending message has started', failedMessage);\n // eslint-disable-next-line no-param-reassign\n const { messageType, file } = failedMessage as FileMessage;\n if (typeof failedMessage?.isResendable === 'boolean' && failedMessage.isResendable) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESENDING_MESSAGE_START,\n payload: {\n channel: currentOpenChannel,\n message: failedMessage,\n },\n });\n\n // userMessage\n if (messageType === 'user' && failedMessage.messageType === 'user') {\n currentOpenChannel.resendUserMessage(failedMessage).then((message) => {\n logger.info('OpenChannel | useResendMessageCallback: Reseding message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useResendMessageCallback: Resending message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n });\n }\n\n // fileMessage\n if (messageType === 'file' && failedMessage.messageType === 'file') {\n currentOpenChannel.resendFileMessage(failedMessage, file).then((message) => {\n logger.info('OpenChannel | useResendMessageCallback: Resending file message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }).catch((error) => {\n logger.warning('OpenChannel | useResendMessageCallback: Resending file message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('OpenChannel | useResendMessageCallback: Message is not resendable');\n logger.warning('OpenChannel | useResendMessageCallback: Message is not resendable', failedMessage);\n }\n }, [currentOpenChannel]);\n}\n\nexport default useResendMessageCallback;\n","import { useEffect, useState } from 'react';\nimport { Logger } from '../../../..';\nimport * as messageActionTypes from '../dux/actionTypes';\n\ninterface DynamicParams {\n messagesLength: number;\n messageLimit: number;\n}\n\ntype MessagesDispatcherType = {\n type: string,\n payload: { messageLimit: number }\n};\n\ninterface StaticParams {\n messagesDispatcher: (dispatcher: MessagesDispatcherType) => void;\n logger: Logger;\n}\n\nconst THROTTLE_TIMER = 5000;\n\n// to trim message list so that we wont keep thousands of messages in memory\n// We are throttling here; not debouncing\n// it will be called once very 5 sec if messagesLength, messageLimit changes\n// we check if messagesLength > messageLimit before dispatching action\nfunction useTrimMessageList(\n { messagesLength, messageLimit }: DynamicParams,\n { messagesDispatcher, logger }: StaticParams,\n): void {\n const [inProgress, setInProgress] = useState(false);\n useEffect(() => {\n if (inProgress) {\n return;\n }\n if (typeof messagesLength === 'number' && messagesLength > messageLimit) {\n logger.info('Trimming MessageList');\n messagesDispatcher({\n type: messageActionTypes.TRIM_MESSAGE_LIST,\n payload: { messageLimit },\n });\n }\n setInProgress(true);\n setTimeout(() => { setInProgress(false); }, THROTTLE_TIMER);\n }, [messagesLength, messageLimit]);\n}\n\nexport default useTrimMessageList;\n","import React, {\n useRef,\n useEffect,\n useReducer,\n useMemo,\n} from 'react';\nimport type { FileMessageCreateParams, UserMessageCreateParams } from '@sendbird/chat/message';\nimport type { SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport * as utils from './utils';\nimport { UserProfileProvider } from '../../../lib/UserProfileContext';\nimport { RenderUserProfileProps } from '../../../types';\nimport messagesReducer from './dux/reducers';\nimport messagesInitialState, {\n State as MessageStoreState,\n} from './dux/initialState';\nimport * as messageActionTypes from './dux/actionTypes';\nimport { scrollIntoLast } from './utils';\nimport topics from '../../../lib/pubSub/topics';\n\n// hooks\nimport useSetChannel from './hooks/useSetChannel';\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useCheckScrollBottom from './hooks/useCheckScrollBottom';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useFileUploadCallback from './hooks/useFileUploadCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\nimport useTrimMessageList from './hooks/useTrimMessageList';\nimport useSendbirdStateContext from '../../../hooks/useSendbirdStateContext';\n\ntype OpenChannelQueries = {\n // https://sendbird.github.io/core-sdk-javascript/module-model_params_messageListParams-MessageListParams.html\n messageListParams?: {\n replyType?: string,\n messageType?: string,\n prevResultSize?: number,\n nextResultSize?: number,\n reverse?: boolean,\n isInclusive?: boolean,\n includeMetaArray?: boolean,\n // UIKit doesn't support emoji reaction in OpenChannel\n // includeReactions?: boolean,\n // UIKit doesn't support message threading in OpenChannel\n // includeThreadInfo?: boolean,\n includeParentMessageInfo?: boolean,\n showSubchannelMessagesOnly?: boolean,\n customTypes?: Array<string>,\n senderUserIds?: Array<string>,\n },\n};\n\nexport interface OpenChannelProviderProps {\n channelUrl: string;\n children?: React.ReactElement;\n isMessageGroupingEnabled?: boolean;\n queries?: OpenChannelQueries;\n messageLimit?: number;\n onBeforeSendUserMessage?(text: string): UserMessageCreateParams;\n onBeforeSendFileMessage?(file_: File): FileMessageCreateParams;\n onChatHeaderActionClick?(): void;\n onBackClick?(): void;\n disableUserProfile?: boolean;\n renderUserProfile?: (props: RenderUserProfileProps) => React.ReactElement;\n}\n\ninterface OpenChannelInterface extends OpenChannelProviderProps, MessageStoreState {\n // derived/utils\n messageInputRef: React.RefObject<HTMLInputElement>;\n conversationScrollRef: React.RefObject<HTMLDivElement>;\n disabled: boolean;\n amIBanned: boolean;\n amIMuted: boolean;\n amIOperator: boolean;\n fetchMore: boolean;\n checkScrollBottom: () => boolean;\n onScroll: (callback: () => void) => void;\n handleSendMessage: any;\n handleFileUpload: any;\n updateMessage: any;\n deleteMessage: any;\n resendMessage: any;\n}\n\nconst OpenChannelContext = React.createContext<OpenChannelInterface | null>(undefined);\n\nconst OpenChannelProvider: React.FC<OpenChannelProviderProps> = (props: OpenChannelProviderProps) => {\n const {\n channelUrl,\n children,\n isMessageGroupingEnabled = true,\n queries,\n onBeforeSendUserMessage,\n messageLimit,\n onBeforeSendFileMessage,\n onChatHeaderActionClick,\n onBackClick,\n } = props;\n\n // We didn't decide to support fetching participant list\n const fetchingParticipants = false;\n const globalStore = useSendbirdStateContext();\n\n const sdk = globalStore?.stores?.sdkStore?.sdk as SendbirdOpenChat;\n const sdkInit = globalStore?.stores?.sdkStore?.initialized;\n const user = globalStore?.stores?.userStore?.user;\n const config = globalStore?.config;\n const {\n userId,\n isOnline,\n logger,\n pubSub,\n imageCompression,\n } = config;\n\n // hook variables\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const {\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n operators,\n bannedParticipantIds,\n mutedParticipantIds,\n } = messagesStore;\n // ref\n const messageInputRef = useRef(null); // useSendMessageCallback\n const conversationScrollRef = useRef(null); // useScrollAfterSendMessageCallback\n\n // const\n const userFilledMessageListParams = queries?.messageListParams;\n const disabled = !initialized\n || !isOnline\n || utils.isDisabledBecauseFrozen(currentOpenChannel, userId)\n || utils.isDisabledBecauseMuted(mutedParticipantIds, userId);\n\n // useMemo\n const amIBanned = useMemo(() => {\n return bannedParticipantIds.indexOf(user.userId) >= 0;\n }, [channelUrl, bannedParticipantIds, user]);\n const amIMuted = useMemo(() => {\n return mutedParticipantIds.indexOf(user.userId) >= 0;\n }, [channelUrl, mutedParticipantIds, user]);\n const amIOperator = useMemo(() => {\n return operators.map(operator => operator.userId).indexOf(user.userId) >= 0;\n }, [channelUrl, operators, user]);\n\n // use hooks\n useSetChannel(\n { channelUrl, sdkInit, fetchingParticipants, userId, currentOpenChannel },\n { sdk, logger, messagesDispatcher },\n );\n\n const checkScrollBottom = useCheckScrollBottom(\n { conversationScrollRef },\n { logger },\n );\n useHandleChannelEvents(\n { currentOpenChannel, checkScrollBottom },\n { sdk, logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n useInitialMessagesFetch(\n { currentOpenChannel, userFilledMessageListParams },\n { logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n\n const fetchMore: boolean = utils.shouldFetchMore(allMessages?.length, messageLimit);\n // donot fetch more for streaming\n const onScroll = useScrollCallback(\n { currentOpenChannel, lastMessageTimestamp, fetchMore },\n { sdk, logger, messagesDispatcher, hasMore, userFilledMessageListParams },\n );\n const handleSendMessage = useSendMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef },\n { sdk, logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n const handleFileUpload = useFileUploadCallback(\n { currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression },\n { sdk, logger, messagesDispatcher, scrollRef: conversationScrollRef },\n );\n const updateMessage = useUpdateMessageCallback(\n { currentOpenChannel, onBeforeSendUserMessage },\n { logger, messagesDispatcher },\n );\n const deleteMessage = useDeleteMessageCallback(\n { currentOpenChannel },\n { logger, messagesDispatcher },\n );\n const resendMessage = useResendMessageCallback(\n { currentOpenChannel },\n { logger, messagesDispatcher },\n );\n\n useTrimMessageList(\n { messagesLength: allMessages?.length, messageLimit },\n { messagesDispatcher, logger },\n );\n\n // handle API calls from withSendbird\n useEffect(() => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) {\n return;\n }\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast(0, conversationScrollRef);\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: { message, channel },\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast(0, conversationScrollRef);\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: { message, channel },\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel?.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return () => {\n if (subscriber) {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n }\n };\n }, [channelUrl, sdkInit]);\n\n return (\n <OpenChannelContext.Provider value={{\n // props\n channelUrl,\n children,\n isMessageGroupingEnabled,\n queries,\n onBeforeSendUserMessage,\n messageLimit,\n onBeforeSendFileMessage,\n onChatHeaderActionClick,\n onBackClick,\n // store\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n operators,\n bannedParticipantIds,\n mutedParticipantIds,\n // derived/utils\n messageInputRef,\n conversationScrollRef,\n disabled,\n amIBanned,\n amIMuted,\n amIOperator,\n checkScrollBottom,\n fetchMore,\n onScroll,\n handleSendMessage,\n handleFileUpload,\n updateMessage,\n deleteMessage,\n resendMessage,\n }}>\n <UserProfileProvider\n isOpenChannel\n renderUserProfile={props?.renderUserProfile}\n disableUserProfile={props?.disableUserProfile ?? config?.disableUserProfile}\n >\n {children}\n </UserProfileProvider>\n </OpenChannelContext.Provider>\n );\n};\n\nexport type UseOpenChannelType = () => OpenChannelInterface;\nconst useOpenChannelContext: UseOpenChannelType = () => React.useContext(OpenChannelContext);\n\nexport {\n OpenChannelProvider,\n useOpenChannelContext,\n};\n"],"names":["getMessageCreatedAt","message","format","createdAt","shouldFetchMore","messageLength","maxMessages","scrollIntoLast","initialTry","arguments","length","undefined","scrollRef","MAX_TRIES","currentTry","scrollDOM","current","document","querySelector","scrollTop","scrollHeight","error","setTimeout","isSameGroup","comparingMessage","_sender","_sender2","_message_$sender","_comparingMessage_$se","messageType","sender","userId","message_","comparingMessage_","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","kFormatter","num","Math","abs","toFixed","isOperator","openChannel","operators","map","operator","indexOf","isDisabledBecauseFrozen","isFrozen","isDisabledBecauseMuted","mutedParticipantIds","fetchWithListQuery","listQuery","logger","eachQueryNextCallback","fetchList","query","hasNext","next","then","users","catch","warning","info","pxToNumber","px","parsed","Number","parseFloat","isNaN","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","RESET_MESSAGES","EXIT_CURRENT_CHANNEL","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","GET_PREV_MESSAGES_FAIL","SENDING_MESSAGE_FAILED","SENDING_MESSAGE_SUCCEEDED","SENDING_MESSAGE_START","RESENDING_MESSAGE_START","FETCH_PARTICIPANT_LIST","FETCH_BANNED_USER_LIST","FETCH_MUTED_USER_LIST","TRIM_MESSAGE_LIST","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","ON_OPERATOR_UPDATED","ON_USER_ENTERED","ON_USER_EXITED","ON_USER_MUTED","ON_USER_UNMUTED","ON_USER_BANNED","ON_USER_UNBANNED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_CHANNEL_CHANGED","ON_CHANNEL_DELETED","ON_META_DATA_CREATED","ON_META_DATA_UPDATED","ON_META_DATA_DELETED","ON_META_COUNTERS_CREATED","ON_META_COUNTERS_UPDATED","ON_META_COUNTERS_DELETED","ON_MENTION_RECEIVED","reducer","state","action","type","actionTypes","_objectSpread","allMessages","_action$payload","_state$currentOpenCha","payload","url","currentOpenChannel","gottenChannel","isInvalid","participants","bannedParticipantIds","loading","isFailed","messages","hasMore","lastMessageTimestamp","actionChannelUrl","receivedMessages","_hasMore","_lastMessageTimestamp","stateChannel","stateChannelUrl","filteredAllMessages","filter","find","_ref","messageId","compareIds","initialized","channel","some","m","reqId","sentMessage","newMessages","_action$payload2","messageLimit","sliceAt","slice","eventedChannel","resentMessage","fetchedParticipantList","fetchedBannedUserList","every","user","fetchedMutedUserList","receivedMessage","updatedMessage","currentChannel","isIdentical","deletedMessageId","updatedOperators","enteredUser","exitedUser","participant","mutedUser","unmutedUser","bannedUser","currentUser","unbannedUser","frozenChannel","frozen","unfrozenChannel","changedChannel","deletedChannelUrl","initialState","useSetChannel","_ref2","channelUrl","sdkInit","fetchingParticipants","sdk","messagesDispatcher","useEffect","exit","_currentOpenChannel$e","call","messageActionTypes","getChannel","enter","bannedParticipantListQuery","createBannedUserListQuery","mutedParticipantListQuery","createMutedUserListQuery","utils","getMyMutedInfo","mutedInfo","isMuted","participantListQuery","createParticipantListQuery","limit","participantCount","useHandleChannelEvents","checkScrollBottom","_sdk$openChannel","messageReceiverId","uuidv4","addOpenChannelHandler","_sdk$openChannel2","channelHandlerParams","onMessageReceived","scrollToEnd","onMessageUpdated","onMessageDeleted","onOperatorUpdated","onUserEntered","onUserExited","onUserMuted","onUserUnmuted","onUserBanned","onUserUnbanned","onChannelFrozen","onChannelUnfrozen","onChannelChanged","onMetaDataCreated","metaData","onMetaDataUpdated","onMetaDataDeleted","metaDataKeys","onMetaCounterCreated","metaCounter","onMetaCounterUpdated","onMetaCounterDeleted","metaCounterKeys","onMentionReceived","onChannelDeleted","channelType","ChannelType","OPEN","ChannelHandler","OpenChannelHandler","_sdk$openChannel3","removeOpenChannelHandler","useInitialMessagesFetch","userFilledMessageListParams","getMessagesByTimestamp","messageListParams","nextResultSize","prevResultSize","isInclusive","includeReactions","Object","keys","forEach","key","Date","getTime","useScrollCallback","fetchMore","useCallback","callback","useCheckScrollBottom","conversationScrollRef","isBottom","conversationScroll","clientHeight","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","text","innerText","createParamsDefault","txt","params","createCustomParams","pendingMsg","sendUserMessage","onPending","pendingMessage","onSucceeded","onFailed","code","useFileUploadCallback","imageCompression","onBeforeSendFileMessage","files","file","Array","isArray","compressionRate","resizingWidth","resizingHeight","compressibleFileType","compressibleRatio","compressibleDiamensions","canCompressImage","file_","image","createElement","src","URL","createObjectURL","onload","revokeObjectURL","canvas","imageWidth","naturalWidth","width","imageHeight","naturalHeight","height","targetWidth","targetHeight","context","getContext","drawImage","toBlob","newImageBlob","compressedFile","File","name","sendFileMessage","requestState","localUrl","useUpdateMessageCallback","updateUserMessage","useDeleteMessageCallback","messageToDelete","deleteMessage","useResendMessageCallback","failedMessage","isResendable","resendUserMessage","resendFileMessage","console","THROTTLE_TIMER","useTrimMessageList","messagesLength","inProgress","setInProgress","useState","OpenChannelContext","React","createContext","OpenChannelProvider","props","_globalStore$stores","_globalStore$stores$s","_globalStore$stores2","_globalStore$stores2$","_globalStore$stores3","_globalStore$stores3$","_props$disableUserPro","children","isMessageGroupingEnabled","queries","onChatHeaderActionClick","onBackClick","globalStore","useSendbirdStateContext","stores","sdkStore","userStore","config","isOnline","pubSub","messagesStore","useReducer","messagesReducer","messagesInitialState","useRef","disabled","amIBanned","useMemo","amIMuted","amIOperator","onScroll","handleSendMessage","handleFileUpload","updateMessage","resendMessage","subscriber","Map","subscribe","set","topics","SEND_USER_MESSAGE","msg","SEND_MESSAGE_START","SEND_FILE_MESSAGE","UPDATE_USER_MESSAGE","fromSelector","DELETE_MESSAGE","s","remove","_unused","Provider","value","UserProfileProvider","isOpenChannel","renderUserProfile","disableUserProfile","useOpenChannelContext","useContext"],"mappings":"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"}
|