import { useCallback } from 'react'; import { NativeModules, NativeEventEmitter } from 'react-native'; export enum EventType { onSessionJoin = 'onSessionJoin', onSessionLeave = 'onSessionLeave', onUserJoin = 'onUserJoin', onUserLeave = 'onUserLeave', onUserVideoStatusChanged = 'onUserVideoStatusChanged', onUserAudioStatusChanged = 'onUserAudioStatusChanged', onUserShareStatusChanged = 'onUserShareStatusChanged', onLiveStreamStatusChanged = 'onLiveStreamStatusChanged', onChatNewMessageNotify = 'onChatNewMessageNotify', onUserNameChanged = 'onUserNameChanged', onUserHostChanged = 'onUserHostChanged', onUserManagerChanged = 'onUserManagerChanged', onUserActiveAudioChanged = 'onUserActiveAudioChanged', onSessionNeedPassword = 'onSessionNeedPassword', onSessionPasswordWrong = 'onSessionPasswordWrong', onError = 'onError', onCommandReceived = 'onCommandReceived', onCommandChannelConnectResult = 'onCommandChannelConnectResult', onCloudRecordingStatus = 'onCloudRecordingStatus', onHostAskUnmute = 'onHostAskUnmute', onInviteByPhoneStatus = 'onInviteByPhoneStatus', onChatDeleteMessageNotify = 'onChatDeleteMessageNotify', onLiveTranscriptionStatus = 'onLiveTranscriptionStatus', onLiveTranscriptionMsgError = 'onLiveTranscriptionMsgError', onLiveTranscriptionMsgInfoReceived = 'onLiveTranscriptionMsgInfoReceived', onMultiCameraStreamStatusChanged = 'onMultiCameraStreamStatusChanged', onRequireSystemPermission = 'onRequireSystemPermission', onProxySettingNotification = 'onProxySettingNotification', onSSLCertVerifiedFailNotification = 'onSSLCertVerifiedFailNotification', onUserVideoNetworkStatusChanged = 'onUserVideoNetworkStatusChanged', onCameraControlRequestResult = 'onCameraControlRequestResult', onUserRecordingConsent = 'onUserRecordingConsent', onCallCRCDeviceStatusChanged = 'onCallCRCDeviceStatusChanged', onOriginalLanguageMsgReceived = 'onOriginalLanguageMsgReceived', onChatPrivilegeChanged = 'onChatPrivilegeChanged', onAnnotationHelperCleanUp = 'onAnnotationHelperCleanUp', onAnnotationPrivilegeChange = 'onAnnotationPrivilegeChange', onVideoCanvasSubscribeFail = 'onVideoCanvasSubscribeFail', onShareCanvasSubscribeFail = 'onShareCanvasSubscribeFail', onMicSpeakerVolumeChanged = 'onMicSpeakerVolumeChanged', onTestMicStatusChanged = 'onTestMicStatusChanged', onCalloutJoinSuccess = 'onCalloutJoinSuccess', onShareContentSizeChanged = 'onShareContentSizeChanged', onShareContentChanged = 'onShareContentChanged', onSubSessionStatusChanged = 'onSubSessionStatusChanged', onSubSessionManagerHandle = 'onSubSessionManagerHandle', onSubSessionParticipantHandle = 'onSubSessionParticipantHandle', onSubSessionUsersUpdate = 'onSubSessionUsersUpdate', onSubSessionUserHelpRequest = 'onSubSessionUserHelpRequest', onSubSessionUserHelpRequestResult = 'onSubSessionUserHelpRequestResult', onBroadcastMessageFromMainSession = 'onBroadcastMessageFromMainSession', onUserWhiteboardShareStatusChanged = 'onUserWhiteboardShareStatusChanged', onWhiteboardExported = 'onWhiteboardExported', onStartBroadcastResponse = 'onStartBroadcastResponse', onStopBroadcastResponse = 'onStopBroadcastResponse', onGetBroadcastControlStatus = 'onGetBroadcastControlStatus', onStreamingJoinStatusChanged = 'onStreamingJoinStatusChanged', } const eventEmitter = new NativeEventEmitter(NativeModules.RNZoomVideoSdk); export function useSdkEventListener() { const addListener = useCallback( (event: EventType, handler: (data?: any) => void) => { return eventEmitter.addListener(event, handler); }, [] ); return { addListener }; }