handleCallReceivedData method
Implementation
Future<void> handleCallReceivedData(
String callerId,
List<String> calleeIdList,
String groupId,
NECallType callMediaType) async {
CallKitUILog.i(_tag,
'handleCallReceivedData callerId = $callerId callMediaType = $callMediaType');
CallState.instance.caller.id = callerId;
CallState.instance.calleeIdList.clear();
CallState.instance.calleeIdList.addAll(calleeIdList);
// CallState.instance.groupId = groupId;
CallState.instance.mediaType = callMediaType;
CallState.instance.selfUser.callStatus = NECallStatus.waiting;
// if (calleeIdList.isEmpty) {
// return;
// }
// if (calleeIdList.length >= Constants.groupCallMaxUserCount) {
// CallManager.instance.showToast(CallKit_t('exceededMaximumNumber'));
// return;
// }
// CallState.instance.groupId = groupId;
// if (CallState.instance.groupId.isNotEmpty || calleeIdList.length > 1) {
// CallState.instance.scene = NECallScene.groupCall;
// } else {
// CallState.instance.scene = NECallScene.singleCall;
// }
CallState.instance.scene = NECallScene.singleCall;
CallState.instance.mediaType = callMediaType;
CallState.instance.selfUser.callRole = NECallRole.called;
final allUserId = [callerId] + calleeIdList;
for (var userId in allUserId) {
if (CallState.instance.selfUser.id == userId) {
if (userId == callerId) {
CallState.instance.caller = CallState.instance.selfUser;
} else {
CallState.instance.calleeList.add(CallState.instance.selfUser);
}
continue;
}
final user = User();
user.id = userId;
if (userId == callerId) {
CallState.instance.caller = user;
} else {
CallState.instance.calleeList.add(user);
}
}
User callerInfo = await NimUtils.getUserInfo(callerId);
CallState.instance.caller.id = callerInfo.id;
CallState.instance.caller.nickname = callerInfo.nickname;
CallState.instance.caller.avatar = callerInfo.avatar;
CallState.instance.caller.callRole = NECallRole.caller;
CallState.instance.remoteUserList.clear();
if (CallState.instance.caller.id.isNotEmpty &&
CallState.instance.selfUser.id != CallState.instance.caller.id) {
CallState.instance.remoteUserList.add(CallState.instance.caller);
}
for (var callee in CallState.instance.calleeList) {
if (CallState.instance.selfUser.id == callee.id) {
continue;
}
CallState.instance.remoteUserList.add(callee);
}
}