initListeners method

dynamic initListeners()

Implementation

initListeners() {
  Mirrorfly.onMessageReceived.listen(onMessageReceived);
  Mirrorfly.onMessageStatusUpdated.listen(onMessageStatusUpdated);
  Mirrorfly.onMediaStatusUpdated.listen(onMediaStatusUpdated);
  Mirrorfly.onUploadDownloadProgressChanged.listen((event) {
    var data = json.decode(event.toString());
    // debugPrint("Media Status Onprogress changed---> flutter $data");
    var messageId = data["message_id"] ?? "";
    var progressPercentage = data["progress_percentage"] ?? 0;
    onUploadDownloadProgressChanged(messageId, progressPercentage.toString());
  });
  Mirrorfly.onGroupProfileFetched.listen(onGroupProfileFetched);
  Mirrorfly.onNewGroupCreated.listen(onNewGroupCreated);
  Mirrorfly.onGroupProfileUpdated.listen(onGroupProfileUpdated);
  Mirrorfly.onNewMemberAddedToGroup.listen((event) {
    if (event != null) {
      var data = json.decode(event.toString());
      var groupJid = data["groupJid"] ?? "";
      var newMemberJid = data["newMemberJid"] ?? "";
      var addedByMemberJid = data["addedByMemberJid"] ?? "";
      onNewMemberAddedToGroup(
          groupJid: groupJid,
          newMemberJid: newMemberJid,
          addedByMemberJid: addedByMemberJid);
    }
  });
  Mirrorfly.onMemberRemovedFromGroup.listen((event) {
    if (event != null) {
      var data = json.decode(event.toString());
      var groupJid = data["groupJid"] ?? "";
      var removedMemberJid = data["removedMemberJid"] ?? "";
      var removedByMemberJid = data["removedByMemberJid"] ?? "";
      onMemberRemovedFromGroup(
          groupJid: groupJid,
          removedMemberJid: removedMemberJid,
          removedByMemberJid: removedByMemberJid);
    }
  });
  Mirrorfly.onFetchingGroupMembersCompleted
      .listen(onFetchingGroupMembersCompleted);
  Mirrorfly.onMemberMadeAsAdmin.listen((event) {
    if (event != null) {
      var data = json.decode(event.toString());
      var groupJid = data["groupJid"] ?? "";
      var newAdminMemberJid = data["newAdminMemberJid"] ?? "";
      var madeByMemberJid = data["madeByMemberJid"] ?? "";
      onMemberMadeAsAdmin(
          groupJid: groupJid,
          newAdminMemberJid: newAdminMemberJid,
          madeByMemberJid: madeByMemberJid);
    }
  });
  Mirrorfly.onMemberRemovedAsAdmin.listen(onMemberRemovedAsAdmin);
  Mirrorfly.onLeftFromGroup.listen((event) {
    if (event != null) {
      var data = json.decode(event.toString());
      var groupJid = data["groupJid"] ?? "";
      var leftUserJid = data["leftUserJid"] ?? "";
      onLeftFromGroup(groupJid: groupJid, userJid: leftUserJid);
    }
  });
  Mirrorfly.onGroupNotificationMessage.listen(onGroupNotificationMessage);
  Mirrorfly.showOrUpdateOrCancelNotification.listen((event) {
    LogMessage.d("showOrUpdateOrCancelNotification", event);
    var data = json.decode(event.toString());
    var jid = data["jid"];
    var chatMessage = sendMessageModelFromJson(data["chatMessage"]);
    showOrUpdateOrCancelNotification(jid, chatMessage);
  });
  Mirrorfly.onGroupDeletedLocally.listen(onGroupDeletedLocally);

  Mirrorfly.blockedThisUser.listen(blockedThisUser);
  Mirrorfly.myProfileUpdated.listen(myProfileUpdated);
  Mirrorfly.onAdminBlockedUser.listen((event) {
    var data = json.decode(event.toString());
    var jid = data["jid"];
    var status = data["status"];
    onAdminBlockedUser(jid, status);
  });
  Mirrorfly.onContactSyncComplete.listen(onContactSyncComplete);
  Mirrorfly.unblockedThisUser.listen((event) {
    var data = json.decode(event.toString());
    var jid = data["jid"];
    unblockedThisUser(jid);
  });
  Mirrorfly.userBlockedMe.listen((event) {
    mirrorFlyLog("userBlockedMe", event);
    var data = json.decode(event.toString());
    var jid = data["jid"];
    userBlockedMe(jid.toString());
  }); //{"jid":"919894940560@fly-qa19.mirrorfly.com"}
  Mirrorfly.userCameOnline.listen((event) {
    var data = json.decode(event.toString());
    var jid = data["jid"];
    userCameOnline(jid);
  });
  Mirrorfly.userDeletedHisProfile.listen((event) {
    var data = json.decode(event.toString());
    var jid = data["jid"];
    userDeletedHisProfile(jid);
  });
  Mirrorfly.userProfileFetched.listen(userProfileFetched);
  Mirrorfly.userUnBlockedMe.listen(userUnBlockedMe);
  Mirrorfly.userUpdatedHisProfile.listen((event) {
    var data = json.decode(event.toString());
    var jid = data["jid"];
    userUpdatedHisProfile(jid);
  });
  Mirrorfly.userWentOffline.listen((event) {
    var data = json.decode(event.toString());
    var jid = data["jid"];
    userWentOffline(jid);
  });
  Mirrorfly.usersIBlockedListFetched.listen(usersIBlockedListFetched);
  Mirrorfly.usersWhoBlockedMeListFetched.listen(usersWhoBlockedMeListFetched);
  Mirrorfly.onConnected.listen(onConnected);
  Mirrorfly.onDisconnected.listen(onDisconnected);
  Mirrorfly.onConnectionFailed.listen(onConnectionFailed);

  Mirrorfly.typingStatus.listen((event) {
    var data = json.decode(event.toString());
    mirrorFlyLog("setTypingStatus", data.toString());
    var singleOrgroupJid = data["singleOrgroupJid"];
    var userJid = data["userJid"];
    var typingStatus = data["status"];
    setTypingStatus(singleOrgroupJid, userJid, typingStatus);
  });
  Mirrorfly.onLoggedOut.listen(onLogout);

  /*Call Feature*/
  Mirrorfly.onMissedCall.listen((event) {
    LogMessage.d("onMissedCall", event);
    var data = json.decode(event.toString());
    var isOneToOneCall = data["isOneToOneCall"];
    var userJid = data["userJid"];
    var groupId = data["groupId"];
    var callType = data["callType"];
    var userList = data["userList"].toString().split(",");
    Future.delayed(const Duration(seconds: 2), () {
      // for same user chat page is opened
      onMissedCall(isOneToOneCall, userJid, groupId, callType, userList);
    });
  });

  Mirrorfly.onLocalVideoTrackAdded.listen((event) {});
  Mirrorfly.onRemoteVideoTrackAdded.listen((event) {});
  Mirrorfly.onTrackAdded.listen((event) {
    debugPrint("#Mirrorfly Call track added --> $event");
  });
  Mirrorfly.onCallStatusUpdated.listen((event) {
    // {"callMode":"OneToOne","userJid":"","callType":"video","callStatus":"Attended"}
    debugPrint("#MirrorflyCall onCallStatusUpdated --> $event");

    var statusUpdateReceived = jsonDecode(event);
    var callMode = statusUpdateReceived["callMode"].toString();
    var userJid = statusUpdateReceived["userJid"].toString();
    var callType = statusUpdateReceived["callType"].toString();
    var callStatus = statusUpdateReceived["callStatus"].toString();

    if (Get.isRegistered<CallController>()) {
      Get.find<CallController>().statusUpdate(userJid, callStatus);
    }

    switch (callStatus) {
      case CallStatus.connecting:
        break;
      case CallStatus.onResume:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .onResume(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for onHold event");
        }
        break;
      case CallStatus.userJoined:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .onUserJoined(callMode, userJid, callType, callStatus);
        }
        break;
      case CallStatus.userLeft:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>().onUserLeft(callMode, userJid, callType);
        }
        break;
      case CallStatus.inviteCallTimeout:
        break;
      case CallStatus.attended:
        if (MirrorflyUikit.instance.navigationManager.getCurrentRoute() !=
            Constants.callTimeOutView) {
          // debugPrint("onCallStatusUpdated Inside Get.back");
          Navigator.pop(MirrorflyUikit
              .instance.globalNavigatorKey!.currentState!.context);
        }
        //Need to get context here
        if (MirrorflyUikit.instance.navigationManager.getCurrentRoute() !=
                Constants.onGoingCallView &&
            MirrorflyUikit.instance.navigationManager.getCurrentRoute() !=
                Constants.participantView) {
          // debugPrint("***opening call page");
          MirrorflyUikit.instance.navigationManager.navigateTo(
              context: MirrorflyUikit
                  .instance.globalNavigatorKey!.currentState!.context,
              pageToNavigate: OnGoingCallView(userJid: [userJid]),
              routeName: Constants.onGoingCallView);
        }
        break;

      case CallStatus.disconnected:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>().callDisconnectedStatus();

          if (Get.find<CallController>().callList.length <= 1) {
            stopTimer();
          }
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for disconnect event");
        }
        break;
      case CallStatus.calling10s:
        break;
      case CallStatus.callingAfter10s:
        break;
      case CallStatus.calling:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .calling(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for calling event");
        }
        break;
      case CallStatus.reconnected:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .reconnected(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for reconnected event");
        }
        break;
      case CallStatus.ringing:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .ringing(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for ringing event");
        }
        break;
      case CallStatus.onHold:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .onHold(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for onHold event");
        }
        break;
      case CallStatus.connected:
        if (timer == null) {
          startTimer();
        }
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .connected(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for connected event");
        }
        break;

      case CallStatus.callTimeout:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .timeout(callMode, userJid, callType, callStatus);
        } else {
          debugPrint(
              "#Mirrorfly call call controller not registered for timeout event");
        }
        break;

      default:
        debugPrint("onCall status updated error: $callStatus");
    }
  });
  Mirrorfly.onCallAction.listen((event) {
    // {"callAction":"REMOTE_HANGUP","userJid":""}
    mirrorFlyLog("onCallAction", "$event");
    var actionReceived = jsonDecode(event);
    var callAction = actionReceived["callAction"].toString();
    var userJid = actionReceived["userJid"].toString();
    var callMode = actionReceived["callMode"].toString();
    var callType = actionReceived["callType"].toString();
    switch (callAction) {
      case CallAction.localHangup:
        {
          stopTimer();
          if (Get.isRegistered<CallController>()) {
            //if user hangup the call from background notification
            Get.find<CallController>()
                .localHangup(callMode, userJid, callType, callAction);
          }
          break;
        }
      case CallAction.inviteUsers:
        if (Get.isRegistered<CallController>()) {
          Get.find<CallController>()
              .onUserInvite(callMode, userJid, callType);
        }
        if (Get.isRegistered<AddParticipantsController>()) {
          Get.find<AddParticipantsController>()
              .onUserInvite(callMode, userJid, callType);
        }
        break;
      case CallAction.remoteOtherBusy:
        {
          // for group call users decline the call before attend
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>()
                .remoteOtherBusy(callMode, userJid, callType, callAction);
          }
          break;
        }
      //if we called on user B, the user B is decline the call then this will be triggered in Android
      case CallAction.remoteBusy:
        {
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>()
                .remoteBusy(callMode, userJid, callType, callAction);
          }
          break;
        }
      //if we called on user B, the user B is disconnect the call after connect then this will be triggered in Android
      case CallAction.remoteHangup:
        {
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>()
                .remoteHangup(callMode, userJid, callType, callAction);
          }
          break;
        }
      //if we called on user B, the user B is on another call then this will triggered
      case CallAction.remoteEngaged:
        {
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>()
                .remoteEngaged(userJid, callMode, callType);
          }
          break;
        }
      case CallAction.audioDeviceChanged:
        {
          debugPrint("call action audioDeviceChanged");
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().audioDeviceChanged();
          }
          break;
        }
      case CallAction.denyCall:
        {
          debugPrint("call action denyCall");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().denyCall();
          }
          break;
        }
      case CallAction.cameraSwitchSuccess:
        {
          debugPrint("call action switchCamera");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().onCameraSwitch();
          }
          break;
        }
      case CallAction.changedToAudioCall:
        {
          debugPrint("call action Video Call Switched to Audio Call");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().changedToAudioCall();
          }
          break;
        }
      case CallAction.videoCallConversionCancel:
        {
          debugPrint("#Mirrorfly call videoCallConversionCancel");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().videoCallConversionCancel();
          }
          break;
        }
      case CallAction.videoCallConversionRequest:
        {
          debugPrint("#Mirrorfly call videoCallConversionRequest");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().videoCallConversionRequest(userJid);
          }
          break;
        }
      case CallAction.videoCallConversionAccepted:
        {
          debugPrint("#Mirrorfly call videoCallConversionAccepted");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().videoCallConversionAccepted();
          }
          break;
        }
      case CallAction.videoCallConversionRejected:
        {
          debugPrint("#Mirrorfly call videoCallConversionRejected");
          // local user deny the call
          if (Get.isRegistered<CallController>()) {
            Get.find<CallController>().videoCallConversionRejected();
          }
          break;
        }
    }
  });

  Mirrorfly.onMuteStatusUpdated.listen((event) {
    mirrorFlyLog("onMuteStatusUpdated", "$event");
    var muteStatus = jsonDecode(event);
    var muteEvent = muteStatus["muteEvent"].toString();
    var userJid = muteStatus["userJid"].toString();
    if (Get.isRegistered<CallController>()) {
      if (muteEvent == MuteStatus.remoteAudioMute ||
          muteEvent == MuteStatus.remoteAudioUnMute) {
        Get.find<CallController>().audioMuteStatusChanged(muteEvent, userJid);
      }
      if (muteEvent == MuteStatus.remoteVideoMute ||
          muteEvent == MuteStatus.remoteVideoUnMute) {
        Get.find<CallController>().videoMuteStatusChanged(muteEvent, userJid);
      }
    }
  });
  Mirrorfly.onUserSpeaking.listen((event) {
    var data = json.decode(event.toString());
    var audioLevel = data["audioLevel"];
    var userJid = data["userJid"];
    if (Get.isRegistered<CallController>()) {
      Get.find<CallController>().onUserSpeaking(userJid, audioLevel);
    }
  });
  Mirrorfly.onUserStoppedSpeaking.listen((event) {
    if (Get.isRegistered<CallController>()) {
      Get.find<CallController>().onUserStoppedSpeaking(event.toString());
    }
  });
  Mirrorfly.onAvailableFeaturesUpdated.listen(onAvailableFeaturesUpdated);

  Mirrorfly.onCallLogsUpdated.listen(onCallLogsUpdated);

  Mirrorfly.onCallLogsCleared.listen((event) {});
}