UNPKG

@100mslive/react-native-room-kit

Version:

100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.

213 lines 9.57 kB
import { useDispatch, useSelector, useStore } from 'react-redux'; import { setIsLocalAudioMutedState, setIsLocalScreenSharedState, setIsLocalVideoMutedState, setRoomLocallyMuted } from './redux/actions'; import { selectAllowedTracksToPublish, selectCanPublishTrack, selectIsAnyStreamingOn, selectIsHLSStreamingOn } from './hooks-sdk-selectors'; import { useCallback } from 'react'; import { HMSRecordingState } from '@100mslive/react-native-hms'; export const useAllowedTracksToPublish = () => { return useSelector(selectAllowedTracksToPublish); }; export const useCanPublishAudio = () => { return useSelector(state => selectCanPublishTrack(state, 'audio')); }; export const useCanPublishVideo = () => { return useSelector(state => selectCanPublishTrack(state, 'video')); }; export const useCanPublishScreen = () => { return useSelector(state => selectCanPublishTrack(state, 'screen')); }; export const useHMSActions = () => { const dispatch = useDispatch(); const store = useStore(); const setLocalAudioEnabled = useCallback(async enable => { const state = store.getState(); const localPeer = state.hmsStates.localPeer; if (!localPeer) { return Promise.reject('Local Peer Instance is not available!'); } const localAudioTrack = localPeer.localAudioTrack(); if (!localAudioTrack) { return Promise.reject('Local Peer Audio Track Instance is not available!'); } try { dispatch(setIsLocalAudioMutedState(enable)); localAudioTrack.setMute(enable); } catch (error) { dispatch(setIsLocalAudioMutedState(!enable)); return Promise.reject(error); } }, []); const setLocalVideoEnabled = useCallback(async enable => { const state = store.getState(); const localPeer = state.hmsStates.localPeer; if (!localPeer) { return Promise.reject('Local Peer Instance is not available!'); } const localVideoTrack = localPeer.localVideoTrack(); if (!localVideoTrack) { return Promise.reject('Local Peer Video Track Instance is not available!'); } try { dispatch(setIsLocalVideoMutedState(enable)); localVideoTrack.setMute(enable); } catch (error) { dispatch(setIsLocalVideoMutedState(!enable)); return Promise.reject(error); } }, []); const switchCamera = useCallback(async () => { const state = store.getState(); const localPeer = state.hmsStates.localPeer; if (!localPeer) { return Promise.reject('Local Peer Instance is not available!'); } const localVideoTrack = localPeer.localVideoTrack(); if (!localVideoTrack) { return Promise.reject('Local Peer Video Track Instance is not available!'); } localVideoTrack.switchCamera(); }, []); const setScreenShareEnabled = useCallback(async enable => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { if (enable) { const result = await hmsInstance.startScreenshare(); console.log('Start Screenshare Success: ', result); } else { const result = await hmsInstance.stopScreenshare(); console.log('Stop Screenshare Success: ', result); } dispatch(setIsLocalScreenSharedState(enable)); } catch (error) { if (enable) { console.log('Start Screenshare Error: ', error); } else { console.log('Stop Screenshare Error: ', error); } return Promise.reject(error); } }, []); const changeMetadata = useCallback(async metadata => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { const parsedMetadata = typeof metadata === 'string' ? metadata : JSON.stringify(metadata); const result = await hmsInstance.changeMetadata(parsedMetadata); console.log('Change Metadata Success: ', result); } catch (error) { console.log('Change Metadata Error: ', error); return Promise.reject(error); } }, []); const changeName = useCallback(async name => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { const result = await hmsInstance.changeName(name); console.log('Change Name Success: ', result); } catch (error) { console.log('Change Name Error: ', error); return Promise.reject(error); } }, []); const raiseLocalPeerHand = useCallback(async () => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { const result = await hmsInstance.raiseLocalPeerHand(); console.log('Raise Local Peer Hand Success: ', result); } catch (error) { console.log('Raise Local Peer Hand Error: ', error); return Promise.reject(error); } }, []); const lowerLocalPeerHand = useCallback(async () => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { const result = await hmsInstance.lowerLocalPeerHand(); console.log('Lower Local Peer Hand Success: ', result); } catch (error) { console.log('Lower Local Peer Hand Error: ', error); return Promise.reject(error); } }, []); const lowerRemotePeerHand = useCallback(async peer => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { const result = await hmsInstance.lowerRemotePeerHand(peer); console.log('Lower Remote Peer Hand Success: ', result); } catch (error) { console.log('Lower Remote Peer Hand Error: ', error); return Promise.reject(error); } }, []); const setRoomMuteLocally = useCallback(async mute => { const state = store.getState(); const hmsInstance = state.user.hmsInstance; if (!hmsInstance) { return Promise.reject('HMSSDK Instance is not available!'); } try { const result = await hmsInstance.setPlaybackForAllAudio(mute); console.log('Set Room Mute Locally Success: ', result); dispatch(setRoomLocallyMuted(mute)); } catch (error) { console.log('Set Room Mute Locally Error: ', error); return Promise.reject(error); } }, []); return { setLocalAudioEnabled, setLocalVideoEnabled, switchCamera, setScreenShareEnabled, changeMetadata, changeName, raiseLocalPeerHand, lowerLocalPeerHand, lowerRemotePeerHand, setRoomMuteLocally }; }; export const useIsHLSStreamingOn = () => { return useSelector(selectIsHLSStreamingOn); }; export const useIsAnyStreamingOn = () => { return useSelector(selectIsAnyStreamingOn); }; export const useIsAnyRecordingOn = () => { return useSelector(state => { var _room$browserRecordin, _room$browserRecordin2, _room$serverRecording, _room$serverRecording2, _room$hlsRecordingSta, _room$hlsRecordingSta2; const room = state.hmsStates.room; return (room === null || room === void 0 || (_room$browserRecordin = room.browserRecordingState) === null || _room$browserRecordin === void 0 ? void 0 : _room$browserRecordin.state) === HMSRecordingState.STARTED || (room === null || room === void 0 || (_room$browserRecordin2 = room.browserRecordingState) === null || _room$browserRecordin2 === void 0 ? void 0 : _room$browserRecordin2.state) === HMSRecordingState.RESUMED || (room === null || room === void 0 || (_room$serverRecording = room.serverRecordingState) === null || _room$serverRecording === void 0 ? void 0 : _room$serverRecording.state) === HMSRecordingState.STARTED || (room === null || room === void 0 || (_room$serverRecording2 = room.serverRecordingState) === null || _room$serverRecording2 === void 0 ? void 0 : _room$serverRecording2.state) === HMSRecordingState.RESUMED || (room === null || room === void 0 || (_room$hlsRecordingSta = room.hlsRecordingState) === null || _room$hlsRecordingSta === void 0 ? void 0 : _room$hlsRecordingSta.state) === HMSRecordingState.STARTED || (room === null || room === void 0 || (_room$hlsRecordingSta2 = room.hlsRecordingState) === null || _room$hlsRecordingSta2 === void 0 ? void 0 : _room$hlsRecordingSta2.state) === HMSRecordingState.RESUMED; }); }; export const useIsAnyRecordingPaused = () => { const isRecordingPaused = useSelector(state => { var _room$browserRecordin3, _room$serverRecording3, _room$hlsRecordingSta3; const room = state.hmsStates.room; return (room === null || room === void 0 || (_room$browserRecordin3 = room.browserRecordingState) === null || _room$browserRecordin3 === void 0 ? void 0 : _room$browserRecordin3.state) === HMSRecordingState.PAUSED || (room === null || room === void 0 || (_room$serverRecording3 = room.serverRecordingState) === null || _room$serverRecording3 === void 0 ? void 0 : _room$serverRecording3.state) === HMSRecordingState.PAUSED || (room === null || room === void 0 || (_room$hlsRecordingSta3 = room.hlsRecordingState) === null || _room$hlsRecordingSta3 === void 0 ? void 0 : _room$hlsRecordingSta3.state) === HMSRecordingState.PAUSED; }); return isRecordingPaused; }; //# sourceMappingURL=hooks-sdk.js.map