Implementation
Future<void> PjeMpZDUQFuWMxLZ(String AxttyBNBjvqpIkXM, Map<String, dynamic> rFbpbySHruxzmGYR) async {
await ooLCkApGsOaKMuyS.synchronized(() async {
var oKdIWPKKltkUUnZY = new Lock();
Future<void> WLxGVnpuoOzqKNPL(YIMMessage NouDniwlzyGmGpUJ, bool sjPrrRSfCLloypMg, {void Function(bool vlIVOpmRlppDVoLJ)? fDsWzZmHzuvhjHYF}) async {
await oKdIWPKKltkUUnZY.synchronized(() async {
if (NouDniwlzyGmGpUJ.id == VasRFfDtCTHKLphH) return;
VasRFfDtCTHKLphH = NouDniwlzyGmGpUJ.id;
switch (NouDniwlzyGmGpUJ.conversationType) {
case YIMEnum_ConversationType.P2P:
final QgBzKiNpnHcBSCXv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.QgBzKiNpnHcBSCXv(
_YIMTableName.Message,
filter: Filter.equals("id", NouDniwlzyGmGpUJ.id),
);
if (QgBzKiNpnHcBSCXv == null) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
if (QgBzKiNpnHcBSCXv > 0) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
final kbHiZFdJlrKnSEwB = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.xHLoiYMIgKDYsInU(
_YIMTableName.Message,
rFbpbySHruxzmGYR: _YIMTable_Message(NouDniwlzyGmGpUJ: NouDniwlzyGmGpUJ),
);
if (!kbHiZFdJlrKnSEwB) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
final kNWClwNpWkhUiUnu = await iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.VJhqgocOoZnovLIz(
NouDniwlzyGmGpUJ.conversationType,
NouDniwlzyGmGpUJ.from == pUedSqApqySLXfuk.HDRcNNpDAaYaKnho ? NouDniwlzyGmGpUJ.to : NouDniwlzyGmGpUJ.from,
gpNGjWdnIDwBNcoS: (NouDniwlzyGmGpUJ.from != pUedSqApqySLXfuk.HDRcNNpDAaYaKnho && NouDniwlzyGmGpUJ.messageState == YIMEnum_MessageState.Success_UnRead) ? JKoIbQhNEBkeBGCn.gCgovVywelvGwrhM : JKoIbQhNEBkeBGCn.JaPGrDWPTeqkIxXY,
);
if (!kNWClwNpWkhUiUnu) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
if (sjPrrRSfCLloypMg)
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.GoeBWmFDCfBYIvZi?.call([NouDniwlzyGmGpUJ]);
});
else
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.KXlchqmQVBmarQpB?.call([NouDniwlzyGmGpUJ]);
});
fDsWzZmHzuvhjHYF?.call(true);
break;
case YIMEnum_ConversationType.Team:
final QgBzKiNpnHcBSCXv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.QgBzKiNpnHcBSCXv(
_YIMTableName.Message,
filter: Filter.equals("id", NouDniwlzyGmGpUJ.id),
);
if (QgBzKiNpnHcBSCXv == null) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
if (QgBzKiNpnHcBSCXv > 0) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
final kbHiZFdJlrKnSEwB = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.xHLoiYMIgKDYsInU(
_YIMTableName.Message,
rFbpbySHruxzmGYR: _YIMTable_Message(NouDniwlzyGmGpUJ: NouDniwlzyGmGpUJ),
);
if (!kbHiZFdJlrKnSEwB) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
final kNWClwNpWkhUiUnu = await iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.VJhqgocOoZnovLIz(
NouDniwlzyGmGpUJ.conversationType,
NouDniwlzyGmGpUJ.to,
gpNGjWdnIDwBNcoS: (NouDniwlzyGmGpUJ.from != pUedSqApqySLXfuk.HDRcNNpDAaYaKnho) ? JKoIbQhNEBkeBGCn.gCgovVywelvGwrhM : JKoIbQhNEBkeBGCn.JaPGrDWPTeqkIxXY,
);
if (!kNWClwNpWkhUiUnu) {
fDsWzZmHzuvhjHYF?.call(false);
return;
}
if (sjPrrRSfCLloypMg)
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.GoeBWmFDCfBYIvZi?.call([NouDniwlzyGmGpUJ]);
});
else
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.KXlchqmQVBmarQpB?.call([NouDniwlzyGmGpUJ]);
});
fDsWzZmHzuvhjHYF?.call(true);
break;
case YIMEnum_ConversationType.ChatRoom:
if (sjPrrRSfCLloypMg)
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.GoeBWmFDCfBYIvZi?.call([NouDniwlzyGmGpUJ]);
});
else
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.KXlchqmQVBmarQpB?.call([NouDniwlzyGmGpUJ]);
});
fDsWzZmHzuvhjHYF?.call(true);
break;
default:
break;
}
});
}
switch (AxttyBNBjvqpIkXM) {
case "loginFailed":
WUXhwGKqhQrNwyEQ(rFbpbySHruxzmGYR["msg"].toString());
break;
case "loginSuccess":
if (qaFEeVfOohXOQeac) return;
qaFEeVfOohXOQeac = true;
AIpNOPZQQcUZEXxl?.cancel();
AIpNOPZQQcUZEXxl = null;
RZaLsVOMnXHADeEX?.cancel();
RZaLsVOMnXHADeEX = null;
AIpNOPZQQcUZEXxl = Timer.periodic(Duration(seconds: 5), (timer) {
if (!iDxDuKoCRjwSpSnP.lUBagJdrpVTUiLlL.nJlQLbYMmygXrVIu(zPTwxHqbNDBbxpcG: true) || vYppRCJzdSOhSijI == null) {
if (!kYxbdmxquGpZpenZ) {
kYxbdmxquGpZpenZ = true;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.OExbLpZHFKVLSOZn?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnecting, msg: "Reconnecting"));
});
arlKVgBJVOfgnBoJ(true);
Future.delayed(Duration(seconds: 1), () {
SRUeaxmalRHhJjoG(true);
Future.delayed(Duration(seconds: 5), () {
if (kYxbdmxquGpZpenZ) {
kYxbdmxquGpZpenZ = false;
arlKVgBJVOfgnBoJ(true);
}
});
});
}
} else {
if (kYxbdmxquGpZpenZ) {
kYxbdmxquGpZpenZ = false;
ukWNBaxblQRMOAUt();
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.OExbLpZHFKVLSOZn?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnected, msg: "Reconnected"));
});
}
// pUedSqApqySLXfuk.KpxKYjvUKTKwfqjk.kvxCwDBIcIBVbdEA("refreshOnline");
}
});
pUedSqApqySLXfuk.LNoEFVterpfBmSay = YIMUser.fromJson(rFbpbySHruxzmGYR["user"]);
pUedSqApqySLXfuk.uZAywtqUTaodvNJe = (rFbpbySHruxzmGYR["conversationTops"] as List<dynamic>).map((e) => e.toString()).toList();
pUedSqApqySLXfuk.ktCTiTICCGFBgwmf = (rFbpbySHruxzmGYR["disturbs_p2p"] as List<dynamic>).map((e) => e.toString()).toList();
pUedSqApqySLXfuk.QFONBoKkKrqnbxEO = (rFbpbySHruxzmGYR["disturbs_team"] as List<dynamic>).map((e) => e.toString()).toList();
pUedSqApqySLXfuk.LkauoVbLzIsCeEvr.cwVWjdHyCDsQWQCj(rFbpbySHruxzmGYR["oss"]);
pUedSqApqySLXfuk.uVAXjPfKCzuYRoJu.cwVWjdHyCDsQWQCj(pUedSqApqySLXfuk.skXQQIaSsaiDhaLc?.push ?? rFbpbySHruxzmGYR["push"]);
//同步云端会话
kvxCwDBIcIBVbdEA("queryConversations", iwKloQCTGRoPHvpN: (vlIVOpmRlppDVoLJ, hvZigxghgcRFFwdO, pvovyYaVxMwKNREX, PJqUrrwaWORPhMvl) {
if (vlIVOpmRlppDVoLJ) {
List<Map<String, dynamic>> aIuGhAfNJPFaRmgF = (hvZigxghgcRFFwdO?["conversations"] as List<dynamic>).map((m) => m as Map<String, dynamic>).toList();
if (aIuGhAfNJPFaRmgF.isEmpty) return;
iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.eUSSMDZGAOtpUEYZ(
fDsWzZmHzuvhjHYF: (soFwquLayEmGnujs) {
//过滤本地已经存在的云端会话
soFwquLayEmGnujs?.forEach((OxbmHPoYuPTpcmgT) {
switch (OxbmHPoYuPTpcmgT.lastMessage.conversationType) {
case YIMEnum_ConversationType.P2P:
final vINCQVmsnelWAFiE = OxbmHPoYuPTpcmgT.lastMessage.from == pUedSqApqySLXfuk.HDRcNNpDAaYaKnho ? OxbmHPoYuPTpcmgT.lastMessage.to : OxbmHPoYuPTpcmgT.lastMessage.from;
for (var lpeVcpllmhLujPGz = aIuGhAfNJPFaRmgF.length - 1; lpeVcpllmhLujPGz >= 0; lpeVcpllmhLujPGz--) {
if (aIuGhAfNJPFaRmgF[lpeVcpllmhLujPGz]["conversationID"] == vINCQVmsnelWAFiE) aIuGhAfNJPFaRmgF.removeAt(lpeVcpllmhLujPGz);
}
break;
case YIMEnum_ConversationType.Team:
final vINCQVmsnelWAFiE = OxbmHPoYuPTpcmgT.lastMessage.to;
for (var lpeVcpllmhLujPGz = aIuGhAfNJPFaRmgF.length - 1; lpeVcpllmhLujPGz >= 0; lpeVcpllmhLujPGz--) {
if (aIuGhAfNJPFaRmgF[lpeVcpllmhLujPGz]["conversationID"] == vINCQVmsnelWAFiE) aIuGhAfNJPFaRmgF.removeAt(lpeVcpllmhLujPGz);
}
break;
default:
break;
}
});
//将本地没有的云端会话,把消息同步下来
for (final OxbmHPoYuPTpcmgT in aIuGhAfNJPFaRmgF.reversed) {
iDxDuKoCRjwSpSnP.qIhdcqGfglUdGNRZ.PtNwDmkDnjmdOVaa(
FhjdxBSxQMYGyidK: YIMEnum_ConversationType.from(OxbmHPoYuPTpcmgT["conversationType"].toString()),
vINCQVmsnelWAFiE: OxbmHPoYuPTpcmgT["conversationID"].toString(),
qIKxTqauqNnvdwJm: pUedSqApqySLXfuk.dqgQvOvcstGaJMWw.BzphSMlqNmdCLXJp,
fDsWzZmHzuvhjHYF: (vlIVOpmRlppDVoLJ, BIWKJpDVKOVyGNPE) async {
if (vlIVOpmRlppDVoLJ) {
for (var i = 0; i < BIWKJpDVKOVyGNPE!.length; i++) {
await WLxGVnpuoOzqKNPL(BIWKJpDVKOVyGNPE[i], false, fDsWzZmHzuvhjHYF: (vlIVOpmRlppDVoLJ) async {
if (!vlIVOpmRlppDVoLJ) return;
Filter? gRbSnqfUMZGoixFM;
switch (YIMEnum_ConversationType.from(OxbmHPoYuPTpcmgT["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
gRbSnqfUMZGoixFM = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.to", OxbmHPoYuPTpcmgT["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.from", OxbmHPoYuPTpcmgT["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
gRbSnqfUMZGoixFM = Filter.and([
Filter.equals("lastMessage.to", OxbmHPoYuPTpcmgT["conversationID"]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
break;
default:
break;
}
final xtdeVFBKcoyxfxLm = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.tcrpGsqmIoDlHQex<_YIMTable_Conversation>(
_YIMTableName.Conversation,
(qvmaWLIAPrHSyTjt) => qvmaWLIAPrHSyTjt!..unRead = int.parse(OxbmHPoYuPTpcmgT["unReadCount"].toString()),
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(filter: gRbSnqfUMZGoixFM),
);
if (!xtdeVFBKcoyxfxLm) return;
if (i >= BIWKJpDVKOVyGNPE.length - 1) {
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
Filter? PczaErAOrgmnlYTK;
switch (YIMEnum_ConversationType.from(OxbmHPoYuPTpcmgT["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
PczaErAOrgmnlYTK = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.to", OxbmHPoYuPTpcmgT["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.from", OxbmHPoYuPTpcmgT["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", OxbmHPoYuPTpcmgT["conversationType"]),
]);
break;
case YIMEnum_ConversationType.Team:
PczaErAOrgmnlYTK = Filter.and([
Filter.equals("lastMessage.to", OxbmHPoYuPTpcmgT["conversationID"]),
Filter.equals("lastMessage.conversationType", OxbmHPoYuPTpcmgT["conversationType"]),
]);
break;
}
final RJJZEVUaxDvrzUJv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.wanYqaCFigqxxdwW<_YIMTable_Conversation>(
_YIMTableName.Conversation,
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(filter: PczaErAOrgmnlYTK),
);
if (RJJZEVUaxDvrzUJv == null) {
return;
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.yjsVNFOgyFcFDUjI?.call(RJJZEVUaxDvrzUJv.map((e) => YIMConversation(OxbmHPoYuPTpcmgT: e)).toList());
});
}
});
}
}
},
);
}
},
);
}
});
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
XBqnxbHIHuZeGasc?.call(YIMResult<YIMEnum_LoginResult>(code: YIMEnum_LoginResult.Success, msg: "success"));
});
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
XBqnxbHIHuZeGasc = null;
});
//将历史的发送中消息,置为失败状态
await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.bmENyNbEhRkTDKiK(
_YIMTableName.Message,
() {
return {"messageState": YIMEnum_MessageState.Fail.rawValue};
},
bNcvVipPUFFpNiXa: Finder(filter: Filter.equals("messageState", YIMEnum_MessageState.Sending.rawValue)),
);
iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.eUSSMDZGAOtpUEYZ(fDsWzZmHzuvhjHYF: (soFwquLayEmGnujs) async {
if (soFwquLayEmGnujs == null) return;
for (var OxbmHPoYuPTpcmgT in soFwquLayEmGnujs) {
await iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.VJhqgocOoZnovLIz(OxbmHPoYuPTpcmgT.lastMessage.conversationType, OxbmHPoYuPTpcmgT.lastMessage.getConversatinoID());
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(soFwquLayEmGnujs);
});
});
break;
case "conversation_top_update":
List<String> uZAywtqUTaodvNJe = (rFbpbySHruxzmGYR["conversationTops"] as List).map((element) => element.toString()).toList();
pUedSqApqySLXfuk.uZAywtqUTaodvNJe = uZAywtqUTaodvNJe;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
if (iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB != null) {
iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.eUSSMDZGAOtpUEYZ(fDsWzZmHzuvhjHYF: (soFwquLayEmGnujs) {
if (soFwquLayEmGnujs == null) return;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(soFwquLayEmGnujs);
});
});
}
break;
case "disturbs_p2p_update":
List<String> ktCTiTICCGFBgwmf = (rFbpbySHruxzmGYR["disturbs_p2p"] as List).map((element) => element.toString()).toList();
pUedSqApqySLXfuk.ktCTiTICCGFBgwmf = ktCTiTICCGFBgwmf;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
if (iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB != null) {
iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.eUSSMDZGAOtpUEYZ(fDsWzZmHzuvhjHYF: (soFwquLayEmGnujs) {
if (soFwquLayEmGnujs == null) return;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(soFwquLayEmGnujs);
});
});
}
break;
case "disturbs_team_update":
List<String> QFONBoKkKrqnbxEO = (rFbpbySHruxzmGYR["disturbs_team"] as List).map((element) => element.toString()).toList();
pUedSqApqySLXfuk.QFONBoKkKrqnbxEO = QFONBoKkKrqnbxEO;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
if (iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB != null) {
iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.eUSSMDZGAOtpUEYZ(fDsWzZmHzuvhjHYF: (soFwquLayEmGnujs) {
if (soFwquLayEmGnujs == null) return;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(soFwquLayEmGnujs);
});
});
}
break;
case "kick":
iDxDuKoCRjwSpSnP.lUBagJdrpVTUiLlL.NaZaVWlXEbKLcRll();
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.OExbLpZHFKVLSOZn?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Kick, msg: "Kicked by ${rFbpbySHruxzmGYR["device"]} device"));
});
break;
case "kick_room":
final AJlcmxzPmqPcUYwM = rFbpbySHruxzmGYR["roomID"] as String;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.jPdLbUypmmQtmVjx?.call(AJlcmxzPmqPcUYwM);
});
break;
case "close_room":
final AJlcmxzPmqPcUYwM = rFbpbySHruxzmGYR["roomID"] as String;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.yVDNAuJFzxuENoPh?.call(AJlcmxzPmqPcUYwM);
});
break;
case "message":
case "message_sync":
final BIWKJpDVKOVyGNPE = (rFbpbySHruxzmGYR["messages"] as List<dynamic>).map((element) => YIMMessage(NouDniwlzyGmGpUJ: _YIMTable_Message.fromJson(element))).toList();
for (var NouDniwlzyGmGpUJ in BIWKJpDVKOVyGNPE) {
Filter? PczaErAOrgmnlYTK;
switch (NouDniwlzyGmGpUJ.conversationType) {
case YIMEnum_ConversationType.P2P:
PczaErAOrgmnlYTK = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.to", NouDniwlzyGmGpUJ.getConversatinoID())]),
Filter.and([Filter.equals("lastMessage.to", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.from", NouDniwlzyGmGpUJ.getConversatinoID())]),
]),
Filter.equals("lastMessage.conversationType", NouDniwlzyGmGpUJ.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
PczaErAOrgmnlYTK = Filter.and([
Filter.equals("lastMessage.to", NouDniwlzyGmGpUJ.getConversatinoID()),
Filter.equals("lastMessage.conversationType", NouDniwlzyGmGpUJ.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
PczaErAOrgmnlYTK = Filter.and([
Filter.equals("lastMessage.conversationType", NouDniwlzyGmGpUJ.conversationType.rawValue),
]);
break;
}
var RJJZEVUaxDvrzUJv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.wanYqaCFigqxxdwW<_YIMTable_Conversation>(
_YIMTableName.Conversation,
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(filter: PczaErAOrgmnlYTK),
);
if (RJJZEVUaxDvrzUJv == null) {
return;
}
await WLxGVnpuoOzqKNPL(NouDniwlzyGmGpUJ, AxttyBNBjvqpIkXM == "message", fDsWzZmHzuvhjHYF: (vlIVOpmRlppDVoLJ) async {
if (!vlIVOpmRlppDVoLJ) return;
final eOjAveOTJaooLdQm = RJJZEVUaxDvrzUJv!.isEmpty;
RJJZEVUaxDvrzUJv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.wanYqaCFigqxxdwW<_YIMTable_Conversation>(
_YIMTableName.Conversation,
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(filter: PczaErAOrgmnlYTK),
);
if (RJJZEVUaxDvrzUJv == null) {
return;
}
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(NouDniwlzyGmGpUJ.conversationType)) {
if (eOjAveOTJaooLdQm) {
//新增的会话
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.yjsVNFOgyFcFDUjI?.call(RJJZEVUaxDvrzUJv!.map((e) => YIMConversation(OxbmHPoYuPTpcmgT: e)).toList());
});
} else {
//原有的会话
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(RJJZEVUaxDvrzUJv!.map((e) => YIMConversation(OxbmHPoYuPTpcmgT: e)).toList());
});
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
}
});
}
break;
case "broadcast":
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.prxHFQqFXpSrwAGV?.call(YIMBroadcastMessage.fromJson(rFbpbySHruxzmGYR["message"]));
});
break;
case "notification":
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.RgYtQzzzClMOMYUM?.call(YIMNotificationMessage.fromJson(rFbpbySHruxzmGYR["message"]));
});
break;
case "push":
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.ROKWPnmihOLqdWTE?.call(YIMPushMessage.fromJson(rFbpbySHruxzmGYR["message"]));
});
break;
case "revoke":
case "revoke_sync":
for (final oQvsLlYIorhMywOH in (rFbpbySHruxzmGYR["messages"] as List<dynamic>)) {
final NouDniwlzyGmGpUJ = YIMRevokeMessage.fromJson(oQvsLlYIorhMywOH);
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(NouDniwlzyGmGpUJ.conversationType)) {
final MlmyMfixNUavLdAr = await iDxDuKoCRjwSpSnP.qIhdcqGfglUdGNRZ.GxfspYxMccaUGQuE(
NouDniwlzyGmGpUJ.conversationType,
NouDniwlzyGmGpUJ.messageID,
);
if (!MlmyMfixNUavLdAr) return;
final kNWClwNpWkhUiUnu = await iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.VJhqgocOoZnovLIz(
NouDniwlzyGmGpUJ.conversationType,
NouDniwlzyGmGpUJ.conversationID,
// unRead: _YIMEnum_ConversatypeUnRead.Minus,
);
if (!kNWClwNpWkhUiUnu) return;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
Filter? PczaErAOrgmnlYTK;
switch (NouDniwlzyGmGpUJ.conversationType) {
case YIMEnum_ConversationType.P2P:
PczaErAOrgmnlYTK = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.to", NouDniwlzyGmGpUJ.conversationID)]),
Filter.and([Filter.equals("lastMessage.to", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.from", NouDniwlzyGmGpUJ.conversationID)]),
]),
Filter.equals("lastMessage.conversationType", NouDniwlzyGmGpUJ.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
PczaErAOrgmnlYTK = Filter.and([
Filter.equals("lastMessage.to", NouDniwlzyGmGpUJ.conversationID),
Filter.equals("lastMessage.conversationType", NouDniwlzyGmGpUJ.conversationType.rawValue),
]);
break;
}
final RJJZEVUaxDvrzUJv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.wanYqaCFigqxxdwW<_YIMTable_Conversation>(
_YIMTableName.Conversation,
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(filter: PczaErAOrgmnlYTK),
);
if (RJJZEVUaxDvrzUJv == null) {
return;
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(RJJZEVUaxDvrzUJv.map((e) => YIMConversation(OxbmHPoYuPTpcmgT: e)).toList());
});
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.ikSHWWPGWHforjmp?.call(NouDniwlzyGmGpUJ);
});
}
break;
case "receipt_p2p":
List<String> AcyypogxuJkWXSXt = (rFbpbySHruxzmGYR["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final vINCQVmsnelWAFiE in AcyypogxuJkWXSXt) {
final aUBRISOYXTpNWyDL = await iDxDuKoCRjwSpSnP.qIhdcqGfglUdGNRZ.LQqPoiNovYyWzZSq(
YIMEnum_ConversationType.P2P,
vINCQVmsnelWAFiE,
false,
);
if (!aUBRISOYXTpNWyDL) return;
final kNWClwNpWkhUiUnu = await iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.VJhqgocOoZnovLIz(
YIMEnum_ConversationType.P2P,
vINCQVmsnelWAFiE,
);
if (!kNWClwNpWkhUiUnu) return;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
final RJJZEVUaxDvrzUJv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.wanYqaCFigqxxdwW<_YIMTable_Conversation>(
_YIMTableName.Conversation,
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(
filter: Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.to", vINCQVmsnelWAFiE)]),
Filter.and([Filter.equals("lastMessage.to", pUedSqApqySLXfuk.HDRcNNpDAaYaKnho), Filter.equals("lastMessage.from", vINCQVmsnelWAFiE)]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]),
),
);
if (RJJZEVUaxDvrzUJv == null) {
return;
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(RJJZEVUaxDvrzUJv.map((e) => YIMConversation(OxbmHPoYuPTpcmgT: e)).toList());
});
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.zHgleWmPuHcFiIOd?.call(vINCQVmsnelWAFiE);
});
}
break;
case "receipt_team":
List<String> AcyypogxuJkWXSXt = (rFbpbySHruxzmGYR["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final vINCQVmsnelWAFiE in AcyypogxuJkWXSXt) {
final aUBRISOYXTpNWyDL = await iDxDuKoCRjwSpSnP.qIhdcqGfglUdGNRZ.LQqPoiNovYyWzZSq(
YIMEnum_ConversationType.Team,
vINCQVmsnelWAFiE,
false,
);
if (!aUBRISOYXTpNWyDL) return;
final kNWClwNpWkhUiUnu = await iDxDuKoCRjwSpSnP.fzjbYoEllDvCcigm.VJhqgocOoZnovLIz(
YIMEnum_ConversationType.Team,
vINCQVmsnelWAFiE,
);
if (!kNWClwNpWkhUiUnu) return;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.UuYFyMelxcIiuATS?.call();
});
final RJJZEVUaxDvrzUJv = await pUedSqApqySLXfuk.ahWEMLhfSiuhBwFl.wanYqaCFigqxxdwW<_YIMTable_Conversation>(
_YIMTableName.Conversation,
BozapwVfDLDEsXet: (map) => _YIMTable_Conversation.fromJson(map),
bNcvVipPUFFpNiXa: Finder(
filter: Filter.and([
Filter.equals("lastMessage.to", vINCQVmsnelWAFiE),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]),
),
);
if (RJJZEVUaxDvrzUJv == null) {
return;
}
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.WXBRvbiPvYYuBfEB?.call(RJJZEVUaxDvrzUJv.map((e) => YIMConversation(OxbmHPoYuPTpcmgT: e)).toList());
});
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.zHgleWmPuHcFiIOd?.call(vINCQVmsnelWAFiE);
});
}
break;
case "receipt_room":
List<String> AcyypogxuJkWXSXt = (rFbpbySHruxzmGYR["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final vINCQVmsnelWAFiE in AcyypogxuJkWXSXt) {
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.tAlpmicvlJCqimjh.zHgleWmPuHcFiIOd?.call(vINCQVmsnelWAFiE);
});
}
break;
case "event_online":
final BGrmIYkVWtadfTeG = rFbpbySHruxzmGYR["user"] as String;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.GpomDEVvXCcSfmHF.gAFSTHcRNqiYSUPX?.call(BGrmIYkVWtadfTeG, YIMEnum_EventOnline.Online);
});
break;
case "event_offline":
final BGrmIYkVWtadfTeG = rFbpbySHruxzmGYR["user"] as String;
pUedSqApqySLXfuk.UdAwLgllDinVqLkg.JraVUDkLNAsqCzWV(() {
iDxDuKoCRjwSpSnP.GpomDEVvXCcSfmHF.gAFSTHcRNqiYSUPX?.call(BGrmIYkVWtadfTeG, YIMEnum_EventOnline.Offline);
});
break;
case "update_user":
pUedSqApqySLXfuk.LNoEFVterpfBmSay = YIMUser.fromJson(rFbpbySHruxzmGYR["user"]);
}
});
}