Resumes a consumer transport by handling the provided track and updating the application state.

This function manages the resumption of media consumer transports (audio/video/screen) and updates the UI accordingly. It supports custom UI components through both custom render functions and component overrides, particularly for the MiniAudioPlayer component.

Key responsibilities:

  • Creates MediaStream from received track
  • Updates stream arrays (audio, video, screen)
  • Triggers UI updates through reorderStreams and prepopulateUserMedia
  • Handles MiniAudioPlayer rendering for off-screen audio participants
  • Manages consumer transport state
const CustomMiniAudio = ({ stream, name }) => (
<View><Text>🎵 {name}</Text></View>
);

Throws an error if the resumption fails or if there is an issue with the parameters.

// Basic usage
import { consumerResume } from 'mediasfu-reactnative-expo';

await consumerResume({
track: audioTrack,
remoteProducerId: 'producer-123',
params: {
id: 'consumer-456',
producerId: 'producer-123',
kind: 'audio',
rtpParameters: rtpParams,
},
consumer: consumerInstance,
nsock: socketInstance,
parameters: {
eventType: 'conference',
participants: allParticipants,
// ... other required parameters
},
});
// With custom MiniAudio component for off-screen audio visualization
import { consumerResume } from 'mediasfu-reactnative-expo';
import { CustomMiniAudio } from './components/CustomMiniAudio';

await consumerResume({
track: audioTrack,
remoteProducerId: 'producer-123',
params: {
id: 'consumer-456',
producerId: 'producer-123',
kind: 'audio',
rtpParameters: rtpParams,
},
consumer: consumerInstance,
nsock: socketInstance,
parameters: {
miniAudioComponent: CustomMiniAudio, // Custom audio waveform component
eventType: 'conference',
participants: allParticipants,
// ... other parameters
},
});
// With full component override suite
import { consumerResume } from 'mediasfu-reactnative-expo';

await consumerResume({
track: videoTrack,
remoteProducerId: 'producer-789',
params: {
id: 'consumer-101',
producerId: 'producer-789',
kind: 'video',
rtpParameters: rtpParams,
},
consumer: consumerInstance,
nsock: socketInstance,
parameters: {
audioOnlyStreams: [],
gotAllVids: false,
defer_receive: false,
firstAll: false,
remoteScreenStream: [],
hostLabel: 'host',
whiteboardStarted: false,
whiteboardEnded: false,
updateUpdateMainWindow: (value) => { console.log('updated')},
updateAllAudioStreams: (streams) => { console.log('updated')},
updateAllVideoStreams: (streams) => { console.log('updated')},
updateStreamNames: (streams) => { console.log('updated')},
updateAudStreamNames: (streams) => { console.log('updated')},
updateNStream: (stream) => { console.log('updated')},
updateMainHeightWidth: (value) => { console.log('updated')},
updateLock_screen: (value) => { console.log('updated')},
updateFirstAll: (value) => { console.log('updated')},
updateRemoteScreenStream: (streams) => { console.log('updated')},
updateOldAllStreams: (streams) => { console.log('updated')},
updateAudioOnlyStreams: (streams) => { console.log('updated')},
updateShareScreenStarted: (value) => { console.log('updated')},
updateGotAllVids: (value) => { console.log('updated')},
updateScreenId: (id) => { console.log('updated')},
updateDefer_receive: (value) => { console.log('updated')},
reorderStreams: (params) => { console.log('reordered') }
prepopulateUserMedia: (params) => { console.log('prepopulated') },
},
nsock: socketInstance,
};

consumerResume(options)
.then(() => {
console.log('Consumer resumed successfully');
})
.catch((error) => {
console.error('Error resuming consumer:', error);
});