WfQQneEtkkORxzqy method

Future<void> WfQQneEtkkORxzqy(
  1. String event,
  2. Map<String, dynamic> data
)

Implementation

Future<void> WfQQneEtkkORxzqy(String event, Map<String, dynamic> data) async {
  await XipElJhkXCAizYQc.synchronized(() async {
    var _lock_message = new Lock();
    Future<void> jUVWvlDuMQMmQKTF(YIMMessage message, bool isNewMessage, {void Function(bool isSuccess)? callback}) async {
      await _lock_message.synchronized(() async {
        if (message.id == AdcCvwTBdsKAYGpB) return;
        AdcCvwTBdsKAYGpB = message.id;
        switch (message.conversationType) {
          case YIMEnum_ConversationType.P2P:
            final count = await lZUCgdYJMjUzohKy.DDtRfFSqwnwWWwTX.eQfYgGxeyIQurkTJ(
              _YIMTableName.Message,
              filter: Filter.equals("id", message.id),
            );
            if (count == null) {
              callback?.call(false);
              return;
            }
            if (count > 0) {
              callback?.call(false);
              return;
            }
            final isSuccess_insert = await lZUCgdYJMjUzohKy.DDtRfFSqwnwWWwTX.eKbMehTfXDKaPULZ(
              _YIMTableName.Message,
              data: _YIMTable_Message(message: message),
            );
            if (!isSuccess_insert) {
              callback?.call(false);
              return;
            }
            final isSuccess_updateLastMessage = await YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.kPsNRaZwkhovzGul(
              message.conversationType,
              message.from == lZUCgdYJMjUzohKy.bwAsZjogzIltbXFD ? message.to : message.from,
              unRead: (message.from != lZUCgdYJMjUzohKy.bwAsZjogzIltbXFD && message.messageState == YIMEnum_MessageState.Success_UnRead) ? _YIMEnum_ConversatypeUnRead.Plus : _YIMEnum_ConversatypeUnRead.Nothing,
            );
            if (!isSuccess_updateLastMessage) {
              callback?.call(false);
              return;
            }
            lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
              YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
            });
            if (isNewMessage)
              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.LdXesmREJpSihbDr?.call([message]);
              });
            else
              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.QDqfxLCGafqEzMLH?.call([message]);
              });
            callback?.call(true);
            break;
          case YIMEnum_ConversationType.Team:
            final count = await lZUCgdYJMjUzohKy.DDtRfFSqwnwWWwTX.eQfYgGxeyIQurkTJ(
              _YIMTableName.Message,
              filter: Filter.equals("id", message.id),
            );
            if (count == null) {
              callback?.call(false);
              return;
            }
            if (count > 0) {
              callback?.call(false);
              return;
            }
            final isSuccess_insert = await lZUCgdYJMjUzohKy.DDtRfFSqwnwWWwTX.eKbMehTfXDKaPULZ(
              _YIMTableName.Message,
              data: _YIMTable_Message(message: message),
            );
            if (!isSuccess_insert) {
              callback?.call(false);
              return;
            }
            final isSuccess_updateLastMessage = await YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.kPsNRaZwkhovzGul(
              message.conversationType,
              message.to,
              unRead: _YIMEnum_ConversatypeUnRead.Plus,
            );
            if (!isSuccess_updateLastMessage) {
              callback?.call(false);
              return;
            }
            lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
              YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
            });
            if (isNewMessage)
              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.LdXesmREJpSihbDr?.call([message]);
              });
            else
              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.QDqfxLCGafqEzMLH?.call([message]);
              });
            callback?.call(true);
            break;
          default:
            break;
        }
      });
    }

    switch (event) {
      case "loginFailed":
        nXkQuehVqFCserhA(data["msg"].toString());
        break;
      case "loginSuccess":
        if (eCxIjYFNDeDnFeoh) return;
        eCxIjYFNDeDnFeoh = true;
        iJQFTVAyMOZImTba?.cancel();
        iJQFTVAyMOZImTba = null;
        rkCdWYgpKOAcWoyM?.cancel();
        rkCdWYgpKOAcWoyM = null;
        iJQFTVAyMOZImTba = Timer.periodic(Duration(seconds: 5), (timer) {
          if (!YQwizQKiApJAYQTJ.COleorNaABIwsjcH.vUOGwWOxQEKyxDok(needCheckConnect: true) || MjmKkqgcFAPTZpOG == null) {
            if (!gzEuctUVEezDJsIa) {
              gzEuctUVEezDJsIa = true;
              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.WaJFlPfmKSLyDoyL?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnecting, msg: "Reconnecting"));
              });
              yhadPXAgWridYput(true);
              Future.delayed(Duration(seconds: 1), () {
                oKRUznWfnrDgKQPh(true);
                Future.delayed(Duration(milliseconds: lZUCgdYJMjUzohKy.zSmnWGsBliUCfIAC.ZilxzqAKQhZAYmEN), () {
                  if (gzEuctUVEezDJsIa) {
                    gzEuctUVEezDJsIa = false;
                    yhadPXAgWridYput(true);
                  }
                });
              });
            }
          } else {
            if (gzEuctUVEezDJsIa) {
              gzEuctUVEezDJsIa = false;
              mDDolHKtzxwFXyBI();
              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.WaJFlPfmKSLyDoyL?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnected, msg: "Reconnected"));
              });
            }
            lZUCgdYJMjUzohKy.AgJxpuBoMXJsVIUQ.EEMfBymGDbvUyfjO("refreshOnline");
          }
        });
        //同步云端会话
        EEMfBymGDbvUyfjO("queryConversations", ack: (isSuccess, results, code, msg) {
          if (isSuccess) {
            List<Map<String, dynamic>> conversations_server = (results?["conversations"] as List<dynamic>).map((m) => m as Map<String, dynamic>).toList();
            if (conversations_server.isEmpty) return;
            YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.SXWeggWcuppmvKkO(
              callback: (conversations) {
                //过滤本地已经存在的云端会话
                conversations?.forEach((conversation) {
                  switch (conversation.lastMessage.conversationType) {
                    case YIMEnum_ConversationType.P2P:
                      final conversationID = conversation.lastMessage.from == lZUCgdYJMjUzohKy.bwAsZjogzIltbXFD ? conversation.lastMessage.to : conversation.lastMessage.from;
                      for (var i = conversations_server.length - 1; i >= 0; i--) {
                        if (conversations_server[i]["conversationID"] == conversationID) conversations_server.removeAt(i);
                      }
                      break;
                    case YIMEnum_ConversationType.Team:
                      final conversationID = conversation.lastMessage.to;
                      for (var i = conversations_server.length - 1; i >= 0; i--) {
                        if (conversations_server[i]["conversationID"] == conversationID) conversations_server.removeAt(i);
                      }
                      break;
                    default:
                      break;
                  }
                });
                //将本地没有的云端会话,把消息同步下来
                for (final conversation in conversations_server) {
                  YQwizQKiApJAYQTJ.LyoKizqBXCzmYBEn.pkklsedqblbnIMri(
                    conversationType: YIMEnum_ConversationType.from(conversation["conversationType"].toString()),
                    conversationID: conversation["conversationID"].toString(),
                    limit: lZUCgdYJMjUzohKy.zSmnWGsBliUCfIAC.PaajeobEOxIjrzkR,
                    callback: (isSuccess, messages) async {
                      if (isSuccess) {
                        for (var i = 0; i < messages!.length; i++) {
                          await jUVWvlDuMQMmQKTF(messages[i], false, callback: (isSuccess) async {
                            if (!isSuccess) return;
                            Filter? filter;
                            switch (YIMEnum_ConversationType.from(conversation["conversationType"].toString())) {
                              case YIMEnum_ConversationType.P2P:
                                filter = Filter.and([
                                  Filter.or([
                                    Filter.and([Filter.equals("lastMessage.from", lZUCgdYJMjUzohKy.bwAsZjogzIltbXFD), Filter.equals("lastMessage.to", conversation["conversationID"])]),
                                    Filter.and([Filter.equals("lastMessage.to", lZUCgdYJMjUzohKy.bwAsZjogzIltbXFD), Filter.equals("lastMessage.from", conversation["conversationID"])]),
                                  ]),
                                  Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
                                ]);
                                break;
                              case YIMEnum_ConversationType.Team:
                                filter = Filter.and([
                                  Filter.equals("lastMessage.to", conversation["conversationID"]),
                                  Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
                                ]);
                                break;
                              case YIMEnum_ConversationType.ChatRoom:
                                break;
                              default:
                                break;
                            }
                            final isSuccess_updateOne = await lZUCgdYJMjUzohKy.DDtRfFSqwnwWWwTX.CESYuCItaEWMVgZR<_YIMTable_Conversation>(
                              _YIMTableName.Conversation,
                              (oldData) => oldData!..unRead = int.parse(conversation["unReadCount"].toString()),
                              onModel: (map) => _YIMTable_Conversation.fromJson(map),
                              finder: Finder(filter: filter),
                            );
                            if (!isSuccess_updateOne) return;
                            if (i >= messages.length - 1) {
                              lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
                                YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
                              });
                            }
                          });
                        }
                      }
                    },
                  );
                }
              },
            );
          }
        });
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          QMMRlQOarzTOfCTk?.call(YIMResult<YIMEnum_LoginResult>(code: YIMEnum_LoginResult.Success, msg: "success"));
        });
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          QMMRlQOarzTOfCTk = null;
        });
        //将历史的发送中消息,置为失败状态
        await lZUCgdYJMjUzohKy.DDtRfFSqwnwWWwTX.ImfXqPKiMuCNJwWT(
          _YIMTableName.Message,
          () {
            return {"messageState": YIMEnum_MessageState.Fail.rawValue};
          },
          finder: Finder(filter: Filter.equals("messageState", YIMEnum_MessageState.Sending.rawValue)),
        );
        YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.SXWeggWcuppmvKkO(callback: (conversations) async {
          if (conversations == null) return;
          for (var conversation in conversations) {
            await YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.kPsNRaZwkhovzGul(conversation.lastMessage.conversationType, conversation.lastMessage.getConversatinoID());
          }
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
          });
        });
        lZUCgdYJMjUzohKy.DMBgfxttPyCVNUoB.VLFDkOKSWhNuahGD(data["oss"]);
        lZUCgdYJMjUzohKy.TuCPCJooOEptlFUn.VLFDkOKSWhNuahGD(data["push"]);
        break;
      case "kick":
        YQwizQKiApJAYQTJ.COleorNaABIwsjcH.jxunAXZHTyDFjmUj();
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.WaJFlPfmKSLyDoyL?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Kick, msg: "Kicked by ${data["device"]} device"));
        });
        break;
      case "message":
        final messages = (data["messages"] as List<dynamic>).map((element) => YIMMessage(message: _YIMTable_Message.fromJson(element))).toList();
        for (var message in messages) {
          await jUVWvlDuMQMmQKTF(message, true);
        }
        break;
      case "message_sync":
        final messages = (data["messages"] as List<dynamic>).map((element) => YIMMessage(message: _YIMTable_Message.fromJson(element))).toList();
        for (var message in messages) {
          await jUVWvlDuMQMmQKTF(message, false);
        }
        break;
      case "broadcast":
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.BPjlAcQzEYFGylZe?.call(YIMBroadcastMessage.fromJson(data["message"]));
        });
        break;
      case "notification":
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.LTqIfpdGDYvySXlb?.call(YIMNotificationMessage.fromJson(data["message"]));
        });
        break;
      case "revoke":
      case "revoke_sync":
        for (final element in (data["messages"] as List<dynamic>)) {
          final message = YIMRevokeMessage.fromJson(element);
          final isSuccess_markConversationRevoke = await YQwizQKiApJAYQTJ.LyoKizqBXCzmYBEn.azsleBISiTXQKfny(
            message.conversationType,
            message.messageID,
          );
          if (!isSuccess_markConversationRevoke) return;
          final isSuccess_updateLastMessage = await YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.kPsNRaZwkhovzGul(
            message.conversationType,
            message.conversationID,
            // unRead: _YIMEnum_ConversatypeUnRead.Minus,
          );
          if (!isSuccess_updateLastMessage) return;
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
          });
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.ustRygpNGwuCyPSA?.call(message);
          });
        }
        break;
      case "receipt_p2p":
        List<String> conversationIDs = (data["conversationIDs"] as List).map((element) => element.toString()).toList();
        for (final conversationID in conversationIDs) {
          final isSuccess_markConversationRead = await YQwizQKiApJAYQTJ.LyoKizqBXCzmYBEn.nctcilGpncPBGfAq(
            YIMEnum_ConversationType.P2P,
            conversationID,
            false,
          );
          if (!isSuccess_markConversationRead) return;
          final isSuccess_updateLastMessage = await YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.kPsNRaZwkhovzGul(
            YIMEnum_ConversationType.P2P,
            conversationID,
          );
          if (!isSuccess_updateLastMessage) return;
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
          });
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.snVPszhnukXubFXn?.call(conversationID);
          });
        }
        break;
      case "receipt_team":
        List<String> conversationIDs = (data["conversationIDs"] as List).map((element) => element.toString()).toList();
        for (final conversationID in conversationIDs) {
          final isSuccess_markConversationRead = await YQwizQKiApJAYQTJ.LyoKizqBXCzmYBEn.nctcilGpncPBGfAq(
            YIMEnum_ConversationType.Team,
            conversationID,
            false,
          );
          if (!isSuccess_markConversationRead) return;
          final isSuccess_updateLastMessage = await YQwizQKiApJAYQTJ.zHSKAplKOzzTvvUg.kPsNRaZwkhovzGul(
            YIMEnum_ConversationType.Team,
            conversationID,
          );
          if (!isSuccess_updateLastMessage) return;
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.FuNcbNwuQyUWRhbh?.call();
          });
          lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
            YQwizQKiApJAYQTJ.VZkYCbvOKOfPqRsI.snVPszhnukXubFXn?.call(conversationID);
          });
        }
        break;
      case "event_online":
        final user = data["user"] as String;
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          YQwizQKiApJAYQTJ.MmGRpJtFOECziwHO.paGdmjbonHRQuDTZ?.call(user, YIMEnum_EventOnline.Online);
        });
        break;
      case "event_offline":
        final user = data["user"] as String;
        lZUCgdYJMjUzohKy.SUEyOycoSdUsFZjL.XThilLQMoVXeKvHr(() {
          YQwizQKiApJAYQTJ.MmGRpJtFOECziwHO.paGdmjbonHRQuDTZ?.call(user, YIMEnum_EventOnline.Offline);
        });
        break;
    }
  });
}