Implementation
final Map<String, ChannelTransFormer> channelTransFormMap = {
DelegateMethod.kNERtcOnError:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onError(values['channel_tag'], values['error_code']);
},
DelegateMethod.kNERtcOnWarning:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onWarning(values['channel_tag'], values['warn_code']);
},
DelegateMethod.kNERtcOnApiCallExecuted:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onApiCallExecuted(values['channel_tag'], values['api_name'] ?? '',
values['error'] ?? 0, values['message'] ?? '');
},
DelegateMethod.kNERtcOnJoinChannel:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onJoinChannel(
values['channel_tag'],
values['result'],
values['cid']?.toInt() ?? 0,
values['elapsed'] ?? 0,
values['uid']?.toInt() ?? 0);
},
DelegateMethod.kNERtcOnReconnectingStart:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onReconnectingStart(values['channel_tag']);
},
DelegateMethod.kNERtcOnConnectionStateChange:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onConnectionStateChanged(
values['channel_tag'], values['state'], values['reason']);
},
DelegateMethod.kNERtcOnRejoinChannel:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onReJoinChannel(
values['channel_tag'], values['result'], values['cid']?.toInt() ?? 0);
},
DelegateMethod.kNERtcOnLeaveChannel:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onLeaveChannel(values['channel_tag'], values['result']);
},
DelegateMethod.kNERtcOnDisconnect:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onDisconnect(values['channel_tag'], values['reason']);
},
DelegateMethod.kNERtcOnClientRoleChanged:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onClientRoleChange(
values['channel_tag'], values['oldRole'], values['newRole']);
},
DelegateMethod.kNERtcOnUserJoined:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
UserJoinedEvent event = UserJoinedEvent(uid: values['uid']);
if (values.containsKey('join_extra_info')) {
final joinExtraInfo = values['join_extra_info'] as String;
if (joinExtraInfo.isNotEmpty) {
event.joinExtraInfo = NERtcUserJoinExtraInfo(customInfo: joinExtraInfo);
}
}
sink_.onUserJoined(values['channel_tag'], event);
},
DelegateMethod.kNERtcOnUserLeave:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
UserLeaveEvent event =
UserLeaveEvent(uid: values['uid'], reason: values['reason']);
if (values.containsKey('leave_extra_info')) {
final leaveExtraInfo = values['leave_extra_info'] as String;
if (leaveExtraInfo.isNotEmpty) {
event.leaveExtraInfo =
NERtcUserLeaveExtraInfo(customInfo: leaveExtraInfo);
}
}
sink_.onUserLeave(values['channel_tag'], event);
},
DelegateMethod.kNERtcOnUserAudioStart:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserAudioStart(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnUserAudioStop:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserAudioStop(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnUserAudioMute:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserAudioMute(values['channel_tag'], values['uid'], values['mute']);
},
DelegateMethod.kNERtcOnUserSubStreamAudioStart:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserSubStreamAudioStart(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnUserSubStreamAudioStop:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserSubStreamAudioStop(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnUserSubStreamAudioMute:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserSubStreamAudioMute(
values['channel_tag'], values['uid'], values['mute']);
},
DelegateMethod.kNERtcOnUserVideoStart:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserVideoStart(
values['channel_tag'], values['uid'], values['max_profile']);
},
DelegateMethod.kNERtcOnUserVideoStop:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserVideoStop(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnUserVideoMute:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
UserVideoMuteEvent event =
UserVideoMuteEvent(uid: values['uid'], muted: values['mute']);
event.streamType = values['videoStreamType'];
sink_.onUserVideoMute(values['channel_tag'], event);
},
DelegateMethod.kNERtcOnUserSubVideoStreamStart:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserSubStreamVideoStart(
values['channel_tag'], values['uid'], values['max_profile']);
},
DelegateMethod.kNERtcOnUserSubVideoStreamStop:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onUserSubStreamVideoStop(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnScreenCaptureStatus:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onScreenCaptureStatus(values['channel_tag'], values['status']);
},
DelegateMethod.kNERtcOnScreenCaptureSourceDataUpdate:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
final captureRectMap = values['capture_rect'] as Map<String, dynamic>;
final captureRect = Rectangle(
x: captureRectMap['x'] as int,
y: captureRectMap['y'] as int,
width: captureRectMap['width'] as int,
height: captureRectMap['height'] as int);
final data = ScreenCaptureSourceData(
type: values['type'] as int,
sourceId: 0,
status: values['status'] as int,
action: values['action'] as int,
captureRect: captureRect,
level: values['level'] as int);
sink_.onScreenCaptureSourceDataUpdate(values['channel_tag'], data);
},
DelegateMethod.kNERtcOnFirstAudioDataReceived:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onFirstAudioDataReceived(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnFirstVideoDataReceived:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
FirstVideoDataReceivedEvent event =
FirstVideoDataReceivedEvent(uid: values['uid']);
event.streamType = values['stream_type'];
sink_.onFirstVideoDataReceived(values['channel_tag'], event);
},
DelegateMethod.kNERtcOnRemoteVideoSizeChanged:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onRemoteVideoSizeChanged(
values['channel_tag'],
values['uid'] ?? values['userId'],
values['type'] ?? values['videoType'],
values['width'],
values['height']);
},
DelegateMethod.kNERtcOnLocalVideoRenderSizeChanged:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onLocalVideoRenderSizeChanged(values['channel_tag'],
values['videoType'], values['width'], values['height']);
},
DelegateMethod.kNERtcOnFirstAudioFrameDecoded:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onFirstAudioFrameDecoded(values['channel_tag'], values['uid']);
},
DelegateMethod.kNERtcOnFirstVideoFrameDecoded:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
FirstVideoFrameDecodedEvent event = FirstVideoFrameDecodedEvent(
uid: values['uid'], width: values['width'], height: values['height']);
event.streamType = values['streamType'];
sink_.onFirstVideoFrameDecoded(values['channel_tag'], event);
},
DelegateMethod.kNERtcOnFirstVideoFrameRender:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onFirstVideoFrameRender(
values['channel_tag'],
values['uid'] ?? values['userID'],
values['streamType'],
values['width'],
values['height'],
values['elapsedTime']);
},
DelegateMethod.kNERtcOnLocalAudioVolumeIndication:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onLocalAudioVolumeIndication(
values['channel_tag'], values['volume'], values['enable_vad']);
},
DelegateMethod.kNERtcOnRemoteAudioVolumeIndication:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
if (values['volume_info'] == null) return;
final List<dynamic> volumeInfos = values['volume_info'];
RemoteAudioVolumeIndicationEvent event =
RemoteAudioVolumeIndicationEvent(totalVolume: values['total_volume']);
List<AudioVolumeInfo> infos = volumeInfos.map((item) {
final map = item as Map<String, dynamic>;
return AudioVolumeInfo(
uid: map['uid'] as int,
volume: map['volume'] as int,
subStreamVolume: map['sub_stream_volume'] as int);
}).toList();
event.volumeList = infos;
event.totalVolume = values['total_volume'];
sink_.onRemoteAudioVolumeIndication(values['channel_tag'], event);
},
DelegateMethod.kNERtcOnAddLiveStreamTask:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
print(
"onAddLiveStreamTask, task_id: ${values['task_id']}, url: ${values['url']}, error_code: ${values['error_code']}");
},
DelegateMethod.kNERtcOnUpdateLiveStreamTask:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
print(
"onUpdateLiveStreamTask, task_id: ${values['task_id']}, url: ${values['url']}, error_code: ${values['error_code']}");
},
DelegateMethod.kNERtcOnRemoveLiveStreamTask:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
print(
"onRemoveLiveStreamTask, task_id: ${values['task_id']}, error_code: ${values['error_code']}");
},
DelegateMethod.kNERtcOnLiveStreamStateChanged:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onLiveStreamState(values['channel_tag'], values['task_id'] ?? '',
values['url'] ?? '', values['state']);
},
DelegateMethod.kNERtcOnRecvSEIMsg:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onRecvSEIMsg(
values['channel_tag'], values['uid'], values['data'] ?? '');
},
DelegateMethod.kNERtcOnMediaRelayStateChanged:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onMediaRelayStatesChange(
values['channel_tag'], values['state'], values['channel_name'] ?? '');
},
DelegateMethod.kNERtcOnMediaRelayEvent:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onMediaRelayReceiveEvent(values['channel_tag'], values['event'],
values['error'], values['channel_name'] ?? '');
},
DelegateMethod.kNERtcOnLocalPublishFallbackToAudioOnly:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onLocalPublishFallbackToAudioOnly(
values['channel_tag'], values['is_fallback'], values['stream_type']);
},
DelegateMethod.kNERtcOnRemoteSubscribeFallbackAudioOnly:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onRemoteSubscribeFallbackToAudioOnly(values['channel_tag'],
values['uid'], values['is_fallback'], values['stream_type']);
},
DelegateMethod.kNERtcOnMediaRightChange:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
sink_.onMediaRightChange(values['channel_tag'], values['is_audio_banned'],
values['is_video_banned']);
},
DelegateMethod.kNERtcOnLabFeatureCallback:
(NERtcSubChannelEventSink sink_, Map<String, dynamic> values) {
final param = values['param'];
Map<Object?, Object?> paramMap;
if (param is Map) {
paramMap = Map<Object?, Object?>.from(param);
} else if (param is String && param.isNotEmpty) {
try {
paramMap = Map<Object?, Object?>.from(jsonDecode(param));
} catch (e) {
paramMap = {};
}
} else {
paramMap = {};
}
sink_.onLabFeatureCallback(
values['channel_tag'], values['key'] ?? '', paramMap);
},
};