initCallController method

Future<void> initCallController({
  1. required List<String?> userJid,
  2. required BuildContext buildContext,
})

Implementation

Future<void> initCallController(
    {required List<String?> userJid,
    required BuildContext buildContext}) async {
  debugPrint("#Mirrorfly Call Controller onInit");
  groupId(await Mirrorfly.getCallGroupJid());

  context = buildContext;
  /* if (userJid != null && userJid != "") {
    debugPrint("#Mirrorfly Call initCallController UserJid $userJid");
    var data = await getProfileDetails(userJid);
    profile(data);
    calleeName(data.getName());
  }*/
  audioDeviceChanged();
  // if (Get.currentRoute == Routes.onGoingCallView) {
  //   //startTimer();
  // }

  getAudioDevices();
  /* Mirrorfly.getAllAvailableAudioInput().then((value) {
    final availableList = audioDevicesFromJson(value);
    availableAudioList(availableList);
    debugPrint(
        "${Constants.tag} flutter getAllAvailableAudioInput $availableList");
  });*/
  await Mirrorfly.getCallDirection().then((value) async {
    debugPrint("#Mirrorfly Call Direction $value");
    if (value == "Incoming") {
      Mirrorfly.getCallUsersList().then((value) {
        // [{"userJid":"919789482015@xmpp-uikit-qa.contus.us","callStatus":"Trying to Connect"},{"userJid":"919894940560@xmpp-uikit-qa.contus.us","callStatus":"Trying to Connect"},{"userJid":"917010279986@xmpp-uikit-qa.contus.us","callStatus":"Connected"}]
        debugPrint("#Mirrorfly call get users --> $value");
        final callUserList = callUserListFromJson(value);
        callList.addAll(callUserList);
        if (callUserList.length > 1) {
          // pinnedUserJid(callUserList[0].userJid);
          CallUserList firstAttendedCallUser = callUserList.firstWhere(
              (callUser) =>
                  callUser.callStatus?.value == CallStatus.attended ||
                  callUser.callStatus?.value == CallStatus.connected,
              orElse: () => callUserList[0]);
          pinnedUserJid(firstAttendedCallUser.userJid!.value);
          pinnedUser(firstAttendedCallUser);
        }
        // getNames();
      });
    } else {
      debugPrint("#Mirrorfly Call Direction outgoing");
      debugPrint("#Mirrorfly Call getCallUsersList");
      Mirrorfly.getCallUsersList().then((value) {
        debugPrint("#Mirrorfly call get users --> $value");
        final callUserList = callUserListFromJson(value);
        callList(callUserList);
        if (callUserList.length > 1) {
          // pinnedUserJid(callUserList[0].userJid);
          CallUserList firstAttendedCallUser = callUserList.firstWhere(
              (callUser) =>
                  callUser.callStatus?.value == CallStatus.attended ||
                  callUser.callStatus?.value == CallStatus.connected,
              orElse: () => callUserList[0]);
          pinnedUserJid(firstAttendedCallUser.userJid!.value);
          pinnedUser(firstAttendedCallUser);
        }
      });
    }
  });

  await Mirrorfly.getCallType().then((value) => callType(value));

  debugPrint("#Mirrorfly call type ${callType.value}");
  if (callType.value == 'audio') {
    Mirrorfly.isUserAudioMuted().then((value) => muted(value));
    videoMuted(true);
  } else {
    Mirrorfly.isUserAudioMuted().then((value) => muted(value));
    Mirrorfly.isUserVideoMuted().then((value) => videoMuted(value));
    // videoMuted(false);
  }

  ever(callList, (callback) {
    debugPrint("#Mirrorfly call list is changed ******");
    debugPrint("#Mirrorfly call list $callList");
  });
}