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