Implementation
Future<void> CveoqPyErDMMWliG(String zaTIYcRGXhHqbuJY, Map<String, dynamic> mCBPWMvoUJveFdlV) async {
await zcorlFsMNiLCYtaD.synchronized(() async {
var DwghiTuezKxDQKJq = new Lock();
Future<void> FCFPbOAjMPsDWgge(YIMMessage LzYZgypaJvlVWNba, bool uqbEGPnKphgxoVSZ, {void Function(bool BYQhAOcHRUuLSvkg)? WeQhHiCFWrXRykFU}) async {
await DwghiTuezKxDQKJq.synchronized(() async {
if (LzYZgypaJvlVWNba.id == ReoPCjaUHvoEpqPz) return;
ReoPCjaUHvoEpqPz = LzYZgypaJvlVWNba.id;
switch (LzYZgypaJvlVWNba.conversationType) {
case YIMEnum_ConversationType.P2P:
final SgNaxYQfLxOCnKld = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.SgNaxYQfLxOCnKld(
_YIMTableName.Message,
filter: Filter.equals("id", LzYZgypaJvlVWNba.id),
);
if (SgNaxYQfLxOCnKld == null) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
if (SgNaxYQfLxOCnKld > 0) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
final lKXAxjMlubuYIVYN = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.vINnFFQGnIJPZAIj(
_YIMTableName.Message,
mCBPWMvoUJveFdlV: _YIMTable_Message(LzYZgypaJvlVWNba: LzYZgypaJvlVWNba),
);
if (!lKXAxjMlubuYIVYN) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
final lJJHuNCxLYuccEFO = await UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.wMubTEqkFbXrseOf(
LzYZgypaJvlVWNba.conversationType,
LzYZgypaJvlVWNba.from == LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ ? LzYZgypaJvlVWNba.to : LzYZgypaJvlVWNba.from,
uiHyFYalrgOKbWFH: (LzYZgypaJvlVWNba.from != LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ && LzYZgypaJvlVWNba.messageState == YIMEnum_MessageState.Success_UnRead) ? HWeWyeCJyQtwlSNl.odHTDFQDIWZrltfj : HWeWyeCJyQtwlSNl.LYybvXEMeNKoyHfF,
);
if (!lJJHuNCxLYuccEFO) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
if (uqbEGPnKphgxoVSZ)
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.yalZOpINSoHltNYa?.call([LzYZgypaJvlVWNba]);
});
else
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.cNmAhHAKCtKEemPx?.call([LzYZgypaJvlVWNba]);
});
WeQhHiCFWrXRykFU?.call(true);
break;
case YIMEnum_ConversationType.Team:
final SgNaxYQfLxOCnKld = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.SgNaxYQfLxOCnKld(
_YIMTableName.Message,
filter: Filter.equals("id", LzYZgypaJvlVWNba.id),
);
if (SgNaxYQfLxOCnKld == null) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
if (SgNaxYQfLxOCnKld > 0) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
final lKXAxjMlubuYIVYN = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.vINnFFQGnIJPZAIj(
_YIMTableName.Message,
mCBPWMvoUJveFdlV: _YIMTable_Message(LzYZgypaJvlVWNba: LzYZgypaJvlVWNba),
);
if (!lKXAxjMlubuYIVYN) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
final lJJHuNCxLYuccEFO = await UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.wMubTEqkFbXrseOf(
LzYZgypaJvlVWNba.conversationType,
LzYZgypaJvlVWNba.to,
uiHyFYalrgOKbWFH: (LzYZgypaJvlVWNba.from != LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ) ? HWeWyeCJyQtwlSNl.odHTDFQDIWZrltfj : HWeWyeCJyQtwlSNl.LYybvXEMeNKoyHfF,
);
if (!lJJHuNCxLYuccEFO) {
WeQhHiCFWrXRykFU?.call(false);
return;
}
if (uqbEGPnKphgxoVSZ)
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.yalZOpINSoHltNYa?.call([LzYZgypaJvlVWNba]);
});
else
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.cNmAhHAKCtKEemPx?.call([LzYZgypaJvlVWNba]);
});
WeQhHiCFWrXRykFU?.call(true);
break;
case YIMEnum_ConversationType.ChatRoom:
if (uqbEGPnKphgxoVSZ)
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.yalZOpINSoHltNYa?.call([LzYZgypaJvlVWNba]);
});
else
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.cNmAhHAKCtKEemPx?.call([LzYZgypaJvlVWNba]);
});
WeQhHiCFWrXRykFU?.call(true);
break;
default:
break;
}
});
}
switch (zaTIYcRGXhHqbuJY) {
case "loginFailed":
WKbSkPXLbLldbxaH(mCBPWMvoUJveFdlV["msg"].toString());
break;
case "loginSuccess":
if (UrZeuHOtqxEKrnqa) return;
UrZeuHOtqxEKrnqa = true;
miCJOknoynsgrBuq?.cancel();
miCJOknoynsgrBuq = null;
KJryxFxBcDUYzICs?.cancel();
KJryxFxBcDUYzICs = null;
miCJOknoynsgrBuq = Timer.periodic(Duration(seconds: 5), (timer) {
if (!UFWAGwHDnWMkeYVR.EPwtIwAAPGFWUsid.WPtNMuRLJwMSwfMW(XfizYRBqzpZSWRWC: true) || nkgXyDoyNvfKHhmY == null) {
if (!pPjuKaRTSxFujXyn) {
pPjuKaRTSxFujXyn = true;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.fKXxGacbyIPwTFAI?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnecting, msg: "Reconnecting"));
});
uEIwYkJJogSwVEFp(true);
Future.delayed(Duration(seconds: 1), () {
vtrcSxfaPdTrnwHR(true);
Future.delayed(Duration(seconds: 5), () {
if (pPjuKaRTSxFujXyn) {
pPjuKaRTSxFujXyn = false;
uEIwYkJJogSwVEFp(true);
}
});
});
}
} else {
if (pPjuKaRTSxFujXyn) {
pPjuKaRTSxFujXyn = false;
vOSwpzDPuugJOHPs();
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.fKXxGacbyIPwTFAI?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnected, msg: "Reconnected"));
});
}
// LLTqoNwdULMbTCMh.rkgLYlaZYATBeHZH.sEnkoxXAwuAQuaxN("refreshOnline");
}
});
LLTqoNwdULMbTCMh.jgLTIuyajFGofHiY = YIMUser.fromJson(mCBPWMvoUJveFdlV["user"]);
LLTqoNwdULMbTCMh.PdyMuAjmbglFlzue = (mCBPWMvoUJveFdlV["conversationTops"] as List<dynamic>).map((e) => e.toString()).toList();
LLTqoNwdULMbTCMh.DHXdZrERwbjGjSnl = (mCBPWMvoUJveFdlV["disturbs_p2p"] as List<dynamic>).map((e) => e.toString()).toList();
LLTqoNwdULMbTCMh.FiabNWRUlXjYxtWH = (mCBPWMvoUJveFdlV["disturbs_team"] as List<dynamic>).map((e) => e.toString()).toList();
LLTqoNwdULMbTCMh.vwIBJtuDcnHAfSXz.txIKKaRxlMFPMiaE(mCBPWMvoUJveFdlV["oss"]);
LLTqoNwdULMbTCMh.vIxExKsyXmvzKfNM.txIKKaRxlMFPMiaE(LLTqoNwdULMbTCMh.yWiKPzRWuKnMOmDg?.push ?? mCBPWMvoUJveFdlV["push"]);
//同步云端会话
sEnkoxXAwuAQuaxN("queryConversations", YDAPNnFGlbnwsGKD: (BYQhAOcHRUuLSvkg, IvMCaaSVIWcQArzH, oCgstdHjeFkEZJjg, cDeQIDiofjWaDrqG) {
if (BYQhAOcHRUuLSvkg) {
List<Map<String, dynamic>> NRCLMrfOZrvArMzt = (IvMCaaSVIWcQArzH?["conversations"] as List<dynamic>).map((m) => m as Map<String, dynamic>).toList();
if (NRCLMrfOZrvArMzt.isEmpty) return;
UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.ajTLACjgidEMYssN(
WeQhHiCFWrXRykFU: (uPYgvxFwWZJlLsIn) {
//过滤本地已经存在的云端会话
uPYgvxFwWZJlLsIn?.forEach((tmmBlSfEBRBRYXTr) {
switch (tmmBlSfEBRBRYXTr.lastMessage.conversationType) {
case YIMEnum_ConversationType.P2P:
final APZrxmPSOMdFqrhE = tmmBlSfEBRBRYXTr.lastMessage.from == LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ ? tmmBlSfEBRBRYXTr.lastMessage.to : tmmBlSfEBRBRYXTr.lastMessage.from;
for (var xlgxeWrkNENuzDfw = NRCLMrfOZrvArMzt.length - 1; xlgxeWrkNENuzDfw >= 0; xlgxeWrkNENuzDfw--) {
if (NRCLMrfOZrvArMzt[xlgxeWrkNENuzDfw]["conversationID"] == APZrxmPSOMdFqrhE) NRCLMrfOZrvArMzt.removeAt(xlgxeWrkNENuzDfw);
}
break;
case YIMEnum_ConversationType.Team:
final APZrxmPSOMdFqrhE = tmmBlSfEBRBRYXTr.lastMessage.to;
for (var xlgxeWrkNENuzDfw = NRCLMrfOZrvArMzt.length - 1; xlgxeWrkNENuzDfw >= 0; xlgxeWrkNENuzDfw--) {
if (NRCLMrfOZrvArMzt[xlgxeWrkNENuzDfw]["conversationID"] == APZrxmPSOMdFqrhE) NRCLMrfOZrvArMzt.removeAt(xlgxeWrkNENuzDfw);
}
break;
default:
break;
}
});
//将本地没有的云端会话,把消息同步下来
for (final tmmBlSfEBRBRYXTr in NRCLMrfOZrvArMzt.reversed) {
UFWAGwHDnWMkeYVR.IpkZazzvRuaGbyHz.dKImelBzqvVekLTJ(
TMhjsByyUuXcscSR: YIMEnum_ConversationType.from(tmmBlSfEBRBRYXTr["conversationType"].toString()),
APZrxmPSOMdFqrhE: tmmBlSfEBRBRYXTr["conversationID"].toString(),
ltzhgYAFFqftwevn: LLTqoNwdULMbTCMh.JslmlShSPvANjIom.ZrPacjIpgcwIgoUG,
WeQhHiCFWrXRykFU: (BYQhAOcHRUuLSvkg, lvfuraErEoAQLgmw) async {
if (BYQhAOcHRUuLSvkg) {
for (var i = 0; i < lvfuraErEoAQLgmw!.length; i++) {
await FCFPbOAjMPsDWgge(lvfuraErEoAQLgmw[i], false, WeQhHiCFWrXRykFU: (BYQhAOcHRUuLSvkg) async {
if (!BYQhAOcHRUuLSvkg) return;
Filter? LebqekJGWsJVYQvG;
switch (YIMEnum_ConversationType.from(tmmBlSfEBRBRYXTr["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
LebqekJGWsJVYQvG = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.to", tmmBlSfEBRBRYXTr["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.from", tmmBlSfEBRBRYXTr["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
LebqekJGWsJVYQvG = Filter.and([
Filter.equals("lastMessage.to", tmmBlSfEBRBRYXTr["conversationID"]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
break;
default:
break;
}
final iafskpKlGrFTaGEh = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.YBmRYDaAbsiKcUrK<_YIMTable_Conversation>(
_YIMTableName.Conversation,
(TrZFRTVNLEkwWgMf) => TrZFRTVNLEkwWgMf!..unRead = int.parse(tmmBlSfEBRBRYXTr["unReadCount"].toString()),
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(filter: LebqekJGWsJVYQvG),
);
if (!iafskpKlGrFTaGEh) return;
if (i >= lvfuraErEoAQLgmw.length - 1) {
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
Filter? RyDvVcXmnThgbKWY;
switch (YIMEnum_ConversationType.from(tmmBlSfEBRBRYXTr["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
RyDvVcXmnThgbKWY = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.to", tmmBlSfEBRBRYXTr["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.from", tmmBlSfEBRBRYXTr["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", tmmBlSfEBRBRYXTr["conversationType"]),
]);
break;
case YIMEnum_ConversationType.Team:
RyDvVcXmnThgbKWY = Filter.and([
Filter.equals("lastMessage.to", tmmBlSfEBRBRYXTr["conversationID"]),
Filter.equals("lastMessage.conversationType", tmmBlSfEBRBRYXTr["conversationType"]),
]);
break;
}
final ksHlUMCxsMwUBrvE = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.JHzMkZIpOnZbQRwO<_YIMTable_Conversation>(
_YIMTableName.Conversation,
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(filter: RyDvVcXmnThgbKWY),
);
if (ksHlUMCxsMwUBrvE == null) {
return;
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.fwpmsLrZmnkZYHpn?.call(ksHlUMCxsMwUBrvE.map((e) => YIMConversation(tmmBlSfEBRBRYXTr: e)).toList());
});
}
});
}
}
},
);
}
},
);
}
});
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
VvXapqbvRSBwcBox?.call(YIMResult<YIMEnum_LoginResult>(code: YIMEnum_LoginResult.Success, msg: "success"));
});
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
VvXapqbvRSBwcBox = null;
});
//将历史的发送中消息,置为失败状态
await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.bNJxPZuTchaIARGE(
_YIMTableName.Message,
() {
return {"messageState": YIMEnum_MessageState.Fail.rawValue};
},
RaxVrYLTOIwElzzS: Finder(filter: Filter.equals("messageState", YIMEnum_MessageState.Sending.rawValue)),
);
UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.ajTLACjgidEMYssN(WeQhHiCFWrXRykFU: (uPYgvxFwWZJlLsIn) async {
if (uPYgvxFwWZJlLsIn == null) return;
for (var tmmBlSfEBRBRYXTr in uPYgvxFwWZJlLsIn) {
await UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.wMubTEqkFbXrseOf(tmmBlSfEBRBRYXTr.lastMessage.conversationType, tmmBlSfEBRBRYXTr.lastMessage.getConversatinoID());
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(uPYgvxFwWZJlLsIn);
});
});
break;
case "conversation_top_update":
List<String> PdyMuAjmbglFlzue = (mCBPWMvoUJveFdlV["conversationTops"] as List).map((element) => element.toString()).toList();
LLTqoNwdULMbTCMh.PdyMuAjmbglFlzue = PdyMuAjmbglFlzue;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
if (UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN != null) {
UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.ajTLACjgidEMYssN(WeQhHiCFWrXRykFU: (uPYgvxFwWZJlLsIn) {
if (uPYgvxFwWZJlLsIn == null) return;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(uPYgvxFwWZJlLsIn);
});
});
}
break;
case "disturbs_p2p_update":
List<String> DHXdZrERwbjGjSnl = (mCBPWMvoUJveFdlV["disturbs_p2p"] as List).map((element) => element.toString()).toList();
LLTqoNwdULMbTCMh.DHXdZrERwbjGjSnl = DHXdZrERwbjGjSnl;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
if (UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN != null) {
UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.ajTLACjgidEMYssN(WeQhHiCFWrXRykFU: (uPYgvxFwWZJlLsIn) {
if (uPYgvxFwWZJlLsIn == null) return;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(uPYgvxFwWZJlLsIn);
});
});
}
break;
case "disturbs_team_update":
List<String> FiabNWRUlXjYxtWH = (mCBPWMvoUJveFdlV["disturbs_team"] as List).map((element) => element.toString()).toList();
LLTqoNwdULMbTCMh.FiabNWRUlXjYxtWH = FiabNWRUlXjYxtWH;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
if (UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN != null) {
UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.ajTLACjgidEMYssN(WeQhHiCFWrXRykFU: (uPYgvxFwWZJlLsIn) {
if (uPYgvxFwWZJlLsIn == null) return;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(uPYgvxFwWZJlLsIn);
});
});
}
break;
case "kick":
UFWAGwHDnWMkeYVR.EPwtIwAAPGFWUsid.jqOkmGyFpWidQoCq();
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.fKXxGacbyIPwTFAI?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Kick, msg: "Kicked by ${mCBPWMvoUJveFdlV["device"]} device"));
});
break;
case "kick_room":
final lZUhKaLksbDQgDtw = mCBPWMvoUJveFdlV["roomID"] as String;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.jgDwPEaAOgmbgPlx?.call(lZUhKaLksbDQgDtw);
});
break;
case "close_room":
final lZUhKaLksbDQgDtw = mCBPWMvoUJveFdlV["roomID"] as String;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.kaBrHfqBopKdwaBk?.call(lZUhKaLksbDQgDtw);
});
break;
case "message":
case "message_sync":
final lvfuraErEoAQLgmw = (mCBPWMvoUJveFdlV["messages"] as List<dynamic>).map((element) => YIMMessage(LzYZgypaJvlVWNba: _YIMTable_Message.fromJson(element))).toList();
for (var LzYZgypaJvlVWNba in lvfuraErEoAQLgmw) {
Filter? RyDvVcXmnThgbKWY;
switch (LzYZgypaJvlVWNba.conversationType) {
case YIMEnum_ConversationType.P2P:
RyDvVcXmnThgbKWY = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.to", LzYZgypaJvlVWNba.getConversatinoID())]),
Filter.and([Filter.equals("lastMessage.to", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.from", LzYZgypaJvlVWNba.getConversatinoID())]),
]),
Filter.equals("lastMessage.conversationType", LzYZgypaJvlVWNba.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
RyDvVcXmnThgbKWY = Filter.and([
Filter.equals("lastMessage.to", LzYZgypaJvlVWNba.getConversatinoID()),
Filter.equals("lastMessage.conversationType", LzYZgypaJvlVWNba.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
RyDvVcXmnThgbKWY = Filter.and([
Filter.equals("lastMessage.conversationType", LzYZgypaJvlVWNba.conversationType.rawValue),
]);
break;
}
var ksHlUMCxsMwUBrvE = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.JHzMkZIpOnZbQRwO<_YIMTable_Conversation>(
_YIMTableName.Conversation,
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(filter: RyDvVcXmnThgbKWY),
);
if (ksHlUMCxsMwUBrvE == null) {
return;
}
await FCFPbOAjMPsDWgge(LzYZgypaJvlVWNba, zaTIYcRGXhHqbuJY == "message", WeQhHiCFWrXRykFU: (BYQhAOcHRUuLSvkg) async {
if (!BYQhAOcHRUuLSvkg) return;
final drfbZZKgjrUXPQYW = ksHlUMCxsMwUBrvE!.isEmpty;
ksHlUMCxsMwUBrvE = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.JHzMkZIpOnZbQRwO<_YIMTable_Conversation>(
_YIMTableName.Conversation,
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(filter: RyDvVcXmnThgbKWY),
);
if (ksHlUMCxsMwUBrvE == null) {
return;
}
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(LzYZgypaJvlVWNba.conversationType)) {
if (drfbZZKgjrUXPQYW) {
//新增的会话
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.fwpmsLrZmnkZYHpn?.call(ksHlUMCxsMwUBrvE!.map((e) => YIMConversation(tmmBlSfEBRBRYXTr: e)).toList());
});
} else {
//原有的会话
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(ksHlUMCxsMwUBrvE!.map((e) => YIMConversation(tmmBlSfEBRBRYXTr: e)).toList());
});
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
}
});
}
break;
case "broadcast":
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.lQlIhUskEfXAehSF?.call(YIMBroadcastMessage.fromJson(mCBPWMvoUJveFdlV["message"]));
});
break;
case "notification":
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.cPhgGdhYxPDFaUdj?.call(YIMNotificationMessage.fromJson(mCBPWMvoUJveFdlV["message"]));
});
break;
case "push":
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.nnWYPDZDPTjfrkVX?.call(YIMPushMessage.fromJson(mCBPWMvoUJveFdlV["message"]));
});
break;
case "revoke":
case "revoke_sync":
for (final UZeEzfFadcCpVPRB in (mCBPWMvoUJveFdlV["messages"] as List<dynamic>)) {
final LzYZgypaJvlVWNba = YIMRevokeMessage.fromJson(UZeEzfFadcCpVPRB);
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(LzYZgypaJvlVWNba.conversationType)) {
final VvbzkqrRGTSCFXwh = await UFWAGwHDnWMkeYVR.IpkZazzvRuaGbyHz.NANVuoPzMzZTNzWc(
LzYZgypaJvlVWNba.conversationType,
LzYZgypaJvlVWNba.messageID,
);
if (!VvbzkqrRGTSCFXwh) return;
final lJJHuNCxLYuccEFO = await UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.wMubTEqkFbXrseOf(
LzYZgypaJvlVWNba.conversationType,
LzYZgypaJvlVWNba.conversationID,
// unRead: _YIMEnum_ConversatypeUnRead.Minus,
);
if (!lJJHuNCxLYuccEFO) return;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
Filter? RyDvVcXmnThgbKWY;
switch (LzYZgypaJvlVWNba.conversationType) {
case YIMEnum_ConversationType.P2P:
RyDvVcXmnThgbKWY = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.to", LzYZgypaJvlVWNba.conversationID)]),
Filter.and([Filter.equals("lastMessage.to", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.from", LzYZgypaJvlVWNba.conversationID)]),
]),
Filter.equals("lastMessage.conversationType", LzYZgypaJvlVWNba.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
RyDvVcXmnThgbKWY = Filter.and([
Filter.equals("lastMessage.to", LzYZgypaJvlVWNba.conversationID),
Filter.equals("lastMessage.conversationType", LzYZgypaJvlVWNba.conversationType.rawValue),
]);
break;
}
final ksHlUMCxsMwUBrvE = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.JHzMkZIpOnZbQRwO<_YIMTable_Conversation>(
_YIMTableName.Conversation,
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(filter: RyDvVcXmnThgbKWY),
);
if (ksHlUMCxsMwUBrvE == null) {
return;
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(ksHlUMCxsMwUBrvE.map((e) => YIMConversation(tmmBlSfEBRBRYXTr: e)).toList());
});
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.LSpBkUMWYgUlRILq?.call(LzYZgypaJvlVWNba);
});
}
break;
case "receipt_p2p":
List<String> dNGfoXzagEiUFioI = (mCBPWMvoUJveFdlV["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final APZrxmPSOMdFqrhE in dNGfoXzagEiUFioI) {
final PaRmLOscFwBqYozV = await UFWAGwHDnWMkeYVR.IpkZazzvRuaGbyHz.XVdMdqaGLUZlUzMl(
YIMEnum_ConversationType.P2P,
APZrxmPSOMdFqrhE,
false,
);
if (!PaRmLOscFwBqYozV) return;
final lJJHuNCxLYuccEFO = await UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.wMubTEqkFbXrseOf(
YIMEnum_ConversationType.P2P,
APZrxmPSOMdFqrhE,
);
if (!lJJHuNCxLYuccEFO) return;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
final ksHlUMCxsMwUBrvE = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.JHzMkZIpOnZbQRwO<_YIMTable_Conversation>(
_YIMTableName.Conversation,
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(
filter: Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.to", APZrxmPSOMdFqrhE)]),
Filter.and([Filter.equals("lastMessage.to", LLTqoNwdULMbTCMh.IemXKsVNcGUWeUgJ), Filter.equals("lastMessage.from", APZrxmPSOMdFqrhE)]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]),
),
);
if (ksHlUMCxsMwUBrvE == null) {
return;
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(ksHlUMCxsMwUBrvE.map((e) => YIMConversation(tmmBlSfEBRBRYXTr: e)).toList());
});
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.STUzALALsNLnvAoG?.call(APZrxmPSOMdFqrhE);
});
}
break;
case "receipt_team":
List<String> dNGfoXzagEiUFioI = (mCBPWMvoUJveFdlV["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final APZrxmPSOMdFqrhE in dNGfoXzagEiUFioI) {
final PaRmLOscFwBqYozV = await UFWAGwHDnWMkeYVR.IpkZazzvRuaGbyHz.XVdMdqaGLUZlUzMl(
YIMEnum_ConversationType.Team,
APZrxmPSOMdFqrhE,
false,
);
if (!PaRmLOscFwBqYozV) return;
final lJJHuNCxLYuccEFO = await UFWAGwHDnWMkeYVR.uzkozbjuyYvNIrYu.wMubTEqkFbXrseOf(
YIMEnum_ConversationType.Team,
APZrxmPSOMdFqrhE,
);
if (!lJJHuNCxLYuccEFO) return;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.wFocFAyakMKTXEwq?.call();
});
final ksHlUMCxsMwUBrvE = await LLTqoNwdULMbTCMh.fWmDEyWlYlSzIgZn.JHzMkZIpOnZbQRwO<_YIMTable_Conversation>(
_YIMTableName.Conversation,
KgQmNjCadrqeQjJE: (map) => _YIMTable_Conversation.fromJson(map),
RaxVrYLTOIwElzzS: Finder(
filter: Filter.and([
Filter.equals("lastMessage.to", APZrxmPSOMdFqrhE),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]),
),
);
if (ksHlUMCxsMwUBrvE == null) {
return;
}
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.xwwJXzdAXRAijlBN?.call(ksHlUMCxsMwUBrvE.map((e) => YIMConversation(tmmBlSfEBRBRYXTr: e)).toList());
});
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.STUzALALsNLnvAoG?.call(APZrxmPSOMdFqrhE);
});
}
break;
case "receipt_room":
List<String> dNGfoXzagEiUFioI = (mCBPWMvoUJveFdlV["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final APZrxmPSOMdFqrhE in dNGfoXzagEiUFioI) {
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.drSbAyhOZTsmWGTg.STUzALALsNLnvAoG?.call(APZrxmPSOMdFqrhE);
});
}
break;
case "event_online":
final EyGhqnWGTezVVEnB = mCBPWMvoUJveFdlV["user"] as String;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.fnTzLwBLboKJENZV.zEpfxXprHiKaSqtJ?.call(EyGhqnWGTezVVEnB, YIMEnum_EventOnline.Online);
});
break;
case "event_offline":
final EyGhqnWGTezVVEnB = mCBPWMvoUJveFdlV["user"] as String;
LLTqoNwdULMbTCMh.DwbTkDIljwhCkWxz.KuzgoGyXoqDTCcrr(() {
UFWAGwHDnWMkeYVR.fnTzLwBLboKJENZV.zEpfxXprHiKaSqtJ?.call(EyGhqnWGTezVVEnB, YIMEnum_EventOnline.Offline);
});
break;
case "update_user":
LLTqoNwdULMbTCMh.jgLTIuyajFGofHiY = YIMUser.fromJson(mCBPWMvoUJveFdlV["user"]);
}
});
}