UNPKG

zego-express-engine-reactnative

Version:

React Native Zego Express Video for Android & iOS

925 lines (924 loc) 32.9 kB
//@ts-expect-error import { NativeModules, NativeEventEmitter } from 'react-native' import * as zego from '../ZegoExpressDefines' const { ZegoExpressNativeModule } = NativeModules const Prefix = ZegoExpressNativeModule.prefix const ZegoEvent = new NativeEventEmitter(ZegoExpressNativeModule) let engine export class ZegoExpressEngineImpl { static _listeners = new Map() static _mediaPlayerMap = new Map() static _audioEffectPlayerMap = new Map() static _realTimeSequentialDataManagerMap = new Map() _copyrightedMusic = null static getInstance() { if (engine) { return engine } else { throw new Error('Get instance failed. Please create engine first') } } static async createEngine(appID, appSign, isTestEnv, scenario) { if (engine) { return engine } await ZegoExpressNativeModule.createEngine(appID, appSign, isTestEnv, scenario) engine = new ZegoExpressEngineImpl() return engine } static async createEngineWithProfile(profile) { if (engine) { return engine } await ZegoExpressNativeModule.createEngineWithProfile(profile) engine = new ZegoExpressEngineImpl() return engine } static destroyEngine() { engine = undefined ZegoExpressEngineImpl._listeners.forEach((value, key) => { ZegoEvent.removeAllListeners(Prefix + key) }) ZegoExpressEngineImpl._mediaPlayerMap.forEach((vaule, key) => { ZegoExpressNativeModule.destroyMediaPlayer(key) }) ZegoExpressEngineImpl._listeners.clear() ZegoExpressEngineImpl._mediaPlayerMap.clear() // this.removeAllListeners(); return ZegoExpressNativeModule.destroyEngine() } static setEngineConfig(config) { return ZegoExpressNativeModule.setEngineConfig(config) } static setRoomMode(mode) { return ZegoExpressNativeModule.setRoomMode(mode) } static getVersion() { return ZegoExpressNativeModule.getVersion() } getVersion() { return ZegoExpressNativeModule.getVersion() } uploadLog() { return ZegoExpressNativeModule.uploadLog() } callExperimentalAPI(params) { return ZegoExpressNativeModule.callExperimentalAPI(params) } on(event, callback) { const native_listener = (res) => { const { data } = res // @ts-ignore callback(...data) } let map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) { map = new Map() ZegoExpressEngineImpl._listeners.set(event, map) } map.set(callback, native_listener) ZegoEvent.addListener(Prefix + event, native_listener) ZegoExpressEngineImpl._listeners.set(event, map) } off(event, callback) { if (callback === undefined) { ZegoEvent.removeAllListeners(Prefix + event) ZegoExpressEngineImpl._listeners.delete(event) } else { const map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) return ZegoEvent.removeListener(Prefix + event, map.get(callback)) map.delete(callback) } } loginRoom(roomID, user, config) { return ZegoExpressNativeModule.loginRoom(roomID, user, config) } logoutRoom(roomID) { return ZegoExpressNativeModule.logoutRoom(roomID) } switchRoom(fromRoomID, toRoomID, config) { return ZegoExpressNativeModule.switchRoom(fromRoomID, toRoomID, config) } renewToken(roomID, token) { return ZegoExpressNativeModule.renewToken(roomID, token) } setRoomExtraInfo(roomID, key, value) { return ZegoExpressNativeModule.setRoomExtraInfo(roomID, key, value) } setStreamExtraInfo(extraInfo, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setStreamExtraInfo(extraInfo, channel) } sendBroadcastMessage(roomID, message) { return ZegoExpressNativeModule.sendBroadcastMessage(roomID, message) } sendBarrageMessage(roomID, message) { return ZegoExpressNativeModule.sendBarrageMessage(roomID, message) } sendCustomCommand(roomID, command, toUserList) { return ZegoExpressNativeModule.sendCustomCommand(roomID, command, toUserList) } startPublishingStream(streamID, channel = zego.ZegoPublishChannel.Main, config) { return ZegoExpressNativeModule.startPublishingStream(streamID, channel, config) } stopPublishingStream(channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.stopPublishingStream(channel) } startPreview(view, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.startPreview(view, channel) } stopPreview(channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.stopPreview(channel) } setVideoConfig(config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setVideoConfig(config, channel) } getVideoConfig(channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.getVideoConfig(channel) } setVideoMirrorMode(mode, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setVideoMirrorMode(mode, channel) } setAppOrientation(mode, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setAppOrientation(mode, channel) } setAudioConfig(config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setAudioConfig(config, channel) } getAudioConfig(channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.getAudioConfig(channel) } mutePublishStreamAudio(mute, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.mutePublishStreamAudio(mute, channel) } mutePublishStreamVideo(mute, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.mutePublishStreamVideo(mute, channel) } setCaptureVolume(volume) { return ZegoExpressNativeModule.setCaptureVolume(volume) } addPublishCdnUrl(streamID, targetURL) { return ZegoExpressNativeModule.addPublishCdnUrl(streamID, targetURL) } removePublishCdnUrl(streamID, targetURL) { return ZegoExpressNativeModule.removePublishCdnUrl(streamID, targetURL) } enablePublishDirectToCDN(enable, config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enablePublishDirectToCDN(enable, config, channel) } sendSEI(data, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.sendSEI(Array.from(data), channel) } enableHardwareEncoder(enable) { return ZegoExpressNativeModule.enableHardwareEncoder(enable) } enableH265EncodeFallback(enable) { return ZegoExpressNativeModule.enableH265EncodeFallback(enable) } isVideoEncoderSupported(codecID) { return ZegoExpressNativeModule.isVideoEncoderSupported(codecID) } startPlayingStream(streamID, view, config) { return ZegoExpressNativeModule.startPlayingStream(streamID, view, config) } stopPlayingStream(streamID) { return ZegoExpressNativeModule.stopPlayingStream(streamID) } setPlayVolume(streamID, volume) { return ZegoExpressNativeModule.setPlayVolume(streamID, volume) } setAllPlayStreamVolume(volume) { return ZegoExpressNativeModule.setAllPlayStreamVolume(volume) } setPlayStreamVideoType(streamID, streamType) { return ZegoExpressNativeModule.setPlayStreamVideoType(streamID, streamType) } takePublishStreamSnapshot(channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.takePublishStreamSnapshot(channel) } takePlayStreamSnapshot(streamID) { return ZegoExpressNativeModule.takePlayStreamSnapshot(streamID) } mutePlayStreamAudio(streamID, mute) { return ZegoExpressNativeModule.mutePlayStreamAudio(streamID, mute) } mutePlayStreamVideo(streamID, mute) { return ZegoExpressNativeModule.mutePlayStreamVideo(streamID, mute) } muteAllPlayStreamAudio(mute) { return ZegoExpressNativeModule.muteAllPlayStreamAudio(mute) } muteAllPlayStreamVideo(mute) { return ZegoExpressNativeModule.muteAllPlayStreamVideo(mute) } enableHardwareDecoder(enable) { return ZegoExpressNativeModule.enableHardwareDecoder(enable) } isVideoDecoderSupported(codecID) { return ZegoExpressNativeModule.isVideoDecoderSupported(codecID) } muteMicrophone(mute) { return ZegoExpressNativeModule.muteMicrophone(mute) } isMicrophoneMuted() { return ZegoExpressNativeModule.isMicrophoneMuted() } muteSpeaker(mute) { return ZegoExpressNativeModule.muteSpeaker(mute) } isSpeakerMuted() { return ZegoExpressNativeModule.isSpeakerMuted() } enableAudioCaptureDevice(enable) { return ZegoExpressNativeModule.enableAudioCaptureDevice(enable) } getAudioRouteType() { return ZegoExpressNativeModule.getAudioRouteType() } setAudioRouteToSpeaker(defaultToSpeaker) { return ZegoExpressNativeModule.setAudioRouteToSpeaker(defaultToSpeaker) } enableCamera(enable, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enableCamera(enable, channel) } useFrontCamera(enable, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.useFrontCamera(enable, channel) } startSoundLevelMonitor(config) { return ZegoExpressNativeModule.startSoundLevelMonitor(config) } stopSoundLevelMonitor() { return ZegoExpressNativeModule.stopSoundLevelMonitor() } enableHeadphoneMonitor(enable) { return ZegoExpressNativeModule.enableHeadphoneMonitor(enable) } enableAEC(enable) { return ZegoExpressNativeModule.enableAEC(enable) } enableHeadphoneAEC(enable) { return ZegoExpressNativeModule.enableHeadphoneAEC(enable) } setAECMode(mode) { return ZegoExpressNativeModule.setAECMode(mode) } enableAGC(enable) { return ZegoExpressNativeModule.enableAGC(enable) } enableANS(enable) { return ZegoExpressNativeModule.enableANS(enable) } setANSMode(mode) { return ZegoExpressNativeModule.setANSMode(mode) } enableBeautify(feature, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enableBeautify(feature, channel) } setBeautifyOption(option, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setBeautifyOption(option, channel) } startNetworkSpeedTest(config, interval = 3000) { return ZegoExpressNativeModule.startNetworkSpeedTest(config, interval) } stopNetworkSpeedTest() { return ZegoExpressNativeModule.stopNetworkSpeedTest() } getNetworkTimeInfo() { return ZegoExpressNativeModule.getNetworkTimeInfo() } enableCustomAudioIO(enable, config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enableCustomAudioIO(enable, config, channel) } enableCustomVideoCapture(enable, config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enableCustomVideoCapture(enable, config, channel) } enableCustomVideoProcessing(enable, config, channel) { return ZegoExpressNativeModule.enableCustomVideoProcessing(enable, config, channel) } setVideoSource(source, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setVideoSource(source, channel) } setAudioSource(source, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.setAudioSource(source, channel) } enableVideoObjectSegmentation(enable, config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enableVideoObjectSegmentation(enable, config, channel) } enableAlphaChannelVideoEncoder(enable, alphaLayout, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.enableAlphaChannelVideoEncoder(enable, alphaLayout, channel) } startScreenCaptureInApp(config) { return ZegoExpressNativeModule.startScreenCaptureInApp(config) } startScreenCapture(config) { return ZegoExpressNativeModule.startScreenCapture(config) } stopScreenCapture() { return ZegoExpressNativeModule.stopScreenCapture() } updateScreenCaptureConfig(config) { return ZegoExpressNativeModule.updateScreenCaptureConfig(config) } async createMediaPlayer() { var index = await ZegoExpressNativeModule.createMediaPlayer() if (index >= 0) { var mediaPlayer = new ZegoMediaPlayerImpl(index) ZegoExpressEngineImpl._mediaPlayerMap.set(index, mediaPlayer) return mediaPlayer } return null } async destroyMediaPlayer(mediaPlayer) { var index = mediaPlayer.getIndex() if (index >= 0) { await ZegoExpressNativeModule.destroyMediaPlayer(index) ZegoExpressEngineImpl._mediaPlayerMap.delete(index) mediaPlayer.off('mediaPlayerStateUpdate', undefined) mediaPlayer.off('mediaPlayerNetworkEvent', undefined) mediaPlayer.off('mediaPlayerPlayingProgress', undefined) } return } async createAudioEffectPlayer() { let index = await ZegoExpressNativeModule.createAudioEffectPlayer() if (index >= 0) { let player = new ZegoAudioEffectPlayerImpl(index) ZegoExpressEngineImpl._audioEffectPlayerMap.set(index, player) return player } return null } async destroyAudioEffectPlayer(audioEffectPlayer) { let index = audioEffectPlayer.getIndex() if (index >= 0) { await ZegoExpressNativeModule.destroyAudioEffectPlayer(index) ZegoExpressEngineImpl._audioEffectPlayerMap.delete(index) audioEffectPlayer.off('audioEffectPlayerStateUpdate', undefined) } return } async createRealTimeSequentialDataManager(roomID) { let index = await ZegoExpressNativeModule.createRealTimeSequentialDataManager(roomID) if (index >= 0) { let manager = new ZegoRealTimeSequentialDataManagerImpl(index) ZegoExpressEngineImpl._realTimeSequentialDataManagerMap.set(index, manager) return manager } return null } async destroyRealTimeSequentialDataManager(manager) { let index = manager.getIndex() if (index >= 0) { await ZegoExpressNativeModule.destroyRealTimeSequentialDataManager(index) ZegoExpressEngineImpl._realTimeSequentialDataManagerMap.delete(index) manager.off('receiveRealTimeSequentialData', undefined) } return } async createCopyrightedMusic() { if (this._copyrightedMusic) { return this._copyrightedMusic } try { let index = await ZegoExpressNativeModule.createCopyrightedMusic() if (index >= 0) { this._copyrightedMusic = new ZegoCopyrightedMusicImpl() return this._copyrightedMusic } return null } catch (error) { return null } } async destroyCopyrightedMusic(copyrightedMusic) { if (this._copyrightedMusic === copyrightedMusic) { await ZegoExpressNativeModule.destroyCopyrightedMusic() this._copyrightedMusic = null } } startRecordingCapturedData(config, channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.startRecordingCapturedData(config, channel) } stopRecordingCapturedData(channel = zego.ZegoPublishChannel.Main) { return ZegoExpressNativeModule.stopRecordingCapturedData(channel) } startMixerTask(task) { return ZegoExpressNativeModule.startMixerTask(task) } stopMixerTask(task) { return ZegoExpressNativeModule.stopMixerTask(task) } startEffectsEnv() { return ZegoExpressNativeModule.startEffectsEnv() } stopEffectsEnv() { return ZegoExpressNativeModule.stopEffectsEnv() } enableEffectsBeauty(enable) { return ZegoExpressNativeModule.enableEffectsBeauty(enable) } setEffectsBeautyParam(param) { return ZegoExpressNativeModule.setEffectsBeautyParam(param) } setVoiceChangerPreset(preset) { return ZegoExpressNativeModule.setVoiceChangerPreset(preset) } setVoiceChangerParam(param) { return ZegoExpressNativeModule.setVoiceChangerParam(param) } setAudioEqualizerGain(bandIndex, bandGain) { return ZegoExpressNativeModule.setAudioEqualizerGain(bandIndex, bandGain) } setReverbPreset(preset) { return ZegoExpressNativeModule.setReverbPreset(preset) } setReverbAdvancedParam(param) { return ZegoExpressNativeModule.setReverbAdvancedParam(param) } setReverbEchoParam(param) { return ZegoExpressNativeModule.setReverbEchoParam(param) } setElectronicEffects(enable, mode, tonal) { return ZegoExpressNativeModule.setElectronicEffects(enable, mode, tonal) } setStreamAlignmentProperty(alignment, channel) { return ZegoExpressNativeModule.setStreamAlignmentProperty(alignment, channel) } setAudioCaptureStereoMode(mode) { return ZegoExpressNativeModule.setAudioCaptureStereoMode(mode) } setPlayStreamBufferIntervalRange(streamID, minBufferInterval, maxBufferInterval) { return ZegoExpressNativeModule.setPlayStreamBufferIntervalRange( streamID, minBufferInterval, maxBufferInterval ) } setPlayStreamsAlignmentProperty(mode) { return ZegoExpressNativeModule.setPlayStreamsAlignmentProperty(mode) } setAudioDeviceMode(deviceMode) { return ZegoExpressNativeModule.setAudioDeviceMode(deviceMode) } enableVirtualStereo(enable, angle) { return ZegoExpressNativeModule.enableVirtualStereo(enable, angle) } enableCustomAudioCaptureProcessing(enable, config) { return ZegoExpressNativeModule.enableCustomAudioCaptureProcessing(enable, config) } enableAlignedAudioAuxData(enable, param) { return ZegoExpressNativeModule.enableAlignedAudioAuxData(enable, param) } enableBeforeAudioPrepAudioData(enable, param) { return ZegoExpressNativeModule.enableBeforeAudioPrepAudioData(enable, param) } enableCustomAudioPlaybackProcessing(enable, config) { return ZegoExpressNativeModule.enableCustomAudioPlaybackProcessing(enable, config) } enableCustomAudioRemoteProcessing(enable, config) { return ZegoExpressNativeModule.enableCustomAudioRemoteProcessing(enable, config) } enableCustomAudioCaptureProcessingAfterHeadphoneMonitor(enable, config) { return ZegoExpressNativeModule.enableCustomAudioCaptureProcessingAfterHeadphoneMonitor( enable, config ) } } export class ZegoMediaPlayerImpl extends zego.ZegoMediaPlayer { _index constructor(index) { super() this._index = index } on(event, callback) { const native_listener = (res) => { const { data, idx } = res if (idx >= 0) { let mediaPlayer = ZegoExpressEngineImpl._mediaPlayerMap.get(idx) // @ts-ignore callback(mediaPlayer, ...data) } } let map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) { map = new Map() ZegoExpressEngineImpl._listeners.set(event, map) } map.set(callback, native_listener) ZegoEvent.addListener(Prefix + event, native_listener) ZegoExpressEngineImpl._listeners.set(event, map) } off(event, callback) { if (callback === undefined) { ZegoEvent.removeAllListeners(Prefix + event) ZegoExpressEngineImpl._listeners.delete(event) } else { const map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) return ZegoEvent.removeListener(Prefix + event, map.get(callback)) map.delete(callback) } } loadResource(path) { return ZegoExpressNativeModule.mediaPlayerLoadResource(this._index, path) } loadResourceWithConfig(resource) { return ZegoExpressNativeModule.mediaPlayerLoadResourceWithConfig(this._index, resource) } start() { return ZegoExpressNativeModule.mediaPlayerStart(this._index) } stop() { return ZegoExpressNativeModule.mediaPlayerStop(this._index) } pause() { return ZegoExpressNativeModule.mediaPlayerPause(this._index) } resume() { return ZegoExpressNativeModule.mediaPlayerResume(this._index) } setPlayerView(view) { return ZegoExpressNativeModule.mediaPlayerSetPlayerCanvas(this._index, view) } seekTo(millisecond) { return ZegoExpressNativeModule.mediaPlayerSeekTo(this._index, millisecond) } setPlaySpeed(speed) { return ZegoExpressNativeModule.mediaPlayerSetPlaySpeed(this._index, speed) } enableRepeat(enable) { return ZegoExpressNativeModule.mediaPlayerEnableRepeat(this._index, enable) } enableAux(enable) { return ZegoExpressNativeModule.mediaPlayerEnableAux(this._index, enable) } muteLocal(mute) { return ZegoExpressNativeModule.mediaPlayerMuteLocal(this._index, mute) } setVolume(volume) { return ZegoExpressNativeModule.mediaPlayerSetVolume(this._index, volume) } setPlayVolume(volume) { return ZegoExpressNativeModule.mediaPlayerSetPlayVolume(this._index, volume) } setPublishVolume(volume) { return ZegoExpressNativeModule.mediaPlayerSetPublishVolume(this._index, volume) } setProgressInterval(millisecond) { return ZegoExpressNativeModule.mediaPlayerSetProgressInterval(this._index, millisecond) } getPlayVolume() { return ZegoExpressNativeModule.mediaPlayerGetPlayVolume(this._index) } getPublishVolume() { return ZegoExpressNativeModule.mediaPlayerGetPublishVolume(this._index) } getTotalDuration() { return ZegoExpressNativeModule.mediaPlayerGetTotalDuration(this._index) } getCurrentProgress() { return ZegoExpressNativeModule.mediaPlayerGetCurrentProgress(this._index) } getAudioTrackCount() { return ZegoExpressNativeModule.mediaPlayerGetAudioTrackCount(this._index) } setAudioTrackIndex(index) { return ZegoExpressNativeModule.mediaPlayerSetAudioTrackIndex(this._index, index) } getCurrentState() { return ZegoExpressNativeModule.mediaPlayerGetCurrentState(this._index) } getCurrentRenderingProgress() { return ZegoExpressNativeModule.mediaPlayerGetCurrentRenderingProgress(this._index) } getIndex() { return this._index } setAudioTrackMode(mode) { return ZegoExpressNativeModule.mediaPlayerSetAudioTrackMode(this._index, mode) } setAudioTrackPublishIndex(index) { return ZegoExpressNativeModule.mediaPlayerSetAudioTrackPublishIndex(this._index, index) } enableVoiceChanger(audioChannel, enable, param) { return ZegoExpressNativeModule.mediaPlayerEnableVoiceChanger( this._index, audioChannel, enable, param ) } takeSnapshot() { return ZegoExpressNativeModule.mediaPlayerTakeSnapshot(this._index) } setNetWorkResourceMaxCache(time, size) { return ZegoExpressNativeModule.mediaPlayerSetNetWorkResourceMaxCache(this._index, time, size) } getNetWorkResourceCache() { return ZegoExpressNativeModule.mediaPlayerGetNetWorkResourceCache(this._index) } setNetWorkBufferThreshold(threshold) { return ZegoExpressNativeModule.mediaPlayerSetNetWorkBufferThreshold(this._index, threshold) } enableSoundLevelMonitor(enable, millisecond) { return ZegoExpressNativeModule.mediaPlayerEnableSoundLevelMonitor( this._index, enable, millisecond ) } enableFrequencySpectrumMonitor(enable, millisecond) { return ZegoExpressNativeModule.mediaPlayerEnableFrequencySpectrumMonitor( this._index, enable, millisecond ) } setActiveAudioChannel(channel) { return ZegoExpressNativeModule.mediaPlayerSetActiveAudioChannel(this._index, channel) } getMediaInfo() { return ZegoExpressNativeModule.mediaPlayerGetMediaInfo(this._index) } updatePosition(position) { return ZegoExpressNativeModule.mediaPlayerUpdatePosition(this._index, position) } setHttpHeader(headers) { return ZegoExpressNativeModule.mediaPlayerSetHttpHeader(this._index, headers) } setPlayMediaStreamType(streamType) { return ZegoExpressNativeModule.mediaPlayerSetPlayMediaStreamType(this._index, streamType) } clearView() { return ZegoExpressNativeModule.mediaPlayerClearView(this._index) } enableLiveAudioEffect(enable, mode) { return ZegoExpressNativeModule.mediaPlayerEnableLiveAudioEffect(this._index, enable, mode) } enableLocalCache(enable, cacheDir) { return ZegoExpressNativeModule.mediaPlayerEnableLocalCache(this._index, enable, cacheDir) } getPlaybackStatistics() { return ZegoExpressNativeModule.mediaPlayerGetPlaybackStatistics(this._index) } enableViewMirror(enable) { return ZegoExpressNativeModule.mediaPlayerEnableViewMirror(this._index, enable) } } export class ZegoAudioEffectPlayerImpl extends zego.ZegoAudioEffectPlayer { _index constructor(index) { super() this._index = index } on(event, callback) { const native_listener = (res) => { const { data, idx } = res if (idx >= 0) { let player = ZegoExpressEngineImpl._audioEffectPlayerMap.get(idx) // @ts-ignore callback(player, ...data) } } let map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) { map = new Map() ZegoExpressEngineImpl._listeners.set(event, map) } map.set(callback, native_listener) ZegoEvent.addListener(Prefix + event, native_listener) ZegoExpressEngineImpl._listeners.set(event, map) } off(event, callback) { if (callback === undefined) { ZegoEvent.removeAllListeners(Prefix + event) ZegoExpressEngineImpl._listeners.delete(event) } else { const map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) return ZegoEvent.removeListener(Prefix + event, map.get(callback)) map.delete(callback) } } start(audioEffectID, path, config) { return ZegoExpressNativeModule.audioEffectPlayerStart(this._index, audioEffectID, path, config) } stop(audioEffectID) { return ZegoExpressNativeModule.audioEffectPlayerStop(this._index, audioEffectID) } pause(audioEffectID) { return ZegoExpressNativeModule.audioEffectPlayerPause(this._index, audioEffectID) } resume(audioEffectID) { return ZegoExpressNativeModule.audioEffectPlayerResume(this._index, audioEffectID) } stopAll() { return ZegoExpressNativeModule.audioEffectPlayerStopAll(this._index) } pauseAll() { return ZegoExpressNativeModule.audioEffectPlayerPauseAll(this._index) } resumeAll() { return ZegoExpressNativeModule.audioEffectPlayerResumeAll(this._index) } seekTo(audioEffectID, millisecond) { return ZegoExpressNativeModule.audioEffectPlayerSeekTo(this._index, audioEffectID, millisecond) } setVolume(audioEffectID, volume) { return ZegoExpressNativeModule.audioEffectPlayerSetVolume(this._index, audioEffectID, volume) } setVolumeAll(volume) { return ZegoExpressNativeModule.audioEffectPlayerSetVolumeAll(this._index, volume) } getTotalDuration(audioEffectID) { return ZegoExpressNativeModule.audioEffectPlayerGetTotalDuration(this._index, audioEffectID) } getCurrentProgress(audioEffectID) { return ZegoExpressNativeModule.audioEffectPlayerGetCurrentProgress(this._index, audioEffectID) } loadResource(audioEffectID, path) { return ZegoExpressNativeModule.audioEffectPlayerLoadResource(this._index, audioEffectID, path) } unloadResource(audioEffectID) { return ZegoExpressNativeModule.audioEffectPlayerUnloadResource(this._index, audioEffectID) } getIndex() { return this._index } } export class ZegoRealTimeSequentialDataManagerImpl extends zego.ZegoRealTimeSequentialDataManager { _index constructor(index) { super() this._index = index } on(event, callback) { const native_listener = (res) => { const { data, idx } = res if (idx >= 0) { let manager = ZegoExpressEngineImpl._realTimeSequentialDataManagerMap.get(idx) // @ts-ignore callback(manager, ...data) } } let map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) { map = new Map() ZegoExpressEngineImpl._listeners.set(event, map) } map.set(callback, native_listener) ZegoEvent.addListener(Prefix + event, native_listener) ZegoExpressEngineImpl._listeners.set(event, map) } off(event, callback) { if (callback === undefined) { ZegoEvent.removeAllListeners(Prefix + event) ZegoExpressEngineImpl._listeners.delete(event) } else { const map = ZegoExpressEngineImpl._listeners.get(event) if (map === undefined) return ZegoEvent.removeListener(Prefix + event, map.get(callback)) map.delete(callback) } } startBroadcasting(streamID) { return ZegoExpressNativeModule.realTimeSequentialDataManagerStartBroadcasting( this._index, streamID ) } stopBroadcasting(streamID) { return ZegoExpressNativeModule.realTimeSequentialDataManagerStopBroadcasting( this._index, streamID ) } startSubscribing(streamID) { return ZegoExpressNativeModule.realTimeSequentialDataManagerStartSubscribing( this._index, streamID ) } stopSubscribing(streamID) { return ZegoExpressNativeModule.realTimeSequentialDataManagerStopSubscribing( this._index, streamID ) } sendRealTimeSequentialData(data, streamID) { return ZegoExpressNativeModule.realTimeSequentialDataManagerSendRealTimeSequentialData( this._index, Array.from(data), streamID ) } getIndex() { return this._index } } export class ZegoCopyrightedMusicImpl extends zego.ZegoCopyrightedMusic { _eventListeners = new Map() constructor() { super() } on(event, callback) { if (!this._eventListeners.has(event)) { this._eventListeners.set(event, new Map()) } const native_listener = (res) => { const { data, idx } = res if (idx >= 0) { // @ts-ignore callback(ZegoExpressEngineImpl.getInstance()._copyrightedMusic, ...data) } } this._eventListeners.get(event).set(callback, native_listener) ZegoEvent.addListener(Prefix + 'CopyrightedMusic' + event, native_listener) } off(event, callback) { if (!this._eventListeners.has(event)) return if (callback && this._eventListeners.get(event).has(callback)) { const native_listener = this._eventListeners.get(event).get(callback) ZegoEvent.removeListener(Prefix + 'CopyrightedMusic' + event, native_listener) this._eventListeners.get(event).delete(callback) } else { this._eventListeners.get(event).forEach((native_listener, callback) => { ZegoEvent.removeListener(Prefix + 'CopyrightedMusic' + event, native_listener) }) this._eventListeners.get(event).clear() } } initCopyrightedMusic(config) { return ZegoExpressNativeModule.copyrightedMusicInit(config) } getCacheSize() { return ZegoExpressNativeModule.copyrightedMusicGetCacheSize() } clearCache() { return ZegoExpressNativeModule.copyrightedMusicClearCache() } sendExtendedRequest(command, params) { return ZegoExpressNativeModule.copyrightedMusicSendExtendedRequest(command, params) } getLrcLyric(config) { return ZegoExpressNativeModule.copyrightedMusicGetLrcLyric(config) } getKrcLyricByToken(krcToken) { return ZegoExpressNativeModule.copyrightedMusicGetKrcLyricByToken(krcToken) } requestResource(config) { return ZegoExpressNativeModule.copyrightedMusicRequestResource(config) } getSharedResource(config) { return ZegoExpressNativeModule.copyrightedMusicGetSharedResource(config) } download(resourceID) { return ZegoExpressNativeModule.copyrightedMusicDownload(resourceID) } cancelDownload(resourceID) { return ZegoExpressNativeModule.copyrightedMusicCancelDownload(resourceID) } queryCache(config) { return ZegoExpressNativeModule.copyrightedMusicQueryCache(config) } getDuration(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetDuration(resourceID) } setScoringLevel(level) { return ZegoExpressNativeModule.copyrightedMusicSetScoringLevel(level) } startScore(resourceID, pitchValueInterval) { return ZegoExpressNativeModule.copyrightedMusicStartScore(resourceID, pitchValueInterval) } pauseScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicPauseScore(resourceID) } resumeScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicResumeScore(resourceID) } stopScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicStopScore(resourceID) } resetScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicResetScore(resourceID) } getPreviousScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetPreviousScore(resourceID) } getAverageScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetAverageScore(resourceID) } getTotalScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetTotalScore(resourceID) } getFullScore(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetFullScore(resourceID) } getStandardPitch(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetStandardPitch(resourceID) } getCurrentPitch(resourceID) { return ZegoExpressNativeModule.copyrightedMusicGetCurrentPitch(resourceID) } }