@100mslive/react-native-room-kit 1.0.7 → 1.0.8
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/lib/commonjs/HMSRoomSetup.js +4 -1
- package/lib/commonjs/HMSRoomSetup.js.map +1 -1
- package/lib/commonjs/Icons/Chat/assets/chat-on.png +0 -0
- package/lib/commonjs/Icons/Chat/assets/chat-on@2x.png +0 -0
- package/lib/commonjs/Icons/Chat/assets/chat-on@3x.png +0 -0
- package/lib/commonjs/Icons/Chat/index.js +4 -3
- package/lib/commonjs/Icons/Chat/index.js.map +1 -1
- package/lib/commonjs/Icons/NoEntry/assets/no-entry.png +0 -0
- package/lib/commonjs/Icons/NoEntry/assets/no-entry@2x.png +0 -0
- package/lib/commonjs/Icons/NoEntry/assets/no-entry@3x.png +0 -0
- package/lib/commonjs/Icons/NoEntry/index.js +33 -0
- package/lib/commonjs/Icons/NoEntry/index.js.map +1 -0
- package/lib/commonjs/Icons/PauseCircle/assets/pause-circle.png +0 -0
- package/lib/commonjs/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
- package/lib/commonjs/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
- package/lib/commonjs/Icons/PauseCircle/index.js +29 -0
- package/lib/commonjs/Icons/PauseCircle/index.js.map +1 -0
- package/lib/commonjs/Icons/Pin/assets/unpin.png +0 -0
- package/lib/commonjs/Icons/Pin/assets/unpin@2x.png +0 -0
- package/lib/commonjs/Icons/Pin/assets/unpin@3x.png +0 -0
- package/lib/commonjs/Icons/Pin/index.js +2 -1
- package/lib/commonjs/Icons/Pin/index.js.map +1 -1
- package/lib/commonjs/Icons/Recording/assets/recording-pause.png +0 -0
- package/lib/commonjs/Icons/Recording/assets/recording-pause@2x.png +0 -0
- package/lib/commonjs/Icons/Recording/assets/recording-pause@3x.png +0 -0
- package/lib/commonjs/Icons/Recording/index.js.map +1 -1
- package/lib/commonjs/Icons/index.js +22 -0
- package/lib/commonjs/Icons/index.js.map +1 -1
- package/lib/commonjs/components/BottomSheet.js.map +1 -1
- package/lib/commonjs/components/Chat/ChatFilterBottomSheet.js +36 -0
- package/lib/commonjs/components/Chat/ChatFilterBottomSheet.js.map +1 -0
- package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js +90 -23
- package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -1
- package/lib/commonjs/components/Chat/ChatFilterItem.js +10 -7
- package/lib/commonjs/components/Chat/ChatFilterItem.js.map +1 -1
- package/lib/commonjs/components/Chat/ChatFilterView.js +54 -45
- package/lib/commonjs/components/Chat/ChatFilterView.js.map +1 -1
- package/lib/commonjs/components/Chat/ChatList.js +13 -6
- package/lib/commonjs/components/Chat/ChatList.js.map +1 -1
- package/lib/commonjs/components/Chat/ChatMessage.js +79 -7
- package/lib/commonjs/components/Chat/ChatMessage.js.map +1 -1
- package/lib/commonjs/components/Chat/ChatMoreActionsModal.js +61 -0
- package/lib/commonjs/components/Chat/ChatMoreActionsModal.js.map +1 -0
- package/lib/commonjs/components/Chat/ChatMoreActionsSheetView.js +63 -0
- package/lib/commonjs/components/Chat/ChatMoreActionsSheetView.js.map +1 -0
- package/lib/commonjs/components/Chat/ChatMoreActionsView.js +83 -0
- package/lib/commonjs/components/Chat/ChatMoreActionsView.js.map +1 -0
- package/lib/commonjs/components/Chat/ChatPaused.js +86 -0
- package/lib/commonjs/components/Chat/ChatPaused.js.map +1 -0
- package/lib/commonjs/components/Chat/MessageOptionsBottomSheet.js +34 -0
- package/lib/commonjs/components/Chat/MessageOptionsBottomSheet.js.map +1 -0
- package/lib/commonjs/components/Chat/MessageOptionsBottomSheetView.js +66 -0
- package/lib/commonjs/components/Chat/MessageOptionsBottomSheetView.js.map +1 -0
- package/lib/commonjs/components/Chat/MessageOptionsView.js +188 -0
- package/lib/commonjs/components/Chat/MessageOptionsView.js.map +1 -0
- package/lib/commonjs/components/Chat/PeerBlockedFromChat.js +47 -0
- package/lib/commonjs/components/Chat/PeerBlockedFromChat.js.map +1 -0
- package/lib/commonjs/components/Chat/PinnedMessages.js +297 -0
- package/lib/commonjs/components/Chat/PinnedMessages.js.map +1 -0
- package/lib/commonjs/components/Chat/index.js +4 -4
- package/lib/commonjs/components/Chat/index.js.map +1 -1
- package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
- package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js +21 -2
- package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
- package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +3 -1
- package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
- package/lib/commonjs/components/ChatAndParticipants/ChatView.js +21 -2
- package/lib/commonjs/components/ChatAndParticipants/ChatView.js.map +1 -1
- package/lib/commonjs/components/EndRoomModalContent.js +6 -9
- package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
- package/lib/commonjs/components/Footer.js.map +1 -1
- package/lib/commonjs/components/GridView.js.map +1 -1
- package/lib/commonjs/components/HLSView.js +8 -6
- package/lib/commonjs/components/HLSView.js.map +1 -1
- package/lib/commonjs/components/HMSBaseButton.js +10 -2
- package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
- package/lib/commonjs/components/HMSDangerButton.js +4 -2
- package/lib/commonjs/components/HMSDangerButton.js.map +1 -1
- package/lib/commonjs/components/HMSHLSMessage.js +86 -1
- package/lib/commonjs/components/HMSHLSMessage.js.map +1 -1
- package/lib/commonjs/components/HMSHLSMessageList.js +2 -2
- package/lib/commonjs/components/HMSHLSMessageList.js.map +1 -1
- package/lib/commonjs/components/HMSHandRaiseNotification.js +6 -3
- package/lib/commonjs/components/HMSHandRaiseNotification.js.map +1 -1
- package/lib/commonjs/components/HMSKeyboardAvoidingView.js +5 -1
- package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -1
- package/lib/commonjs/components/HMSLiveIndicator.js +2 -6
- package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -1
- package/lib/commonjs/components/HMSLiveViewerCount.js +8 -7
- package/lib/commonjs/components/HMSLiveViewerCount.js.map +1 -1
- package/lib/commonjs/components/HMSLocalScreenshareNotification.js +2 -1
- package/lib/commonjs/components/HMSLocalScreenshareNotification.js.map +1 -1
- package/lib/commonjs/components/HMSNotification.js +31 -4
- package/lib/commonjs/components/HMSNotification.js.map +1 -1
- package/lib/commonjs/components/HMSNotifications.js +9 -2
- package/lib/commonjs/components/HMSNotifications.js.map +1 -1
- package/lib/commonjs/components/HMSOverlayChatView.js +44 -2
- package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -1
- package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
- package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +2 -6
- package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
- package/lib/commonjs/components/HMSPrimaryButton.js +4 -2
- package/lib/commonjs/components/HMSPrimaryButton.js.map +1 -1
- package/lib/commonjs/components/HMSRecordingIndicator.js +11 -16
- package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
- package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
- package/lib/commonjs/components/HMSTerminalErrorNotification.js +6 -2
- package/lib/commonjs/components/HMSTerminalErrorNotification.js.map +1 -1
- package/lib/commonjs/components/Header.js.map +1 -1
- package/lib/commonjs/components/LeaveRoomBottomSheet.js +3 -6
- package/lib/commonjs/components/LeaveRoomBottomSheet.js.map +1 -1
- package/lib/commonjs/components/Meeting.js +3 -0
- package/lib/commonjs/components/Meeting.js.map +1 -1
- package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
- package/lib/commonjs/components/Modals.js +9 -12
- package/lib/commonjs/components/Modals.js.map +1 -1
- package/lib/commonjs/components/Participants/ParticipantsItemOptions.js +5 -1
- package/lib/commonjs/components/Participants/ParticipantsItemOptions.js.map +1 -1
- package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
- package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
- package/lib/commonjs/components/Preview.js +14 -1
- package/lib/commonjs/components/Preview.js.map +1 -1
- package/lib/commonjs/components/PreviewForRoleChangeModal.js +5 -4
- package/lib/commonjs/components/PreviewForRoleChangeModal.js.map +1 -1
- package/lib/commonjs/components/RoomSettingsModalContent.js +15 -6
- package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
- package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +2 -4
- package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
- package/lib/commonjs/components/WebrtcView.js.map +1 -1
- package/lib/commonjs/hooks-sdk-selectors.js +16 -1
- package/lib/commonjs/hooks-sdk-selectors.js.map +1 -1
- package/lib/commonjs/hooks-sdk.js +27 -1
- package/lib/commonjs/hooks-sdk.js.map +1 -1
- package/lib/commonjs/hooks-util-selectors.js +3 -3
- package/lib/commonjs/hooks-util-selectors.js.map +1 -1
- package/lib/commonjs/hooks-util.js +408 -61
- package/lib/commonjs/hooks-util.js.map +1 -1
- package/lib/commonjs/redux/actionTypes.js +16 -3
- package/lib/commonjs/redux/actionTypes.js.map +1 -1
- package/lib/commonjs/redux/actions/index.js +44 -4
- package/lib/commonjs/redux/actions/index.js.map +1 -1
- package/lib/commonjs/redux/reducers/appState.js +41 -1
- package/lib/commonjs/redux/reducers/appState.js.map +1 -1
- package/lib/commonjs/redux/reducers/chatWindow.js +1 -2
- package/lib/commonjs/redux/reducers/chatWindow.js.map +1 -1
- package/lib/commonjs/redux/reducers/message.js +17 -4
- package/lib/commonjs/redux/reducers/message.js.map +1 -1
- package/lib/commonjs/types.js +1 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/types.js +3 -0
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/commonjs/utils.js +2 -2
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/HMSRoomSetup.js +5 -2
- package/lib/module/HMSRoomSetup.js.map +1 -1
- package/lib/module/Icons/Chat/assets/chat-on.png +0 -0
- package/lib/module/Icons/Chat/assets/chat-on@2x.png +0 -0
- package/lib/module/Icons/Chat/assets/chat-on@3x.png +0 -0
- package/lib/module/Icons/Chat/index.js +4 -3
- package/lib/module/Icons/Chat/index.js.map +1 -1
- package/lib/module/Icons/NoEntry/assets/no-entry.png +0 -0
- package/lib/module/Icons/NoEntry/assets/no-entry@2x.png +0 -0
- package/lib/module/Icons/NoEntry/assets/no-entry@3x.png +0 -0
- package/lib/module/Icons/NoEntry/index.js +25 -0
- package/lib/module/Icons/NoEntry/index.js.map +1 -0
- package/lib/module/Icons/PauseCircle/assets/pause-circle.png +0 -0
- package/lib/module/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
- package/lib/module/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
- package/lib/module/Icons/PauseCircle/index.js +21 -0
- package/lib/module/Icons/PauseCircle/index.js.map +1 -0
- package/lib/module/Icons/Pin/assets/unpin.png +0 -0
- package/lib/module/Icons/Pin/assets/unpin@2x.png +0 -0
- package/lib/module/Icons/Pin/assets/unpin@3x.png +0 -0
- package/lib/module/Icons/Pin/index.js +2 -1
- package/lib/module/Icons/Pin/index.js.map +1 -1
- package/lib/module/Icons/Recording/assets/recording-pause.png +0 -0
- package/lib/module/Icons/Recording/assets/recording-pause@2x.png +0 -0
- package/lib/module/Icons/Recording/assets/recording-pause@3x.png +0 -0
- package/lib/module/Icons/Recording/index.js.map +1 -1
- package/lib/module/Icons/index.js +2 -0
- package/lib/module/Icons/index.js.map +1 -1
- package/lib/module/components/BottomSheet.js.map +1 -1
- package/lib/module/components/Chat/ChatFilterBottomSheet.js +28 -0
- package/lib/module/components/Chat/ChatFilterBottomSheet.js.map +1 -0
- package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js +93 -26
- package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -1
- package/lib/module/components/Chat/ChatFilterItem.js +11 -8
- package/lib/module/components/Chat/ChatFilterItem.js.map +1 -1
- package/lib/module/components/Chat/ChatFilterView.js +55 -46
- package/lib/module/components/Chat/ChatFilterView.js.map +1 -1
- package/lib/module/components/Chat/ChatList.js +14 -7
- package/lib/module/components/Chat/ChatList.js.map +1 -1
- package/lib/module/components/Chat/ChatMessage.js +81 -9
- package/lib/module/components/Chat/ChatMessage.js.map +1 -1
- package/lib/module/components/Chat/ChatMoreActionsModal.js +53 -0
- package/lib/module/components/Chat/ChatMoreActionsModal.js.map +1 -0
- package/lib/module/components/Chat/ChatMoreActionsSheetView.js +55 -0
- package/lib/module/components/Chat/ChatMoreActionsSheetView.js.map +1 -0
- package/lib/module/components/Chat/ChatMoreActionsView.js +75 -0
- package/lib/module/components/Chat/ChatMoreActionsView.js.map +1 -0
- package/lib/module/components/Chat/ChatPaused.js +77 -0
- package/lib/module/components/Chat/ChatPaused.js.map +1 -0
- package/lib/module/components/Chat/MessageOptionsBottomSheet.js +26 -0
- package/lib/module/components/Chat/MessageOptionsBottomSheet.js.map +1 -0
- package/lib/module/components/Chat/MessageOptionsBottomSheetView.js +58 -0
- package/lib/module/components/Chat/MessageOptionsBottomSheetView.js.map +1 -0
- package/lib/module/components/Chat/MessageOptionsView.js +180 -0
- package/lib/module/components/Chat/MessageOptionsView.js.map +1 -0
- package/lib/module/components/Chat/PeerBlockedFromChat.js +38 -0
- package/lib/module/components/Chat/PeerBlockedFromChat.js.map +1 -0
- package/lib/module/components/Chat/PinnedMessages.js +288 -0
- package/lib/module/components/Chat/PinnedMessages.js.map +1 -0
- package/lib/module/components/Chat/index.js +1 -1
- package/lib/module/components/Chat/index.js.map +1 -1
- package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
- package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +24 -5
- package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
- package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +3 -1
- package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
- package/lib/module/components/ChatAndParticipants/ChatView.js +22 -3
- package/lib/module/components/ChatAndParticipants/ChatView.js.map +1 -1
- package/lib/module/components/EndRoomModalContent.js +6 -9
- package/lib/module/components/EndRoomModalContent.js.map +1 -1
- package/lib/module/components/Footer.js.map +1 -1
- package/lib/module/components/GridView.js.map +1 -1
- package/lib/module/components/HLSView.js +9 -7
- package/lib/module/components/HLSView.js.map +1 -1
- package/lib/module/components/HMSBaseButton.js +10 -2
- package/lib/module/components/HMSBaseButton.js.map +1 -1
- package/lib/module/components/HMSDangerButton.js +4 -2
- package/lib/module/components/HMSDangerButton.js.map +1 -1
- package/lib/module/components/HMSHLSMessage.js +88 -3
- package/lib/module/components/HMSHLSMessage.js.map +1 -1
- package/lib/module/components/HMSHLSMessageList.js +2 -2
- package/lib/module/components/HMSHLSMessageList.js.map +1 -1
- package/lib/module/components/HMSHandRaiseNotification.js +6 -3
- package/lib/module/components/HMSHandRaiseNotification.js.map +1 -1
- package/lib/module/components/HMSKeyboardAvoidingView.js +6 -2
- package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -1
- package/lib/module/components/HMSLiveIndicator.js +2 -6
- package/lib/module/components/HMSLiveIndicator.js.map +1 -1
- package/lib/module/components/HMSLiveViewerCount.js +8 -7
- package/lib/module/components/HMSLiveViewerCount.js.map +1 -1
- package/lib/module/components/HMSLocalScreenshareNotification.js +2 -1
- package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -1
- package/lib/module/components/HMSNotification.js +32 -5
- package/lib/module/components/HMSNotification.js.map +1 -1
- package/lib/module/components/HMSNotifications.js +9 -2
- package/lib/module/components/HMSNotifications.js.map +1 -1
- package/lib/module/components/HMSOverlayChatView.js +45 -3
- package/lib/module/components/HMSOverlayChatView.js.map +1 -1
- package/lib/module/components/HMSPreviewEditName.js.map +1 -1
- package/lib/module/components/HMSPreviewHLSLiveIndicator.js +2 -6
- package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
- package/lib/module/components/HMSPrimaryButton.js +4 -2
- package/lib/module/components/HMSPrimaryButton.js.map +1 -1
- package/lib/module/components/HMSRecordingIndicator.js +11 -16
- package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
- package/lib/module/components/HMSRoomOptions.js.map +1 -1
- package/lib/module/components/HMSTerminalErrorNotification.js +6 -2
- package/lib/module/components/HMSTerminalErrorNotification.js.map +1 -1
- package/lib/module/components/Header.js.map +1 -1
- package/lib/module/components/LeaveRoomBottomSheet.js +3 -6
- package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
- package/lib/module/components/Meeting.js +4 -1
- package/lib/module/components/Meeting.js.map +1 -1
- package/lib/module/components/MeetingScreenContent.js.map +1 -1
- package/lib/module/components/Modals.js +10 -13
- package/lib/module/components/Modals.js.map +1 -1
- package/lib/module/components/Participants/ParticipantsItemOptions.js +5 -1
- package/lib/module/components/Participants/ParticipantsItemOptions.js.map +1 -1
- package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
- package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
- package/lib/module/components/Preview.js +13 -2
- package/lib/module/components/Preview.js.map +1 -1
- package/lib/module/components/PreviewForRoleChangeModal.js +5 -4
- package/lib/module/components/PreviewForRoleChangeModal.js.map +1 -1
- package/lib/module/components/RoomSettingsModalContent.js +16 -7
- package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
- package/lib/module/components/RoomSettingsModalDebugModeContent.js +3 -5
- package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
- package/lib/module/components/WebrtcView.js.map +1 -1
- package/lib/module/hooks-sdk-selectors.js +12 -0
- package/lib/module/hooks-sdk-selectors.js.map +1 -1
- package/lib/module/hooks-sdk.js +23 -1
- package/lib/module/hooks-sdk.js.map +1 -1
- package/lib/module/hooks-util-selectors.js +3 -3
- package/lib/module/hooks-util-selectors.js.map +1 -1
- package/lib/module/hooks-util.js +398 -62
- package/lib/module/hooks-util.js.map +1 -1
- package/lib/module/redux/actionTypes.js +16 -3
- package/lib/module/redux/actionTypes.js.map +1 -1
- package/lib/module/redux/actions/index.js +36 -2
- package/lib/module/redux/actions/index.js.map +1 -1
- package/lib/module/redux/reducers/appState.js +41 -1
- package/lib/module/redux/reducers/appState.js.map +1 -1
- package/lib/module/redux/reducers/chatWindow.js +1 -2
- package/lib/module/redux/reducers/chatWindow.js.map +1 -1
- package/lib/module/redux/reducers/message.js +17 -4
- package/lib/module/redux/reducers/message.js.map +1 -1
- package/lib/module/types.js +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/types.js +3 -0
- package/lib/module/utils/types.js.map +1 -1
- package/lib/module/utils.js +2 -2
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
- package/lib/typescript/Icons/Chat/index.d.ts +1 -0
- package/lib/typescript/Icons/Chat/index.d.ts.map +1 -1
- package/lib/typescript/Icons/NoEntry/index.d.ts +7 -0
- package/lib/typescript/Icons/NoEntry/index.d.ts.map +1 -0
- package/lib/typescript/Icons/PauseCircle/index.d.ts +7 -0
- package/lib/typescript/Icons/PauseCircle/index.d.ts.map +1 -0
- package/lib/typescript/Icons/Pin/index.d.ts +1 -0
- package/lib/typescript/Icons/Pin/index.d.ts.map +1 -1
- package/lib/typescript/Icons/index.d.ts +2 -0
- package/lib/typescript/Icons/index.d.ts.map +1 -1
- package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/components/Chat/ChatFilterBottomSheet.d.ts +3 -0
- package/lib/typescript/components/Chat/ChatFilterBottomSheet.d.ts.map +1 -0
- package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts +1 -0
- package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts.map +1 -1
- package/lib/typescript/components/Chat/ChatFilterItem.d.ts +1 -0
- package/lib/typescript/components/Chat/ChatFilterItem.d.ts.map +1 -1
- package/lib/typescript/components/Chat/ChatFilterView.d.ts +1 -0
- package/lib/typescript/components/Chat/ChatFilterView.d.ts.map +1 -1
- package/lib/typescript/components/Chat/ChatList.d.ts.map +1 -1
- package/lib/typescript/components/Chat/ChatMessage.d.ts.map +1 -1
- package/lib/typescript/components/Chat/ChatMoreActionsModal.d.ts +7 -0
- package/lib/typescript/components/Chat/ChatMoreActionsModal.d.ts.map +1 -0
- package/lib/typescript/components/Chat/ChatMoreActionsSheetView.d.ts +6 -0
- package/lib/typescript/components/Chat/ChatMoreActionsSheetView.d.ts.map +1 -0
- package/lib/typescript/components/Chat/ChatMoreActionsView.d.ts +7 -0
- package/lib/typescript/components/Chat/ChatMoreActionsView.d.ts.map +1 -0
- package/lib/typescript/components/Chat/ChatPaused.d.ts +10 -0
- package/lib/typescript/components/Chat/ChatPaused.d.ts.map +1 -0
- package/lib/typescript/components/Chat/MessageOptionsBottomSheet.d.ts +3 -0
- package/lib/typescript/components/Chat/MessageOptionsBottomSheet.d.ts.map +1 -0
- package/lib/typescript/components/Chat/MessageOptionsBottomSheetView.d.ts +6 -0
- package/lib/typescript/components/Chat/MessageOptionsBottomSheetView.d.ts.map +1 -0
- package/lib/typescript/components/Chat/MessageOptionsView.d.ts +7 -0
- package/lib/typescript/components/Chat/MessageOptionsView.d.ts.map +1 -0
- package/lib/typescript/components/Chat/PeerBlockedFromChat.d.ts +9 -0
- package/lib/typescript/components/Chat/PeerBlockedFromChat.d.ts.map +1 -0
- package/lib/typescript/components/Chat/PinnedMessages.d.ts +8 -0
- package/lib/typescript/components/Chat/PinnedMessages.d.ts.map +1 -0
- package/lib/typescript/components/Chat/index.d.ts +1 -1
- package/lib/typescript/components/Chat/index.d.ts.map +1 -1
- package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -1
- package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -1
- package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -1
- package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts.map +1 -1
- package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Footer.d.ts.map +1 -1
- package/lib/typescript/components/GridView.d.ts.map +1 -1
- package/lib/typescript/components/HMSBaseButton.d.ts +1 -0
- package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
- package/lib/typescript/components/HMSDangerButton.d.ts +1 -0
- package/lib/typescript/components/HMSDangerButton.d.ts.map +1 -1
- package/lib/typescript/components/HMSHLSMessage.d.ts +1 -1
- package/lib/typescript/components/HMSHLSMessage.d.ts.map +1 -1
- package/lib/typescript/components/HMSHandRaiseNotification.d.ts.map +1 -1
- package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -1
- package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
- package/lib/typescript/components/HMSLiveViewerCount.d.ts.map +1 -1
- package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -1
- package/lib/typescript/components/HMSNotification.d.ts +2 -1
- package/lib/typescript/components/HMSNotification.d.ts.map +1 -1
- package/lib/typescript/components/HMSNotifications.d.ts.map +1 -1
- package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -1
- package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
- package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -1
- package/lib/typescript/components/HMSPrimaryButton.d.ts +1 -0
- package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
- package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
- package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
- package/lib/typescript/components/HMSTerminalErrorNotification.d.ts.map +1 -1
- package/lib/typescript/components/Header.d.ts.map +1 -1
- package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
- package/lib/typescript/components/Meeting.d.ts.map +1 -1
- package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals.d.ts.map +1 -1
- package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts.map +1 -1
- package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
- package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
- package/lib/typescript/components/Preview.d.ts.map +1 -1
- package/lib/typescript/components/PreviewForRoleChangeModal.d.ts.map +1 -1
- package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
- package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
- package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
- package/lib/typescript/hooks-sdk-selectors.d.ts +3 -0
- package/lib/typescript/hooks-sdk-selectors.d.ts.map +1 -1
- package/lib/typescript/hooks-sdk.d.ts +4 -0
- package/lib/typescript/hooks-sdk.d.ts.map +1 -1
- package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
- package/lib/typescript/hooks-util.d.ts +35 -3
- package/lib/typescript/hooks-util.d.ts.map +1 -1
- package/lib/typescript/redux/actionTypes.d.ts +9 -2
- package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
- package/lib/typescript/redux/actions/index.d.ts +37 -3
- package/lib/typescript/redux/actions/index.d.ts.map +1 -1
- package/lib/typescript/redux/index.d.ts +7 -2
- package/lib/typescript/redux/index.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/appState.d.ts +7 -2
- package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/chatWindow.d.ts +1 -1
- package/lib/typescript/redux/reducers/chatWindow.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/index.d.ts +7 -2
- package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/message.d.ts +3 -2
- package/lib/typescript/redux/reducers/message.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +23 -3
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +3 -0
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/package.json +179 -179
- package/src/HMSRoomSetup.tsx +7 -2
- package/src/Icons/Chat/assets/chat-on.png +0 -0
- package/src/Icons/Chat/assets/chat-on@2x.png +0 -0
- package/src/Icons/Chat/assets/chat-on@3x.png +0 -0
- package/src/Icons/Chat/index.tsx +19 -6
- package/src/Icons/NoEntry/assets/no-entry.png +0 -0
- package/src/Icons/NoEntry/assets/no-entry@2x.png +0 -0
- package/src/Icons/NoEntry/assets/no-entry@3x.png +0 -0
- package/src/Icons/NoEntry/index.tsx +33 -0
- package/src/Icons/PauseCircle/assets/pause-circle.png +0 -0
- package/src/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
- package/src/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
- package/src/Icons/PauseCircle/index.tsx +27 -0
- package/src/Icons/Pin/assets/unpin.png +0 -0
- package/src/Icons/Pin/assets/unpin@2x.png +0 -0
- package/src/Icons/Pin/assets/unpin@3x.png +0 -0
- package/src/Icons/Pin/index.tsx +13 -3
- package/src/Icons/Recording/assets/recording-pause.png +0 -0
- package/src/Icons/Recording/assets/recording-pause@2x.png +0 -0
- package/src/Icons/Recording/assets/recording-pause@3x.png +0 -0
- package/src/Icons/Recording/index.tsx +2 -2
- package/src/Icons/index.ts +2 -0
- package/src/components/BottomSheet.tsx +13 -3
- package/src/components/Chat/ChatFilterBottomSheet.tsx +35 -0
- package/src/components/Chat/ChatFilterBottomSheetOpener.tsx +170 -42
- package/src/components/Chat/ChatFilterItem.tsx +8 -4
- package/src/components/Chat/ChatFilterView.tsx +102 -75
- package/src/components/Chat/ChatList.tsx +18 -6
- package/src/components/Chat/ChatMessage.tsx +111 -7
- package/src/components/Chat/ChatMoreActionsModal.tsx +75 -0
- package/src/components/Chat/ChatMoreActionsSheetView.tsx +77 -0
- package/src/components/Chat/ChatMoreActionsView.tsx +84 -0
- package/src/components/Chat/ChatPaused.tsx +103 -0
- package/src/components/Chat/MessageOptionsBottomSheet.tsx +33 -0
- package/src/components/Chat/MessageOptionsBottomSheetView.tsx +82 -0
- package/src/components/Chat/MessageOptionsView.tsx +248 -0
- package/src/components/Chat/PeerBlockedFromChat.tsx +49 -0
- package/src/components/Chat/PinnedMessages.tsx +422 -0
- package/src/components/Chat/index.ts +1 -1
- package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +4 -1
- package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +48 -12
- package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +9 -1
- package/src/components/ChatAndParticipants/ChatView.tsx +37 -5
- package/src/components/EndRoomModalContent.tsx +11 -14
- package/src/components/Footer.tsx +3 -1
- package/src/components/GridView.tsx +17 -8
- package/src/components/HLSView.tsx +45 -45
- package/src/components/HMSBaseButton.tsx +17 -2
- package/src/components/HMSDangerButton.tsx +3 -0
- package/src/components/HMSHLSMessage.tsx +130 -13
- package/src/components/HMSHLSMessageList.tsx +2 -2
- package/src/components/HMSHandRaiseNotification.tsx +17 -10
- package/src/components/HMSKeyboardAvoidingView.tsx +6 -1
- package/src/components/HMSLiveIndicator.tsx +9 -13
- package/src/components/HMSLiveViewerCount.tsx +21 -20
- package/src/components/HMSLocalScreenshareNotification.tsx +1 -0
- package/src/components/HMSNotification.tsx +56 -13
- package/src/components/HMSNotifications.tsx +12 -2
- package/src/components/HMSOverlayChatView.tsx +74 -17
- package/src/components/HMSPreviewEditName.tsx +3 -1
- package/src/components/HMSPreviewHLSLiveIndicator.tsx +2 -6
- package/src/components/HMSPrimaryButton.tsx +3 -0
- package/src/components/HMSRecordingIndicator.tsx +8 -22
- package/src/components/HMSRoomOptions.tsx +4 -1
- package/src/components/HMSTerminalErrorNotification.tsx +15 -10
- package/src/components/Header.tsx +4 -1
- package/src/components/LeaveRoomBottomSheet.tsx +13 -11
- package/src/components/Meeting.tsx +4 -0
- package/src/components/MeetingScreenContent.tsx +24 -21
- package/src/components/Modals.tsx +23 -25
- package/src/components/Participants/ParticipantsItemOptions.tsx +12 -7
- package/src/components/PeerSettingsModalContent.tsx +3 -1
- package/src/components/PeerVideoTile/PeerVideoTileView.tsx +3 -1
- package/src/components/Preview.tsx +15 -2
- package/src/components/PreviewForRoleChangeModal.tsx +4 -3
- package/src/components/RoomSettingsModalContent.tsx +62 -18
- package/src/components/RoomSettingsModalDebugModeContent.tsx +2 -5
- package/src/components/WebrtcView.tsx +6 -2
- package/src/hooks-sdk-selectors.tsx +19 -0
- package/src/hooks-sdk.ts +37 -0
- package/src/hooks-util-selectors.tsx +2 -3
- package/src/hooks-util.ts +578 -87
- package/src/redux/actionTypes.ts +22 -2
- package/src/redux/actions/index.ts +41 -4
- package/src/redux/reducers/appState.ts +54 -5
- package/src/redux/reducers/chatWindow.ts +2 -2
- package/src/redux/reducers/message.ts +20 -6
- package/src/types.ts +35 -6
- package/src/utils/types.ts +3 -0
- package/src/utils.ts +2 -2
- package/lib/commonjs/components/Chat/PinnedMessage.js +0 -81
- package/lib/commonjs/components/Chat/PinnedMessage.js.map +0 -1
- package/lib/module/components/Chat/PinnedMessage.js +0 -72
- package/lib/module/components/Chat/PinnedMessage.js.map +0 -1
- package/lib/typescript/components/Chat/PinnedMessage.d.ts +0 -3
- package/lib/typescript/components/Chat/PinnedMessage.d.ts.map +0 -1
- package/src/components/Chat/PinnedMessage.tsx +0 -89
package/src/hooks-util.ts
CHANGED
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
HMSPIPListenerActions,
|
|
8
8
|
HMSPeer,
|
|
9
9
|
HMSPeerUpdate,
|
|
10
|
-
HMSRemotePeer,
|
|
11
10
|
HMSRoleChangeRequest,
|
|
12
11
|
HMSRoom,
|
|
13
12
|
HMSRoomUpdate,
|
|
@@ -30,8 +29,8 @@ import type {
|
|
|
30
29
|
HMSPIPConfig,
|
|
31
30
|
HMSRole,
|
|
32
31
|
HMSSessionStore,
|
|
33
|
-
HMSSessionStoreValue,
|
|
34
32
|
HMSSpeaker,
|
|
33
|
+
JsonValue,
|
|
35
34
|
} from '@100mslive/react-native-hms';
|
|
36
35
|
import type {
|
|
37
36
|
ColorPalette,
|
|
@@ -59,12 +58,9 @@ import {
|
|
|
59
58
|
PeerListRefreshInterval,
|
|
60
59
|
PipModes,
|
|
61
60
|
} from './utils/types';
|
|
62
|
-
import
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
PeerTrackNode,
|
|
66
|
-
} from './utils/types';
|
|
67
|
-
import { createPeerTrackNode } from './utils/functions';
|
|
61
|
+
import { ChatBroadcastFilter } from './utils/types';
|
|
62
|
+
import type { OnLeaveHandler, PeerTrackNode } from './utils/types';
|
|
63
|
+
import { createPeerTrackNode, parseMetadata } from './utils/functions';
|
|
68
64
|
import {
|
|
69
65
|
batch,
|
|
70
66
|
shallowEqual,
|
|
@@ -78,13 +74,14 @@ import {
|
|
|
78
74
|
addNotification,
|
|
79
75
|
addParticipant,
|
|
80
76
|
addParticipants,
|
|
81
|
-
|
|
77
|
+
addPinnedMessages,
|
|
82
78
|
addScreenshareTile,
|
|
83
79
|
addUpdateParticipant,
|
|
84
80
|
changeMeetingState,
|
|
85
81
|
changePipModeStatus,
|
|
86
82
|
changeStartingHLSStream,
|
|
87
83
|
clearStore,
|
|
84
|
+
filterOutMsgsFromBlockedPeers,
|
|
88
85
|
removeNotification,
|
|
89
86
|
removeParticipant,
|
|
90
87
|
removeParticipants,
|
|
@@ -94,6 +91,8 @@ import {
|
|
|
94
91
|
setActiveChatBottomSheetTab,
|
|
95
92
|
setActiveSpeakers,
|
|
96
93
|
setAutoEnterPipMode,
|
|
94
|
+
setChatPeerBlacklist,
|
|
95
|
+
setChatState,
|
|
97
96
|
setEditUsernameDisabled,
|
|
98
97
|
setFullScreenPeerTrackNode,
|
|
99
98
|
setHMSLocalPeerState,
|
|
@@ -127,7 +126,7 @@ import {
|
|
|
127
126
|
replacePeerTrackNodesWithTrack,
|
|
128
127
|
} from './peerTrackNodeUtils';
|
|
129
128
|
import { MeetingState } from './types';
|
|
130
|
-
import type { HMSPrebuiltProps } from './types';
|
|
129
|
+
import type { ChatState, HMSPrebuiltProps, PinnedMessage } from './types';
|
|
131
130
|
import {
|
|
132
131
|
BackHandler,
|
|
133
132
|
InteractionManager,
|
|
@@ -153,6 +152,7 @@ import { getRoomLayout } from './modules/HMSManager';
|
|
|
153
152
|
import { DEFAULT_THEME, DEFAULT_TYPOGRAPHY } from './utils/theme';
|
|
154
153
|
import { NotificationTypes } from './types';
|
|
155
154
|
import { KeyboardState, useSharedValue } from 'react-native-reanimated';
|
|
155
|
+
import { useHMSActions } from './hooks-sdk';
|
|
156
156
|
|
|
157
157
|
export const useHMSListeners = (
|
|
158
158
|
setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
|
|
@@ -220,6 +220,7 @@ const useHMSPeersUpdate = (
|
|
|
220
220
|
// const inMeeting = useSelector(
|
|
221
221
|
// (state: RootState) => state.app.meetingState === MeetingState.IN_MEETING
|
|
222
222
|
// );
|
|
223
|
+
const hmsActions = useHMSActions();
|
|
223
224
|
|
|
224
225
|
useEffect(() => {
|
|
225
226
|
const peerUpdateHandler = ({ peer, type }: PeerUpdate) => {
|
|
@@ -273,6 +274,7 @@ const useHMSPeersUpdate = (
|
|
|
273
274
|
const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
|
|
274
275
|
const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
|
|
275
276
|
const localPeerTrackNode = reduxState.app.localPeerTrackNode;
|
|
277
|
+
const initialRole = reduxState.app.initialRole;
|
|
276
278
|
|
|
277
279
|
// Currently Applied Layout config
|
|
278
280
|
const currentLayoutConfig = selectLayoutConfigForRole(
|
|
@@ -343,11 +345,41 @@ const useHMSPeersUpdate = (
|
|
|
343
345
|
// - TODO: update local localPeer state
|
|
344
346
|
// - Pass this updated data to Meeting component -> DisplayView component
|
|
345
347
|
updateLocalPeer();
|
|
348
|
+
|
|
349
|
+
if (type === HMSPeerUpdate.ROLE_CHANGED) {
|
|
350
|
+
const parsedLocalPeerMetadata = parseMetadata(peer.metadata);
|
|
351
|
+
|
|
352
|
+
if (parsedLocalPeerMetadata.prevRole !== initialRole) {
|
|
353
|
+
const newMetadata = {
|
|
354
|
+
...parsedLocalPeerMetadata,
|
|
355
|
+
prevRole: initialRole?.name,
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
hmsActions
|
|
359
|
+
.changeMetadata(newMetadata)
|
|
360
|
+
.then((r) => {
|
|
361
|
+
console.log('Metadata changed successfully', r);
|
|
362
|
+
})
|
|
363
|
+
.catch((e) => {
|
|
364
|
+
console.log('Metadata change failed', e);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
346
368
|
return;
|
|
347
369
|
}
|
|
348
370
|
if (type === HMSPeerUpdate.ROLE_CHANGED) {
|
|
349
371
|
dispatch(addUpdateParticipant(peer));
|
|
350
372
|
|
|
373
|
+
// saving current role in peer metadata,
|
|
374
|
+
// so that when peer is removed from stage, we can assign previous role to it.
|
|
375
|
+
// if (localPeerRoleName) {
|
|
376
|
+
// const newMetadata = {
|
|
377
|
+
// ...localPeerMetadata,
|
|
378
|
+
// prevRole: localPeerRoleName,
|
|
379
|
+
// };
|
|
380
|
+
// await hmsActions.changeMetadata(newMetadata);
|
|
381
|
+
// }
|
|
382
|
+
|
|
351
383
|
// Handling regular tiles list
|
|
352
384
|
if (
|
|
353
385
|
peer.role?.publishSettings?.allowed === undefined ||
|
|
@@ -1000,6 +1032,7 @@ type SessionStoreListeners = Array<{ remove: () => void }>;
|
|
|
1000
1032
|
export const useHMSSessionStoreListeners = (
|
|
1001
1033
|
gridViewRef: React.MutableRefObject<GridViewRefAttrs | null>
|
|
1002
1034
|
) => {
|
|
1035
|
+
const store = useStore<RootState>();
|
|
1003
1036
|
const dispatch = useDispatch();
|
|
1004
1037
|
const hmsSessionStore = useSelector(
|
|
1005
1038
|
(state: RootState) => state.user.hmsSessionStore
|
|
@@ -1013,18 +1046,105 @@ export const useHMSSessionStoreListeners = (
|
|
|
1013
1046
|
|
|
1014
1047
|
const addSessionStoreListeners = () => {
|
|
1015
1048
|
// Handle 'spotlight' key values
|
|
1016
|
-
const handleSpotlightIdChange = (id:
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1049
|
+
const handleSpotlightIdChange = (id: JsonValue) => {
|
|
1050
|
+
if (id === null || id === undefined || typeof id === 'string') {
|
|
1051
|
+
// set value to the state to rerender the component to reflect changes
|
|
1052
|
+
dispatch(saveUserData({ spotlightTrackId: id }));
|
|
1053
|
+
// Scroll to start of the list
|
|
1054
|
+
gridViewRef.current
|
|
1055
|
+
?.getRegularTilesFlatlistRef()
|
|
1056
|
+
.current?.scrollToOffset({ animated: true, offset: 0 });
|
|
1057
|
+
}
|
|
1023
1058
|
};
|
|
1024
1059
|
|
|
1025
|
-
// Handle '
|
|
1026
|
-
const
|
|
1027
|
-
|
|
1060
|
+
// Handle 'pinnedMessages' key values
|
|
1061
|
+
const handlePinnedMessagesChange = (data: JsonValue) => {
|
|
1062
|
+
if (Array.isArray(data)) {
|
|
1063
|
+
dispatch(addPinnedMessages(data as PinnedMessage[]));
|
|
1064
|
+
}
|
|
1065
|
+
};
|
|
1066
|
+
|
|
1067
|
+
// Handle 'chatState' key values
|
|
1068
|
+
const handleChatStateChange = (data: JsonValue) => {
|
|
1069
|
+
try {
|
|
1070
|
+
if (
|
|
1071
|
+
typeof data !== 'object' ||
|
|
1072
|
+
Array.isArray(data) ||
|
|
1073
|
+
data === null
|
|
1074
|
+
) {
|
|
1075
|
+
throw new Error('`data` is a falsy value');
|
|
1076
|
+
}
|
|
1077
|
+
if (!('enabled' in data)) {
|
|
1078
|
+
throw new Error("`data` doesn't have `enabled` property");
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
const parsedData = data as ChatState;
|
|
1082
|
+
|
|
1083
|
+
const reduxState = store.getState();
|
|
1084
|
+
const currentChatState = reduxState.app.chatState;
|
|
1085
|
+
|
|
1086
|
+
if (parsedData.enabled === currentChatState?.enabled) {
|
|
1087
|
+
return;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
const currentLayoutConfig = selectLayoutConfigForRole(
|
|
1091
|
+
reduxState.hmsStates.layoutConfig,
|
|
1092
|
+
reduxState.hmsStates.localPeer?.role ?? null
|
|
1093
|
+
);
|
|
1094
|
+
|
|
1095
|
+
const chatLayoutConfig =
|
|
1096
|
+
selectChatLayoutConfig(currentLayoutConfig);
|
|
1097
|
+
|
|
1098
|
+
const isAllowedToSendMessage =
|
|
1099
|
+
(chatLayoutConfig?.private_chat_enabled ||
|
|
1100
|
+
chatLayoutConfig?.public_chat_enabled ||
|
|
1101
|
+
(chatLayoutConfig?.roles_whitelist &&
|
|
1102
|
+
chatLayoutConfig?.roles_whitelist.length > 0)) ??
|
|
1103
|
+
false;
|
|
1104
|
+
|
|
1105
|
+
batch(() => {
|
|
1106
|
+
if (
|
|
1107
|
+
isAllowedToSendMessage && // Only show notification when allowed to send message, AND
|
|
1108
|
+
(!parsedData.enabled || // Chat is Paused, OR
|
|
1109
|
+
(currentChatState &&
|
|
1110
|
+
parsedData.enabled !== currentChatState.enabled)) // current Chat state is different from previous state
|
|
1111
|
+
) {
|
|
1112
|
+
dispatch(
|
|
1113
|
+
addNotification({
|
|
1114
|
+
id: `chat-state-enabled-${Math.random()
|
|
1115
|
+
.toString(16)
|
|
1116
|
+
.slice(2)}`,
|
|
1117
|
+
icon: parsedData.enabled ? 'chat-on' : 'chat-off',
|
|
1118
|
+
type: NotificationTypes.INFO,
|
|
1119
|
+
title: `Chat ${parsedData.enabled ? 'Resumed' : 'Paused'}`,
|
|
1120
|
+
message: `Chat ${
|
|
1121
|
+
parsedData.enabled ? 'resumed' : 'paused'
|
|
1122
|
+
} ${
|
|
1123
|
+
parsedData.updatedBy
|
|
1124
|
+
? `by ${parsedData.updatedBy.userName}`
|
|
1125
|
+
: ''
|
|
1126
|
+
}`,
|
|
1127
|
+
})
|
|
1128
|
+
);
|
|
1129
|
+
}
|
|
1130
|
+
dispatch(setChatState(parsedData));
|
|
1131
|
+
});
|
|
1132
|
+
} catch (error) {
|
|
1133
|
+
dispatch(setChatState(null));
|
|
1134
|
+
}
|
|
1135
|
+
};
|
|
1136
|
+
|
|
1137
|
+
// Handle 'chatPeerBlacklist' key values
|
|
1138
|
+
const handleChatPeerBlacklistChange = (data: JsonValue) => {
|
|
1139
|
+
// Whenever list changes :
|
|
1140
|
+
// - check if local peer is blocked or unblocked
|
|
1141
|
+
// - filter out messages of blocked peers
|
|
1142
|
+
if (Array.isArray(data)) {
|
|
1143
|
+
batch(() => {
|
|
1144
|
+
dispatch(setChatPeerBlacklist(data as string[]));
|
|
1145
|
+
dispatch(filterOutMsgsFromBlockedPeers(data as string[]));
|
|
1146
|
+
});
|
|
1147
|
+
}
|
|
1028
1148
|
};
|
|
1029
1149
|
|
|
1030
1150
|
// Getting value for 'spotlight' key by using `get` method on HMSSessionStore instance
|
|
@@ -1044,19 +1164,53 @@ export const useHMSSessionStoreListeners = (
|
|
|
1044
1164
|
)
|
|
1045
1165
|
);
|
|
1046
1166
|
|
|
1047
|
-
// Getting value for '
|
|
1167
|
+
// Getting value for 'pinnedMessages' key by using `get` method on HMSSessionStore instance
|
|
1168
|
+
hmsSessionStore
|
|
1169
|
+
.get('pinnedMessages')
|
|
1170
|
+
.then((data) => {
|
|
1171
|
+
console.log(
|
|
1172
|
+
'Session Store get `pinnedMessages` key value success: ',
|
|
1173
|
+
data
|
|
1174
|
+
);
|
|
1175
|
+
handlePinnedMessagesChange(data);
|
|
1176
|
+
})
|
|
1177
|
+
.catch((error) =>
|
|
1178
|
+
console.log(
|
|
1179
|
+
'Session Store get `pinnedMessages` key value error: ',
|
|
1180
|
+
error
|
|
1181
|
+
)
|
|
1182
|
+
);
|
|
1183
|
+
|
|
1184
|
+
// Getting value for 'chatState' key by using `get` method on HMSSessionStore instance
|
|
1185
|
+
hmsSessionStore
|
|
1186
|
+
.get('chatState')
|
|
1187
|
+
.then((data) => {
|
|
1188
|
+
console.log(
|
|
1189
|
+
'Session Store get `chatState` key value success: ',
|
|
1190
|
+
data
|
|
1191
|
+
);
|
|
1192
|
+
handleChatStateChange(data);
|
|
1193
|
+
})
|
|
1194
|
+
.catch((error) =>
|
|
1195
|
+
console.log(
|
|
1196
|
+
'Session Store get `chatState` key value error: ',
|
|
1197
|
+
error
|
|
1198
|
+
)
|
|
1199
|
+
);
|
|
1200
|
+
|
|
1201
|
+
// Getting value for 'chatPeerBlacklist' key by using `get` method on HMSSessionStore instance
|
|
1048
1202
|
hmsSessionStore
|
|
1049
|
-
.get('
|
|
1203
|
+
.get('chatPeerBlacklist')
|
|
1050
1204
|
.then((data) => {
|
|
1051
1205
|
console.log(
|
|
1052
|
-
'Session Store get `
|
|
1206
|
+
'Session Store get `chatPeerBlacklist` key value success: ',
|
|
1053
1207
|
data
|
|
1054
1208
|
);
|
|
1055
|
-
|
|
1209
|
+
handleChatPeerBlacklistChange(data);
|
|
1056
1210
|
})
|
|
1057
1211
|
.catch((error) =>
|
|
1058
1212
|
console.log(
|
|
1059
|
-
'Session Store get `
|
|
1213
|
+
'Session Store get `chatPeerBlacklist` key value error: ',
|
|
1060
1214
|
error
|
|
1061
1215
|
)
|
|
1062
1216
|
);
|
|
@@ -1064,66 +1218,44 @@ export const useHMSSessionStoreListeners = (
|
|
|
1064
1218
|
// let lastSpotlightValue: HMSSessionStoreValue = null;
|
|
1065
1219
|
// let lastPinnedMessageValue: HMSSessionStoreValue = null;
|
|
1066
1220
|
|
|
1067
|
-
// Add subscription for `spotlight` & `
|
|
1221
|
+
// Add subscription for `spotlight`, `pinnedMessages`, `chatState` & `chatPeerBlacklist` keys updates on Session Store
|
|
1068
1222
|
const subscription = hmsSessionStore.addKeyChangeListener<
|
|
1069
|
-
['spotlight', '
|
|
1070
|
-
>(
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1223
|
+
['spotlight', 'pinnedMessages', 'chatState', 'chatPeerBlacklist']
|
|
1224
|
+
>(
|
|
1225
|
+
['spotlight', 'pinnedMessages', 'chatState', 'chatPeerBlacklist'],
|
|
1226
|
+
(error, data) => {
|
|
1227
|
+
// If error occurs, handle error and return early
|
|
1228
|
+
if (error !== null) {
|
|
1229
|
+
console.log(
|
|
1230
|
+
'`spotlight`, `pinnedMessages`, `chatState` & `chatPeerBlacklist` key listener Error -> ',
|
|
1231
|
+
error
|
|
1232
|
+
);
|
|
1233
|
+
return;
|
|
1234
|
+
}
|
|
1079
1235
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
break;
|
|
1100
|
-
}
|
|
1101
|
-
case 'pinnedMessage': {
|
|
1102
|
-
handlePinnedMessageChange(data.value);
|
|
1103
|
-
|
|
1104
|
-
// Showing Toast message if value has actually changed
|
|
1105
|
-
// if (
|
|
1106
|
-
// data.value !== lastPinnedMessageValue &&
|
|
1107
|
-
// (data.value || lastPinnedMessageValue)
|
|
1108
|
-
// ) {
|
|
1109
|
-
// if (toastTimeoutId !== null) {
|
|
1110
|
-
// clearTimeout(toastTimeoutId);
|
|
1111
|
-
// }
|
|
1112
|
-
// toastTimeoutId = setTimeout(() => {
|
|
1113
|
-
// Toast.showWithGravity(
|
|
1114
|
-
// `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
|
|
1115
|
-
// Toast.LONG,
|
|
1116
|
-
// Toast.TOP
|
|
1117
|
-
// );
|
|
1118
|
-
// }, 1500);
|
|
1119
|
-
// }
|
|
1120
|
-
|
|
1121
|
-
// lastPinnedMessageValue = data.value;
|
|
1122
|
-
break;
|
|
1236
|
+
// If no error, handle data
|
|
1237
|
+
if (data !== null) {
|
|
1238
|
+
switch (data.key) {
|
|
1239
|
+
case 'spotlight': {
|
|
1240
|
+
handleSpotlightIdChange(data.value);
|
|
1241
|
+
break;
|
|
1242
|
+
}
|
|
1243
|
+
case 'pinnedMessages': {
|
|
1244
|
+
handlePinnedMessagesChange(data.value);
|
|
1245
|
+
break;
|
|
1246
|
+
}
|
|
1247
|
+
case 'chatState': {
|
|
1248
|
+
handleChatStateChange(data.value);
|
|
1249
|
+
break;
|
|
1250
|
+
}
|
|
1251
|
+
case 'chatPeerBlacklist': {
|
|
1252
|
+
handleChatPeerBlacklistChange(data.value);
|
|
1253
|
+
break;
|
|
1254
|
+
}
|
|
1123
1255
|
}
|
|
1124
1256
|
}
|
|
1125
1257
|
}
|
|
1126
|
-
|
|
1258
|
+
);
|
|
1127
1259
|
|
|
1128
1260
|
// Save reference of `subscription` in a ref
|
|
1129
1261
|
sessionStoreListenersRef.current.push(subscription);
|
|
@@ -1140,7 +1272,7 @@ export const useHMSSessionStoreListeners = (
|
|
|
1140
1272
|
// if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
|
|
1141
1273
|
};
|
|
1142
1274
|
}
|
|
1143
|
-
}, [hmsSessionStore]);
|
|
1275
|
+
}, [store, hmsSessionStore]);
|
|
1144
1276
|
};
|
|
1145
1277
|
|
|
1146
1278
|
export const useHMSSessionStore = () => {
|
|
@@ -2202,12 +2334,9 @@ export const useSendMessage = () => {
|
|
|
2202
2334
|
const chatWindowState = reduxStore.getState().chatWindow;
|
|
2203
2335
|
|
|
2204
2336
|
const message = chatWindowState.typedMessage;
|
|
2205
|
-
const sendingTo = chatWindowState.sendTo
|
|
2206
|
-
| HMSRole
|
|
2207
|
-
| HMSRemotePeer
|
|
2208
|
-
| typeof ChatBroadcastFilter;
|
|
2337
|
+
const sendingTo = chatWindowState.sendTo;
|
|
2209
2338
|
|
|
2210
|
-
if (message.length <= 0) return;
|
|
2339
|
+
if (message.length <= 0 || !sendingTo) return;
|
|
2211
2340
|
|
|
2212
2341
|
const hmsMessageRecipient = new HMSMessageRecipient({
|
|
2213
2342
|
recipientType:
|
|
@@ -2271,6 +2400,72 @@ export const useSendMessage = () => {
|
|
|
2271
2400
|
};
|
|
2272
2401
|
};
|
|
2273
2402
|
|
|
2403
|
+
export const useHMSCanDisableChat = () => {
|
|
2404
|
+
return useHMSChatLayoutConfig<boolean>(
|
|
2405
|
+
(chatLayoutConfig) =>
|
|
2406
|
+
chatLayoutConfig?.real_time_controls?.can_disable_chat ?? false
|
|
2407
|
+
);
|
|
2408
|
+
};
|
|
2409
|
+
|
|
2410
|
+
type ChatRecipients = {
|
|
2411
|
+
privateChat: boolean;
|
|
2412
|
+
publicChat: boolean;
|
|
2413
|
+
roles: HMSRole[];
|
|
2414
|
+
};
|
|
2415
|
+
|
|
2416
|
+
export const useHMSChatRecipientSelector = (): ChatRecipients => {
|
|
2417
|
+
const roles = useSelector((state: RootState) => state.hmsStates.roles);
|
|
2418
|
+
|
|
2419
|
+
const defaultChatRecipient = useMemo(
|
|
2420
|
+
() => ({
|
|
2421
|
+
privateChat: false,
|
|
2422
|
+
publicChat: false,
|
|
2423
|
+
roles: [],
|
|
2424
|
+
}),
|
|
2425
|
+
[]
|
|
2426
|
+
);
|
|
2427
|
+
|
|
2428
|
+
const chatLayoutConfig = useHMSChatLayoutConfig(
|
|
2429
|
+
(_chatLayoutConfig) => _chatLayoutConfig
|
|
2430
|
+
);
|
|
2431
|
+
|
|
2432
|
+
const rolesWhitelist = chatLayoutConfig?.roles_whitelist;
|
|
2433
|
+
|
|
2434
|
+
const whitelistedRoles = useMemo(() => {
|
|
2435
|
+
if (!rolesWhitelist) {
|
|
2436
|
+
return defaultChatRecipient.roles;
|
|
2437
|
+
}
|
|
2438
|
+
return rolesWhitelist
|
|
2439
|
+
.map((roleStr) => roles.find((role) => role.name === roleStr))
|
|
2440
|
+
.filter((role): role is HMSRole => !!role);
|
|
2441
|
+
}, [roles, rolesWhitelist, defaultChatRecipient]);
|
|
2442
|
+
|
|
2443
|
+
const privateChat =
|
|
2444
|
+
chatLayoutConfig?.private_chat_enabled ?? defaultChatRecipient.privateChat;
|
|
2445
|
+
const publicChat =
|
|
2446
|
+
chatLayoutConfig?.public_chat_enabled ?? defaultChatRecipient.publicChat;
|
|
2447
|
+
|
|
2448
|
+
if (chatLayoutConfig) {
|
|
2449
|
+
return {
|
|
2450
|
+
privateChat,
|
|
2451
|
+
publicChat,
|
|
2452
|
+
roles: whitelistedRoles,
|
|
2453
|
+
};
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
return defaultChatRecipient;
|
|
2457
|
+
};
|
|
2458
|
+
|
|
2459
|
+
export const useIsAllowedToSendMessage = () => {
|
|
2460
|
+
const chatRecipients = useHMSChatRecipientSelector();
|
|
2461
|
+
|
|
2462
|
+
return (
|
|
2463
|
+
chatRecipients.privateChat ||
|
|
2464
|
+
chatRecipients.publicChat ||
|
|
2465
|
+
chatRecipients.roles.length > 0
|
|
2466
|
+
);
|
|
2467
|
+
};
|
|
2468
|
+
|
|
2274
2469
|
export const useHMSChatLayoutConfig = <Selected = unknown>(
|
|
2275
2470
|
selector: (chatConfig: ChatConfig | null) => Selected,
|
|
2276
2471
|
equalityFn?: (left: Selected, right: Selected) => boolean
|
|
@@ -2388,7 +2583,7 @@ export const useStartRecording = () => {
|
|
|
2388
2583
|
addNotification({
|
|
2389
2584
|
id: Math.random().toString(16).slice(2),
|
|
2390
2585
|
type: NotificationTypes.ERROR,
|
|
2391
|
-
|
|
2586
|
+
title: error.message,
|
|
2392
2587
|
})
|
|
2393
2588
|
);
|
|
2394
2589
|
});
|
|
@@ -2400,6 +2595,185 @@ export const useStartRecording = () => {
|
|
|
2400
2595
|
};
|
|
2401
2596
|
};
|
|
2402
2597
|
|
|
2598
|
+
export const useHMSChatState = () => {
|
|
2599
|
+
const hmsSessionStore = useSelector(
|
|
2600
|
+
(state: RootState) => state.user.hmsSessionStore
|
|
2601
|
+
);
|
|
2602
|
+
const localPeerName = useSelector(
|
|
2603
|
+
(state: RootState) => state.hmsStates.localPeer?.name
|
|
2604
|
+
);
|
|
2605
|
+
const localPeerID = useSelector(
|
|
2606
|
+
(state: RootState) => state.hmsStates.localPeer?.peerID
|
|
2607
|
+
);
|
|
2608
|
+
const localPeerUserID = useSelector(
|
|
2609
|
+
(state: RootState) => state.hmsStates.localPeer?.customerUserID
|
|
2610
|
+
);
|
|
2611
|
+
const _chatState = useSelector((state: RootState) => state.app.chatState);
|
|
2612
|
+
|
|
2613
|
+
const chatState = useMemo(
|
|
2614
|
+
() => _chatState || ({ enabled: true } as const),
|
|
2615
|
+
[_chatState]
|
|
2616
|
+
);
|
|
2617
|
+
|
|
2618
|
+
const setChatState = useCallback(
|
|
2619
|
+
async (enabled: boolean) => {
|
|
2620
|
+
// If instance of HMSSessionStore is available
|
|
2621
|
+
if (hmsSessionStore) {
|
|
2622
|
+
try {
|
|
2623
|
+
const value = {
|
|
2624
|
+
enabled,
|
|
2625
|
+
updatedBy: {
|
|
2626
|
+
peerID: localPeerID ?? null,
|
|
2627
|
+
userID: localPeerUserID ?? null,
|
|
2628
|
+
userName: localPeerName ?? '',
|
|
2629
|
+
},
|
|
2630
|
+
updatedAt: Date.now(),
|
|
2631
|
+
};
|
|
2632
|
+
// set `value` on `session` with key 'chatState'
|
|
2633
|
+
const response = await hmsSessionStore.set(value, 'chatState');
|
|
2634
|
+
console.log('setSessionMetaData Response -> ', response);
|
|
2635
|
+
} catch (error) {
|
|
2636
|
+
console.log('setSessionMetaData Error -> ', error);
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
},
|
|
2640
|
+
[localPeerName, hmsSessionStore, localPeerUserID, localPeerID]
|
|
2641
|
+
);
|
|
2642
|
+
|
|
2643
|
+
return { chatState, setChatState };
|
|
2644
|
+
};
|
|
2645
|
+
|
|
2646
|
+
export const useIsMessagePinned = (message: HMSMessage | null) => {
|
|
2647
|
+
return useSelector((state: RootState) =>
|
|
2648
|
+
message
|
|
2649
|
+
? state.messages.pinnedMessages.findIndex(
|
|
2650
|
+
(pinnedMessage) => pinnedMessage.id === message.messageId
|
|
2651
|
+
) >= 0
|
|
2652
|
+
: false
|
|
2653
|
+
);
|
|
2654
|
+
};
|
|
2655
|
+
|
|
2656
|
+
export const useHMSMessagePinningActions = () => {
|
|
2657
|
+
const store = useStore<RootState>();
|
|
2658
|
+
const hmsSessionStore = useSelector(
|
|
2659
|
+
(state: RootState) => state.user.hmsSessionStore
|
|
2660
|
+
);
|
|
2661
|
+
|
|
2662
|
+
const pinMessage = useCallback(
|
|
2663
|
+
async (message: HMSMessage | HMSMessage[]) => {
|
|
2664
|
+
let messages = message;
|
|
2665
|
+
if (!Array.isArray(messages)) {
|
|
2666
|
+
messages = [messages];
|
|
2667
|
+
}
|
|
2668
|
+
|
|
2669
|
+
// If instance of HMSSessionStore is available
|
|
2670
|
+
if (hmsSessionStore) {
|
|
2671
|
+
try {
|
|
2672
|
+
const reduxState = store.getState();
|
|
2673
|
+
const localPeerName = reduxState.hmsStates.localPeer?.name;
|
|
2674
|
+
const pinnedMessages = reduxState.messages.pinnedMessages;
|
|
2675
|
+
|
|
2676
|
+
let payload = messages.map((message) => ({
|
|
2677
|
+
authorId: message.sender?.customerUserID ?? '',
|
|
2678
|
+
id: message.messageId,
|
|
2679
|
+
pinnedBy: localPeerName ?? '',
|
|
2680
|
+
text: `${message.sender?.name}: ${message.message}`,
|
|
2681
|
+
}));
|
|
2682
|
+
|
|
2683
|
+
let updatedPinnedMessages = [...pinnedMessages, ...payload];
|
|
2684
|
+
|
|
2685
|
+
if (updatedPinnedMessages.length > 3) {
|
|
2686
|
+
updatedPinnedMessages = updatedPinnedMessages.slice(
|
|
2687
|
+
updatedPinnedMessages.length - 3
|
|
2688
|
+
);
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2691
|
+
const response = await hmsSessionStore.set(
|
|
2692
|
+
updatedPinnedMessages,
|
|
2693
|
+
'pinnedMessages'
|
|
2694
|
+
);
|
|
2695
|
+
console.log('setSessionMetaData Response -> ', response);
|
|
2696
|
+
} catch (error) {
|
|
2697
|
+
console.log('setSessionMetaData Error -> ', error);
|
|
2698
|
+
return Promise.reject(error);
|
|
2699
|
+
}
|
|
2700
|
+
}
|
|
2701
|
+
},
|
|
2702
|
+
[hmsSessionStore]
|
|
2703
|
+
);
|
|
2704
|
+
|
|
2705
|
+
const unpinMessage = useCallback(
|
|
2706
|
+
async (
|
|
2707
|
+
message: HMSMessage | PinnedMessage | (HMSMessage | PinnedMessage)[]
|
|
2708
|
+
) => {
|
|
2709
|
+
let messages = message;
|
|
2710
|
+
if (!Array.isArray(messages)) {
|
|
2711
|
+
messages = [messages];
|
|
2712
|
+
}
|
|
2713
|
+
|
|
2714
|
+
// If instance of HMSSessionStore is available
|
|
2715
|
+
if (hmsSessionStore) {
|
|
2716
|
+
try {
|
|
2717
|
+
const pinnedMessages = store.getState().messages.pinnedMessages;
|
|
2718
|
+
const messageIdsToUnpin = messages.map((msg) =>
|
|
2719
|
+
'messageId' in msg ? msg.messageId : msg.id
|
|
2720
|
+
);
|
|
2721
|
+
const updatedPinnedMessages = pinnedMessages.filter(
|
|
2722
|
+
(pinnedMessage) => !messageIdsToUnpin.includes(pinnedMessage.id)
|
|
2723
|
+
);
|
|
2724
|
+
const response = await hmsSessionStore.set(
|
|
2725
|
+
updatedPinnedMessages,
|
|
2726
|
+
'pinnedMessages'
|
|
2727
|
+
);
|
|
2728
|
+
console.log('setSessionMetaData Response -> ', response);
|
|
2729
|
+
} catch (error) {
|
|
2730
|
+
console.log('setSessionMetaData Error -> ', error);
|
|
2731
|
+
return Promise.reject(error);
|
|
2732
|
+
}
|
|
2733
|
+
}
|
|
2734
|
+
},
|
|
2735
|
+
[hmsSessionStore]
|
|
2736
|
+
);
|
|
2737
|
+
|
|
2738
|
+
return { pinMessage, unpinMessage };
|
|
2739
|
+
};
|
|
2740
|
+
|
|
2741
|
+
export const useSetDefaultChatRecipient = () => {
|
|
2742
|
+
const dispatch = useDispatch();
|
|
2743
|
+
const localPeerRoleName = useSelector(
|
|
2744
|
+
(state: RootState) => state.hmsStates.localPeer?.role?.name
|
|
2745
|
+
);
|
|
2746
|
+
|
|
2747
|
+
const {
|
|
2748
|
+
privateChat,
|
|
2749
|
+
publicChat,
|
|
2750
|
+
roles: whitelistedRoles,
|
|
2751
|
+
} = useHMSChatRecipientSelector();
|
|
2752
|
+
|
|
2753
|
+
useEffect(() => {
|
|
2754
|
+
if (publicChat) {
|
|
2755
|
+
dispatch({ type: 'SET_SENDTO', sendTo: ChatBroadcastFilter });
|
|
2756
|
+
}
|
|
2757
|
+
// If Role is enabled, Select a role
|
|
2758
|
+
else if (Array.isArray(whitelistedRoles) && whitelistedRoles.length > 0) {
|
|
2759
|
+
const roleObj =
|
|
2760
|
+
whitelistedRoles.length === 1
|
|
2761
|
+
? whitelistedRoles[0]
|
|
2762
|
+
: whitelistedRoles.filter(
|
|
2763
|
+
(whitelistRole) => whitelistRole.name !== localPeerRoleName
|
|
2764
|
+
)[0];
|
|
2765
|
+
|
|
2766
|
+
if (roleObj) {
|
|
2767
|
+
dispatch({ type: 'SET_SENDTO', sendTo: roleObj });
|
|
2768
|
+
}
|
|
2769
|
+
}
|
|
2770
|
+
// If private is enabled, Select None
|
|
2771
|
+
else if (privateChat) {
|
|
2772
|
+
dispatch({ type: 'SET_SENDTO', sendTo: null });
|
|
2773
|
+
}
|
|
2774
|
+
}, [privateChat, publicChat, whitelistedRoles, localPeerRoleName, dispatch]);
|
|
2775
|
+
};
|
|
2776
|
+
|
|
2403
2777
|
export const useAndroidSoftInputAdjustResize = () => {
|
|
2404
2778
|
const currentSoftInputRef = useRef<null | SoftInputModes>(null);
|
|
2405
2779
|
|
|
@@ -2474,3 +2848,120 @@ export const useKeyboardState = () => {
|
|
|
2474
2848
|
|
|
2475
2849
|
return { keyboardState };
|
|
2476
2850
|
};
|
|
2851
|
+
|
|
2852
|
+
export const useAllowPinningMessage = () => {
|
|
2853
|
+
return useHMSChatLayoutConfig(
|
|
2854
|
+
(config) => config?.allow_pinning_messages ?? false
|
|
2855
|
+
);
|
|
2856
|
+
};
|
|
2857
|
+
|
|
2858
|
+
export const useIsLocalPeerBlockedFromChat = () => {
|
|
2859
|
+
return useSelector((state: RootState) => {
|
|
2860
|
+
const chatPeerBlacklist = state.app.chatPeerBlacklist;
|
|
2861
|
+
const localPeerUserId = state.hmsStates.localPeer?.customerUserID;
|
|
2862
|
+
|
|
2863
|
+
return localPeerUserId
|
|
2864
|
+
? chatPeerBlacklist.includes(localPeerUserId)
|
|
2865
|
+
: false;
|
|
2866
|
+
});
|
|
2867
|
+
};
|
|
2868
|
+
|
|
2869
|
+
export const useIsPeerBlocked = (peer: HMSPeer | null) => {
|
|
2870
|
+
return useSelector((state: RootState) => {
|
|
2871
|
+
const chatPeerBlacklist = state.app.chatPeerBlacklist;
|
|
2872
|
+
const localPeerUserId = peer?.customerUserID;
|
|
2873
|
+
|
|
2874
|
+
return localPeerUserId
|
|
2875
|
+
? chatPeerBlacklist.includes(localPeerUserId)
|
|
2876
|
+
: false;
|
|
2877
|
+
});
|
|
2878
|
+
};
|
|
2879
|
+
|
|
2880
|
+
export const useBlockPeerActions = () => {
|
|
2881
|
+
const store = useStore<RootState>();
|
|
2882
|
+
const hmsSessionStore = useSelector(
|
|
2883
|
+
(state: RootState) => state.user.hmsSessionStore
|
|
2884
|
+
);
|
|
2885
|
+
const { unpinMessage } = useHMSMessagePinningActions();
|
|
2886
|
+
|
|
2887
|
+
const blockPeer = useCallback(
|
|
2888
|
+
async (peer: HMSPeer) => {
|
|
2889
|
+
// If instance of HMSSessionStore is available
|
|
2890
|
+
if (hmsSessionStore) {
|
|
2891
|
+
try {
|
|
2892
|
+
const reduxState = store.getState();
|
|
2893
|
+
const chatPeerBlacklist = reduxState.app.chatPeerBlacklist;
|
|
2894
|
+
const pinnedMessages = reduxState.messages.pinnedMessages;
|
|
2895
|
+
|
|
2896
|
+
if (
|
|
2897
|
+
peer.customerUserID &&
|
|
2898
|
+
!chatPeerBlacklist.includes(peer.customerUserID)
|
|
2899
|
+
) {
|
|
2900
|
+
let updatedChatPeerBlacklist = [
|
|
2901
|
+
...chatPeerBlacklist,
|
|
2902
|
+
peer.customerUserID,
|
|
2903
|
+
];
|
|
2904
|
+
const response = await hmsSessionStore.set(
|
|
2905
|
+
updatedChatPeerBlacklist,
|
|
2906
|
+
'chatPeerBlacklist'
|
|
2907
|
+
);
|
|
2908
|
+
console.log('setSessionMetaData Response -> ', response);
|
|
2909
|
+
|
|
2910
|
+
// Unpin messages from sent by the peer
|
|
2911
|
+
const msgsToUnpin = pinnedMessages.filter(
|
|
2912
|
+
(pinnedMessage) => pinnedMessage.authorId === peer.customerUserID
|
|
2913
|
+
);
|
|
2914
|
+
if (msgsToUnpin.length > 0) {
|
|
2915
|
+
await unpinMessage(msgsToUnpin);
|
|
2916
|
+
}
|
|
2917
|
+
|
|
2918
|
+
return response;
|
|
2919
|
+
}
|
|
2920
|
+
return Promise.reject('Peer is already blocked!');
|
|
2921
|
+
} catch (error) {
|
|
2922
|
+
console.log('setSessionMetaData Error -> ', error);
|
|
2923
|
+
return Promise.reject(error);
|
|
2924
|
+
}
|
|
2925
|
+
}
|
|
2926
|
+
},
|
|
2927
|
+
[hmsSessionStore, unpinMessage]
|
|
2928
|
+
);
|
|
2929
|
+
|
|
2930
|
+
const unblockPeer = useCallback(
|
|
2931
|
+
async (peer: HMSPeer) => {
|
|
2932
|
+
// If instance of HMSSessionStore is available
|
|
2933
|
+
if (hmsSessionStore) {
|
|
2934
|
+
try {
|
|
2935
|
+
const chatPeerBlacklist = store.getState().app.chatPeerBlacklist;
|
|
2936
|
+
if (
|
|
2937
|
+
peer.customerUserID &&
|
|
2938
|
+
chatPeerBlacklist.includes(peer.customerUserID)
|
|
2939
|
+
) {
|
|
2940
|
+
const updatedChatPeerBlacklist = chatPeerBlacklist.filter(
|
|
2941
|
+
(peerUserId) => peerUserId !== peer.customerUserID
|
|
2942
|
+
);
|
|
2943
|
+
const response = await hmsSessionStore.set(
|
|
2944
|
+
updatedChatPeerBlacklist,
|
|
2945
|
+
'chatPeerBlacklist'
|
|
2946
|
+
);
|
|
2947
|
+
console.log('setSessionMetaData Response -> ', response);
|
|
2948
|
+
return response;
|
|
2949
|
+
}
|
|
2950
|
+
return Promise.reject('Peer is already unblocked!');
|
|
2951
|
+
} catch (error) {
|
|
2952
|
+
console.log('setSessionMetaData Error -> ', error);
|
|
2953
|
+
return Promise.reject(error);
|
|
2954
|
+
}
|
|
2955
|
+
}
|
|
2956
|
+
},
|
|
2957
|
+
[hmsSessionStore]
|
|
2958
|
+
);
|
|
2959
|
+
|
|
2960
|
+
return { blockPeer, unblockPeer };
|
|
2961
|
+
};
|
|
2962
|
+
|
|
2963
|
+
export const useAllowBlockingPeerFromChat = () => {
|
|
2964
|
+
return useHMSChatLayoutConfig(
|
|
2965
|
+
(config) => config?.real_time_controls?.can_block_user ?? false
|
|
2966
|
+
);
|
|
2967
|
+
};
|