handleCallReceivedData method

Future<void> handleCallReceivedData(
  1. String callerId,
  2. List<String> calleeIdList,
  3. String groupId,
  4. NECallType callMediaType,
)

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);
  }
}