Implementation
Future<void> VtaFCHZmxhCuYsao(String uIyQyNIcjXdsIlqP, Map<String, dynamic> DEzbKDIBPJVTWSIB) async {
await NSYjsMnOqpaBhHEy.synchronized(() async {
var NFVCoejmqISpBwvS = new Lock();
Future<void> ZuzGbbPXFXXwPXvl(YIMMessage mWEnrkpgWgfnODZg, bool sGvoFEAbFcnHdAdO, {void Function(bool oTLKfnnymNCTXHML)? OMKwYKeBBFVoTNBl}) async {
await NFVCoejmqISpBwvS.synchronized(() async {
if (mWEnrkpgWgfnODZg.id == SGvaNiMoTrmOwrZS) return;
SGvaNiMoTrmOwrZS = mWEnrkpgWgfnODZg.id;
switch (mWEnrkpgWgfnODZg.conversationType) {
case YIMEnum_ConversationType.P2P:
final imJcUbKexoRWPKuV = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.imJcUbKexoRWPKuV(
_YIMTableName.Message,
filter: Filter.equals("id", mWEnrkpgWgfnODZg.id),
);
if (imJcUbKexoRWPKuV == null) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
if (imJcUbKexoRWPKuV > 0) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
final KpduJXQoVKWmsBgH = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.NxTIiSKVXcgMzjSL(
_YIMTableName.Message,
DEzbKDIBPJVTWSIB: _YIMTable_Message(mWEnrkpgWgfnODZg: mWEnrkpgWgfnODZg),
);
if (!KpduJXQoVKWmsBgH) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
final MaHGdkWWOVttEAeS = await ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.seQaUCGGFYuCERMG(
mWEnrkpgWgfnODZg.conversationType,
mWEnrkpgWgfnODZg.from == eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA ? mWEnrkpgWgfnODZg.to : mWEnrkpgWgfnODZg.from,
BtkEDcyLJWFVWCMk: (mWEnrkpgWgfnODZg.from != eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA && mWEnrkpgWgfnODZg.messageState == YIMEnum_MessageState.Success_UnRead) ? VeUEakwqWzqKWGlo.LIwCJQquQQVpNcxe : VeUEakwqWzqKWGlo.FnYqLiPPReANDkSU,
);
if (!MaHGdkWWOVttEAeS) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
if (sGvoFEAbFcnHdAdO)
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.LPyyKzRzgEgTinGo?.call([mWEnrkpgWgfnODZg]);
});
else
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.pBICbrHbRPrMoVKu?.call([mWEnrkpgWgfnODZg]);
});
OMKwYKeBBFVoTNBl?.call(true);
break;
case YIMEnum_ConversationType.Team:
final imJcUbKexoRWPKuV = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.imJcUbKexoRWPKuV(
_YIMTableName.Message,
filter: Filter.equals("id", mWEnrkpgWgfnODZg.id),
);
if (imJcUbKexoRWPKuV == null) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
if (imJcUbKexoRWPKuV > 0) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
final KpduJXQoVKWmsBgH = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.NxTIiSKVXcgMzjSL(
_YIMTableName.Message,
DEzbKDIBPJVTWSIB: _YIMTable_Message(mWEnrkpgWgfnODZg: mWEnrkpgWgfnODZg),
);
if (!KpduJXQoVKWmsBgH) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
final MaHGdkWWOVttEAeS = await ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.seQaUCGGFYuCERMG(
mWEnrkpgWgfnODZg.conversationType,
mWEnrkpgWgfnODZg.to,
BtkEDcyLJWFVWCMk: (mWEnrkpgWgfnODZg.from != eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA) ? VeUEakwqWzqKWGlo.LIwCJQquQQVpNcxe : VeUEakwqWzqKWGlo.FnYqLiPPReANDkSU,
);
if (!MaHGdkWWOVttEAeS) {
OMKwYKeBBFVoTNBl?.call(false);
return;
}
if (sGvoFEAbFcnHdAdO)
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.LPyyKzRzgEgTinGo?.call([mWEnrkpgWgfnODZg]);
});
else
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.pBICbrHbRPrMoVKu?.call([mWEnrkpgWgfnODZg]);
});
OMKwYKeBBFVoTNBl?.call(true);
break;
case YIMEnum_ConversationType.ChatRoom:
if (sGvoFEAbFcnHdAdO)
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.LPyyKzRzgEgTinGo?.call([mWEnrkpgWgfnODZg]);
});
else
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.pBICbrHbRPrMoVKu?.call([mWEnrkpgWgfnODZg]);
});
OMKwYKeBBFVoTNBl?.call(true);
break;
default:
break;
}
});
}
switch (uIyQyNIcjXdsIlqP) {
case "loginFailed":
WbiJAkDimBGiuZyT(DEzbKDIBPJVTWSIB["msg"].toString());
break;
case "loginSuccess":
if (qMFRqrHHrfyEGtaq) return;
qMFRqrHHrfyEGtaq = true;
RnjMpwCVYWVaTMbP?.cancel();
RnjMpwCVYWVaTMbP = null;
HKPRsdFkqaAYfhYE?.cancel();
HKPRsdFkqaAYfhYE = null;
RnjMpwCVYWVaTMbP = Timer.periodic(Duration(seconds: 5), (timer) {
if (!ptLoDBriUoBUHreo.uvWNunbGgtEdyNiW.otQyjQrYNfRgpyCy(vaxeWJEAsrhSscSw: true) || fougUVSPPUZeVZtj == null) {
if (!ZZLMzmDnOPCUQBXr) {
ZZLMzmDnOPCUQBXr = true;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.MjNWSNzSPevgJqfi?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnecting, msg: "Reconnecting"));
});
rneXrDZIVjbxCZlW(true);
Future.delayed(Duration(seconds: 1), () {
IGyeoBrntvLYwuki(true);
Future.delayed(Duration(seconds: 5), () {
if (ZZLMzmDnOPCUQBXr) {
ZZLMzmDnOPCUQBXr = false;
rneXrDZIVjbxCZlW(true);
}
});
});
}
} else {
if (ZZLMzmDnOPCUQBXr) {
ZZLMzmDnOPCUQBXr = false;
zTJAPlxxRlEPfPBY();
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.MjNWSNzSPevgJqfi?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnected, msg: "Reconnected"));
});
}
// eFtbLxhxTmdNVKuo.TRicabbJmwhKdzbv.jodencItUatiSpEH("refreshOnline");
}
});
eFtbLxhxTmdNVKuo.plJXjIOyvNhjneLH = YIMUser.fromJson(DEzbKDIBPJVTWSIB["user"]);
eFtbLxhxTmdNVKuo.WuKEDsUBEzAbfoRS = (DEzbKDIBPJVTWSIB["conversationTops"] as List<dynamic>).map((e) => e.toString()).toList();
eFtbLxhxTmdNVKuo.YgLjLpNRUxfAmNYX = (DEzbKDIBPJVTWSIB["disturbs_p2p"] as List<dynamic>).map((e) => e.toString()).toList();
eFtbLxhxTmdNVKuo.CxPYZnJjsalLUyCw = (DEzbKDIBPJVTWSIB["disturbs_team"] as List<dynamic>).map((e) => e.toString()).toList();
eFtbLxhxTmdNVKuo.COWyOzFujUqyiEde.WpSpvmmvLuVioQrV(DEzbKDIBPJVTWSIB["oss"]);
eFtbLxhxTmdNVKuo.YxcFziNqPfUNMAiS.WpSpvmmvLuVioQrV(eFtbLxhxTmdNVKuo.XOnHYWRkDBCzQOUO?.push ?? DEzbKDIBPJVTWSIB["push"]);
//同步云端会话
jodencItUatiSpEH("queryConversations", YzQRKyskQzveDVYH: (oTLKfnnymNCTXHML, OhXEEEJrHsRvZogG, iggZzorTFvICOSCL, PBMZMubGZDFjYEYt) {
if (oTLKfnnymNCTXHML) {
List<Map<String, dynamic>> uSWXJseDfMxEeuLt = (OhXEEEJrHsRvZogG?["conversations"] as List<dynamic>).map((m) => m as Map<String, dynamic>).toList();
if (uSWXJseDfMxEeuLt.isEmpty) return;
ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.nkzuzrGKwvUcdDEb(
OMKwYKeBBFVoTNBl: (ykNlEVGzREbGjoZV) {
//过滤本地已经存在的云端会话
ykNlEVGzREbGjoZV?.forEach((gxECQohXBcwxDNVO) {
switch (gxECQohXBcwxDNVO.lastMessage.conversationType) {
case YIMEnum_ConversationType.P2P:
final DLwuDqfWcelSXXhD = gxECQohXBcwxDNVO.lastMessage.from == eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA ? gxECQohXBcwxDNVO.lastMessage.to : gxECQohXBcwxDNVO.lastMessage.from;
for (var HnLxnouyxZgEntlk = uSWXJseDfMxEeuLt.length - 1; HnLxnouyxZgEntlk >= 0; HnLxnouyxZgEntlk--) {
if (uSWXJseDfMxEeuLt[HnLxnouyxZgEntlk]["conversationID"] == DLwuDqfWcelSXXhD) uSWXJseDfMxEeuLt.removeAt(HnLxnouyxZgEntlk);
}
break;
case YIMEnum_ConversationType.Team:
final DLwuDqfWcelSXXhD = gxECQohXBcwxDNVO.lastMessage.to;
for (var HnLxnouyxZgEntlk = uSWXJseDfMxEeuLt.length - 1; HnLxnouyxZgEntlk >= 0; HnLxnouyxZgEntlk--) {
if (uSWXJseDfMxEeuLt[HnLxnouyxZgEntlk]["conversationID"] == DLwuDqfWcelSXXhD) uSWXJseDfMxEeuLt.removeAt(HnLxnouyxZgEntlk);
}
break;
default:
break;
}
});
//将本地没有的云端会话,把消息同步下来
for (final gxECQohXBcwxDNVO in uSWXJseDfMxEeuLt.reversed) {
ptLoDBriUoBUHreo.BnAKHlfpZoZtygAN.bqsLxXzJWiVUmCXX(
sZLnmTKeJUdmBFHE: YIMEnum_ConversationType.from(gxECQohXBcwxDNVO["conversationType"].toString()),
DLwuDqfWcelSXXhD: gxECQohXBcwxDNVO["conversationID"].toString(),
swIyramKDJOzbOJN: eFtbLxhxTmdNVKuo.XgGXeEFPFDWOsMtu.KjVITroklQxbTHBe,
OMKwYKeBBFVoTNBl: (oTLKfnnymNCTXHML, ELBaeVfiMBfVvjdO) async {
if (oTLKfnnymNCTXHML) {
for (var i = 0; i < ELBaeVfiMBfVvjdO!.length; i++) {
await ZuzGbbPXFXXwPXvl(ELBaeVfiMBfVvjdO[i], false, OMKwYKeBBFVoTNBl: (oTLKfnnymNCTXHML) async {
if (!oTLKfnnymNCTXHML) return;
Filter? tTliTnHJVQHQfYah;
switch (YIMEnum_ConversationType.from(gxECQohXBcwxDNVO["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
tTliTnHJVQHQfYah = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.to", gxECQohXBcwxDNVO["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.from", gxECQohXBcwxDNVO["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
tTliTnHJVQHQfYah = Filter.and([
Filter.equals("lastMessage.to", gxECQohXBcwxDNVO["conversationID"]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
break;
default:
break;
}
final FxTKgeVLVBXARWjH = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.zWWbrOUfBoaNWrhG<_YIMTable_Conversation>(
_YIMTableName.Conversation,
(xTiaNoIlpXbdfQlQ) => xTiaNoIlpXbdfQlQ!..unRead = int.parse(gxECQohXBcwxDNVO["unReadCount"].toString()),
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(filter: tTliTnHJVQHQfYah),
);
if (!FxTKgeVLVBXARWjH) return;
if (i >= ELBaeVfiMBfVvjdO.length - 1) {
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
Filter? TKUJvkDHgZbFgVJv;
switch (YIMEnum_ConversationType.from(gxECQohXBcwxDNVO["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.to", gxECQohXBcwxDNVO["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.from", gxECQohXBcwxDNVO["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", gxECQohXBcwxDNVO["conversationType"]),
]);
break;
case YIMEnum_ConversationType.Team:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.equals("lastMessage.to", gxECQohXBcwxDNVO["conversationID"]),
Filter.equals("lastMessage.conversationType", gxECQohXBcwxDNVO["conversationType"]),
]);
break;
}
final BByVDaYVEweNgSCl = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.LUwlOqRgyVmlEiyp<_YIMTable_Conversation>(
_YIMTableName.Conversation,
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(filter: TKUJvkDHgZbFgVJv),
);
if (BByVDaYVEweNgSCl == null) {
return;
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.bNtqOyRWxOrowAZX?.call(BByVDaYVEweNgSCl.map((e) => YIMConversation(gxECQohXBcwxDNVO: e)).toList());
});
}
});
}
}
},
);
}
},
);
}
});
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
AavZGHnlDnfBxwfP?.call(YIMResult<YIMEnum_LoginResult>(code: YIMEnum_LoginResult.Success, msg: "success"));
});
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
AavZGHnlDnfBxwfP = null;
});
//将历史的发送中消息,置为失败状态
await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.BIatOvGnmImodxXL(
_YIMTableName.Message,
() {
return {"messageState": YIMEnum_MessageState.Fail.rawValue};
},
PldCyxtbMzvNSNom: Finder(filter: Filter.equals("messageState", YIMEnum_MessageState.Sending.rawValue)),
);
ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.nkzuzrGKwvUcdDEb(OMKwYKeBBFVoTNBl: (ykNlEVGzREbGjoZV) async {
if (ykNlEVGzREbGjoZV == null) return;
for (var gxECQohXBcwxDNVO in ykNlEVGzREbGjoZV) {
await ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.seQaUCGGFYuCERMG(gxECQohXBcwxDNVO.lastMessage.conversationType, gxECQohXBcwxDNVO.lastMessage.getConversatinoID());
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(ykNlEVGzREbGjoZV);
});
});
break;
case "conversation_top_update":
List<String> WuKEDsUBEzAbfoRS = (DEzbKDIBPJVTWSIB["conversationTops"] as List).map((element) => element.toString()).toList();
eFtbLxhxTmdNVKuo.WuKEDsUBEzAbfoRS = WuKEDsUBEzAbfoRS;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
if (ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO != null) {
ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.nkzuzrGKwvUcdDEb(OMKwYKeBBFVoTNBl: (ykNlEVGzREbGjoZV) {
if (ykNlEVGzREbGjoZV == null) return;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(ykNlEVGzREbGjoZV);
});
});
}
break;
case "disturbs_p2p_update":
List<String> YgLjLpNRUxfAmNYX = (DEzbKDIBPJVTWSIB["disturbs_p2p"] as List).map((element) => element.toString()).toList();
eFtbLxhxTmdNVKuo.YgLjLpNRUxfAmNYX = YgLjLpNRUxfAmNYX;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
if (ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO != null) {
ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.nkzuzrGKwvUcdDEb(OMKwYKeBBFVoTNBl: (ykNlEVGzREbGjoZV) {
if (ykNlEVGzREbGjoZV == null) return;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(ykNlEVGzREbGjoZV);
});
});
}
break;
case "disturbs_team_update":
List<String> CxPYZnJjsalLUyCw = (DEzbKDIBPJVTWSIB["disturbs_team"] as List).map((element) => element.toString()).toList();
eFtbLxhxTmdNVKuo.CxPYZnJjsalLUyCw = CxPYZnJjsalLUyCw;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
if (ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO != null) {
ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.nkzuzrGKwvUcdDEb(OMKwYKeBBFVoTNBl: (ykNlEVGzREbGjoZV) {
if (ykNlEVGzREbGjoZV == null) return;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(ykNlEVGzREbGjoZV);
});
});
}
break;
case "kick":
ptLoDBriUoBUHreo.uvWNunbGgtEdyNiW.SCdqpYTPtefXVcCe();
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.MjNWSNzSPevgJqfi?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Kick, msg: "Kicked by ${DEzbKDIBPJVTWSIB["device"]} device"));
});
break;
case "kick_room":
final RquNZoiaIGaxKDGz = DEzbKDIBPJVTWSIB["roomID"] as String;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.NulXGAZapqyEQTYU?.call(RquNZoiaIGaxKDGz);
});
break;
case "close_room":
final RquNZoiaIGaxKDGz = DEzbKDIBPJVTWSIB["roomID"] as String;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.YOtybFJQmFLWOppZ?.call(RquNZoiaIGaxKDGz);
});
break;
case "message":
case "message_sync":
final ELBaeVfiMBfVvjdO = (DEzbKDIBPJVTWSIB["messages"] as List<dynamic>).map((element) => YIMMessage(mWEnrkpgWgfnODZg: _YIMTable_Message.fromJson(element))).toList();
for (var mWEnrkpgWgfnODZg in ELBaeVfiMBfVvjdO) {
Filter? TKUJvkDHgZbFgVJv;
switch (mWEnrkpgWgfnODZg.conversationType) {
case YIMEnum_ConversationType.P2P:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.to", mWEnrkpgWgfnODZg.getConversatinoID())]),
Filter.and([Filter.equals("lastMessage.to", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.from", mWEnrkpgWgfnODZg.getConversatinoID())]),
]),
Filter.equals("lastMessage.conversationType", mWEnrkpgWgfnODZg.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.equals("lastMessage.to", mWEnrkpgWgfnODZg.getConversatinoID()),
Filter.equals("lastMessage.conversationType", mWEnrkpgWgfnODZg.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.equals("lastMessage.conversationType", mWEnrkpgWgfnODZg.conversationType.rawValue),
]);
break;
}
var BByVDaYVEweNgSCl = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.LUwlOqRgyVmlEiyp<_YIMTable_Conversation>(
_YIMTableName.Conversation,
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(filter: TKUJvkDHgZbFgVJv),
);
if (BByVDaYVEweNgSCl == null) {
return;
}
await ZuzGbbPXFXXwPXvl(mWEnrkpgWgfnODZg, uIyQyNIcjXdsIlqP == "message", OMKwYKeBBFVoTNBl: (oTLKfnnymNCTXHML) async {
if (!oTLKfnnymNCTXHML) return;
final KyUToNKdasnYcrci = BByVDaYVEweNgSCl!.isEmpty;
BByVDaYVEweNgSCl = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.LUwlOqRgyVmlEiyp<_YIMTable_Conversation>(
_YIMTableName.Conversation,
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(filter: TKUJvkDHgZbFgVJv),
);
if (BByVDaYVEweNgSCl == null) {
return;
}
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(mWEnrkpgWgfnODZg.conversationType)) {
if (KyUToNKdasnYcrci) {
//新增的会话
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.bNtqOyRWxOrowAZX?.call(BByVDaYVEweNgSCl!.map((e) => YIMConversation(gxECQohXBcwxDNVO: e)).toList());
});
} else {
//原有的会话
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(BByVDaYVEweNgSCl!.map((e) => YIMConversation(gxECQohXBcwxDNVO: e)).toList());
});
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
}
});
}
break;
case "broadcast":
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.hJyRATsSappwYemU?.call(YIMBroadcastMessage.fromJson(DEzbKDIBPJVTWSIB["message"]));
});
break;
case "notification":
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.snFtgQoanrvKZGbH?.call(YIMNotificationMessage.fromJson(DEzbKDIBPJVTWSIB["message"]));
});
break;
case "push":
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.LbyRSdHpXqCWsHGc?.call(YIMPushMessage.fromJson(DEzbKDIBPJVTWSIB["message"]));
});
break;
case "revoke":
case "revoke_sync":
for (final bcEMCAWtDtEqrYph in (DEzbKDIBPJVTWSIB["messages"] as List<dynamic>)) {
final mWEnrkpgWgfnODZg = YIMRevokeMessage.fromJson(bcEMCAWtDtEqrYph);
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(mWEnrkpgWgfnODZg.conversationType)) {
final bBssIaNlNnKOAvZn = await ptLoDBriUoBUHreo.BnAKHlfpZoZtygAN.AckRTolahbNOGFUB(
mWEnrkpgWgfnODZg.conversationType,
mWEnrkpgWgfnODZg.messageID,
);
if (!bBssIaNlNnKOAvZn) return;
final MaHGdkWWOVttEAeS = await ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.seQaUCGGFYuCERMG(
mWEnrkpgWgfnODZg.conversationType,
mWEnrkpgWgfnODZg.conversationID,
// unRead: _YIMEnum_ConversatypeUnRead.Minus,
);
if (!MaHGdkWWOVttEAeS) return;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
Filter? TKUJvkDHgZbFgVJv;
switch (mWEnrkpgWgfnODZg.conversationType) {
case YIMEnum_ConversationType.P2P:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.to", mWEnrkpgWgfnODZg.conversationID)]),
Filter.and([Filter.equals("lastMessage.to", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.from", mWEnrkpgWgfnODZg.conversationID)]),
]),
Filter.equals("lastMessage.conversationType", mWEnrkpgWgfnODZg.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
TKUJvkDHgZbFgVJv = Filter.and([
Filter.equals("lastMessage.to", mWEnrkpgWgfnODZg.conversationID),
Filter.equals("lastMessage.conversationType", mWEnrkpgWgfnODZg.conversationType.rawValue),
]);
break;
}
final BByVDaYVEweNgSCl = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.LUwlOqRgyVmlEiyp<_YIMTable_Conversation>(
_YIMTableName.Conversation,
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(filter: TKUJvkDHgZbFgVJv),
);
if (BByVDaYVEweNgSCl == null) {
return;
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(BByVDaYVEweNgSCl.map((e) => YIMConversation(gxECQohXBcwxDNVO: e)).toList());
});
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.cBVOMoXdTyThFcRk?.call(mWEnrkpgWgfnODZg);
});
}
break;
case "receipt_p2p":
List<String> sDsMSUHRWCWnUEMZ = (DEzbKDIBPJVTWSIB["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final DLwuDqfWcelSXXhD in sDsMSUHRWCWnUEMZ) {
final voRizchBuKFeopdj = await ptLoDBriUoBUHreo.BnAKHlfpZoZtygAN.cHcferXdunSOGvab(
YIMEnum_ConversationType.P2P,
DLwuDqfWcelSXXhD,
false,
);
if (!voRizchBuKFeopdj) return;
final MaHGdkWWOVttEAeS = await ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.seQaUCGGFYuCERMG(
YIMEnum_ConversationType.P2P,
DLwuDqfWcelSXXhD,
);
if (!MaHGdkWWOVttEAeS) return;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
final BByVDaYVEweNgSCl = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.LUwlOqRgyVmlEiyp<_YIMTable_Conversation>(
_YIMTableName.Conversation,
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(
filter: Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.to", DLwuDqfWcelSXXhD)]),
Filter.and([Filter.equals("lastMessage.to", eFtbLxhxTmdNVKuo.hBYZOFteqhkvDgHA), Filter.equals("lastMessage.from", DLwuDqfWcelSXXhD)]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]),
),
);
if (BByVDaYVEweNgSCl == null) {
return;
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(BByVDaYVEweNgSCl.map((e) => YIMConversation(gxECQohXBcwxDNVO: e)).toList());
});
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.UUHdWrrAJtOmFFHX?.call(DLwuDqfWcelSXXhD);
});
}
break;
case "receipt_team":
List<String> sDsMSUHRWCWnUEMZ = (DEzbKDIBPJVTWSIB["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final DLwuDqfWcelSXXhD in sDsMSUHRWCWnUEMZ) {
final voRizchBuKFeopdj = await ptLoDBriUoBUHreo.BnAKHlfpZoZtygAN.cHcferXdunSOGvab(
YIMEnum_ConversationType.Team,
DLwuDqfWcelSXXhD,
false,
);
if (!voRizchBuKFeopdj) return;
final MaHGdkWWOVttEAeS = await ptLoDBriUoBUHreo.PDCrHbGmsBdFRajZ.seQaUCGGFYuCERMG(
YIMEnum_ConversationType.Team,
DLwuDqfWcelSXXhD,
);
if (!MaHGdkWWOVttEAeS) return;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.vbkGgBUjJANFBecG?.call();
});
final BByVDaYVEweNgSCl = await eFtbLxhxTmdNVKuo.HsDBYdwzkEBPFhmJ.LUwlOqRgyVmlEiyp<_YIMTable_Conversation>(
_YIMTableName.Conversation,
sprgVkbCCQhGYFSK: (map) => _YIMTable_Conversation.fromJson(map),
PldCyxtbMzvNSNom: Finder(
filter: Filter.and([
Filter.equals("lastMessage.to", DLwuDqfWcelSXXhD),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]),
),
);
if (BByVDaYVEweNgSCl == null) {
return;
}
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.ILHvgzQbwdReWqoO?.call(BByVDaYVEweNgSCl.map((e) => YIMConversation(gxECQohXBcwxDNVO: e)).toList());
});
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.UUHdWrrAJtOmFFHX?.call(DLwuDqfWcelSXXhD);
});
}
break;
case "receipt_room":
List<String> sDsMSUHRWCWnUEMZ = (DEzbKDIBPJVTWSIB["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final DLwuDqfWcelSXXhD in sDsMSUHRWCWnUEMZ) {
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.CTCflLMwyPmjZPwH.UUHdWrrAJtOmFFHX?.call(DLwuDqfWcelSXXhD);
});
}
break;
case "event_online":
final XmmgPsMLuAacbnca = DEzbKDIBPJVTWSIB["user"] as String;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.gIBffLBvsLQQSSxz.wldkkqaomaRtkvHS?.call(XmmgPsMLuAacbnca, YIMEnum_EventOnline.Online);
});
break;
case "event_offline":
final XmmgPsMLuAacbnca = DEzbKDIBPJVTWSIB["user"] as String;
eFtbLxhxTmdNVKuo.WeloVHMlcPVpCsCr.vUWyYsqBHvAmVrYc(() {
ptLoDBriUoBUHreo.gIBffLBvsLQQSSxz.wldkkqaomaRtkvHS?.call(XmmgPsMLuAacbnca, YIMEnum_EventOnline.Offline);
});
break;
case "update_user":
eFtbLxhxTmdNVKuo.plJXjIOyvNhjneLH = YIMUser.fromJson(DEzbKDIBPJVTWSIB["user"]);
}
});
}