Implementation
Future<void> vkekvZmFQWTGOchC(String fFAvVZnQADWGnDMJ, Map<String, dynamic> GlIXyNxjXRjKcoLX) async {
await TXrusaiYkipbgHro.synchronized(() async {
var mAvtdvBgQJZzeYXZ = new Lock();
Future<void> fNwLXAZFaVtnCIks(YIMMessage kmHFaoDMcNOfZpRN, bool IiZiRXUaFVrUwAxi, {void Function(bool HNMwGFsvIPdZudoP)? RpTfEMreuKahSHPQ}) async {
await mAvtdvBgQJZzeYXZ.synchronized(() async {
if (kmHFaoDMcNOfZpRN.id == FNbzMHJNfnmyzCuT) return;
FNbzMHJNfnmyzCuT = kmHFaoDMcNOfZpRN.id;
switch (kmHFaoDMcNOfZpRN.conversationType) {
case YIMEnum_ConversationType.P2P:
final RKnRvqOpisgAtxoQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.RKnRvqOpisgAtxoQ(
_YIMTableName.Message,
filter: Filter.equals("id", kmHFaoDMcNOfZpRN.id),
);
if (RKnRvqOpisgAtxoQ == null) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
if (RKnRvqOpisgAtxoQ > 0) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
final PJnXZLlIjHytYxlY = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.KWTuCQNebcXsffPu(
_YIMTableName.Message,
GlIXyNxjXRjKcoLX: _YIMTable_Message(kmHFaoDMcNOfZpRN: kmHFaoDMcNOfZpRN),
);
if (!PJnXZLlIjHytYxlY) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
final waFAsRUSReeHKfTO = await TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.RNFknVLCuPJTcxUh(
kmHFaoDMcNOfZpRN.conversationType,
kmHFaoDMcNOfZpRN.from == RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM ? kmHFaoDMcNOfZpRN.to : kmHFaoDMcNOfZpRN.from,
BEauSsLtWtcLsOcZ: (kmHFaoDMcNOfZpRN.from != RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM && kmHFaoDMcNOfZpRN.messageState == YIMEnum_MessageState.Success_UnRead) ? gWSJVIFaNLgWZquB.QKURXizoydiDeeuw : gWSJVIFaNLgWZquB.XjEushaimpJPZMpt,
);
if (!waFAsRUSReeHKfTO) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
if (IiZiRXUaFVrUwAxi)
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.VpIccEhkyZrgnnaH?.call([kmHFaoDMcNOfZpRN]);
});
else
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.RtjmInwAvHdQxztc?.call([kmHFaoDMcNOfZpRN]);
});
RpTfEMreuKahSHPQ?.call(true);
break;
case YIMEnum_ConversationType.Team:
final RKnRvqOpisgAtxoQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.RKnRvqOpisgAtxoQ(
_YIMTableName.Message,
filter: Filter.equals("id", kmHFaoDMcNOfZpRN.id),
);
if (RKnRvqOpisgAtxoQ == null) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
if (RKnRvqOpisgAtxoQ > 0) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
final PJnXZLlIjHytYxlY = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.KWTuCQNebcXsffPu(
_YIMTableName.Message,
GlIXyNxjXRjKcoLX: _YIMTable_Message(kmHFaoDMcNOfZpRN: kmHFaoDMcNOfZpRN),
);
if (!PJnXZLlIjHytYxlY) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
final waFAsRUSReeHKfTO = await TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.RNFknVLCuPJTcxUh(
kmHFaoDMcNOfZpRN.conversationType,
kmHFaoDMcNOfZpRN.to,
BEauSsLtWtcLsOcZ: (kmHFaoDMcNOfZpRN.from != RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM) ? gWSJVIFaNLgWZquB.QKURXizoydiDeeuw : gWSJVIFaNLgWZquB.XjEushaimpJPZMpt,
);
if (!waFAsRUSReeHKfTO) {
RpTfEMreuKahSHPQ?.call(false);
return;
}
if (IiZiRXUaFVrUwAxi)
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.VpIccEhkyZrgnnaH?.call([kmHFaoDMcNOfZpRN]);
});
else
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.RtjmInwAvHdQxztc?.call([kmHFaoDMcNOfZpRN]);
});
RpTfEMreuKahSHPQ?.call(true);
break;
case YIMEnum_ConversationType.ChatRoom:
if (IiZiRXUaFVrUwAxi)
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.VpIccEhkyZrgnnaH?.call([kmHFaoDMcNOfZpRN]);
});
else
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.RtjmInwAvHdQxztc?.call([kmHFaoDMcNOfZpRN]);
});
RpTfEMreuKahSHPQ?.call(true);
break;
default:
break;
}
});
}
switch (fFAvVZnQADWGnDMJ) {
case "loginFailed":
qSwjJEynArZqjZZs(GlIXyNxjXRjKcoLX["msg"].toString());
break;
case "loginSuccess":
if (DdcTKakzivDwnnvt) return;
DdcTKakzivDwnnvt = true;
DGXuaEXgQFQzZhtw?.cancel();
DGXuaEXgQFQzZhtw = null;
FjNaqunSNAJclyby?.cancel();
FjNaqunSNAJclyby = null;
DGXuaEXgQFQzZhtw = Timer.periodic(Duration(seconds: 5), (timer) {
if (!TOguPJtIdcSeGZGX.rBuDdhLENqbkPPvE.NeoEyBnRdnWKwFxT(DtZesLJvhQwPofVa: true) || ZYXVgnRTlBLOixFi == null) {
if (!dvJRYYDXaAfZzjAL) {
dvJRYYDXaAfZzjAL = true;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.tNDrOcWSgCuSrPfS?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnecting, msg: "Reconnecting"));
});
jYwQASHEzynvSwiH(true);
Future.delayed(Duration(seconds: 1), () {
RNIzNgyUZFRXkZfn(true);
Future.delayed(Duration(seconds: 5), () {
if (dvJRYYDXaAfZzjAL) {
dvJRYYDXaAfZzjAL = false;
jYwQASHEzynvSwiH(true);
}
});
});
}
} else {
if (dvJRYYDXaAfZzjAL) {
dvJRYYDXaAfZzjAL = false;
MOMTRDSxpNphkRfm();
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.tNDrOcWSgCuSrPfS?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnected, msg: "Reconnected"));
});
}
// RgTTqSEnxRPxFwzl.EuaPwsZVIqeyUiTs.zbgQyaSxTZRIXxzk("refreshOnline");
}
});
RgTTqSEnxRPxFwzl.lyCZGqmwzLKqDevq = YIMUser.fromJson(GlIXyNxjXRjKcoLX["user"]);
RgTTqSEnxRPxFwzl.OCReTgXehKqOCmEk = (GlIXyNxjXRjKcoLX["conversationTops"] as List<dynamic>).map((e) => e.toString()).toList();
RgTTqSEnxRPxFwzl.bXEblboFFkAkeobo = (GlIXyNxjXRjKcoLX["disturbs_p2p"] as List<dynamic>).map((e) => e.toString()).toList();
RgTTqSEnxRPxFwzl.OhYLrUkfbGMMhiMF = (GlIXyNxjXRjKcoLX["disturbs_team"] as List<dynamic>).map((e) => e.toString()).toList();
RgTTqSEnxRPxFwzl.CaEGsqxdNhwofbGA.fpHoGHhyuyMhFUyd(GlIXyNxjXRjKcoLX["oss"]);
RgTTqSEnxRPxFwzl.XGhZbaZiUqYuqmWQ.fpHoGHhyuyMhFUyd(GlIXyNxjXRjKcoLX["push"]);
//同步云端会话
zbgQyaSxTZRIXxzk("queryConversations", rMjlZMNvtlJSxSWt: (HNMwGFsvIPdZudoP, BYjAdmrVoQXFvmBX, cbqBlPPvVikjecgS, YDevfGtnNcdOmnZK) {
if (HNMwGFsvIPdZudoP) {
List<Map<String, dynamic>> muTUzDMTZNCBSjFN = (BYjAdmrVoQXFvmBX?["conversations"] as List<dynamic>).map((m) => m as Map<String, dynamic>).toList();
if (muTUzDMTZNCBSjFN.isEmpty) return;
TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.mfRDqyLVGZXBnAUb(
RpTfEMreuKahSHPQ: (lmLThEnDJPcSwcIu) {
//过滤本地已经存在的云端会话
lmLThEnDJPcSwcIu?.forEach((RbOFBoUMiGshbGjp) {
switch (RbOFBoUMiGshbGjp.lastMessage.conversationType) {
case YIMEnum_ConversationType.P2P:
final fRzBwkFTgPAvTbAa = RbOFBoUMiGshbGjp.lastMessage.from == RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM ? RbOFBoUMiGshbGjp.lastMessage.to : RbOFBoUMiGshbGjp.lastMessage.from;
for (var pdVBjuxHSzIhytrJ = muTUzDMTZNCBSjFN.length - 1; pdVBjuxHSzIhytrJ >= 0; pdVBjuxHSzIhytrJ--) {
if (muTUzDMTZNCBSjFN[pdVBjuxHSzIhytrJ]["conversationID"] == fRzBwkFTgPAvTbAa) muTUzDMTZNCBSjFN.removeAt(pdVBjuxHSzIhytrJ);
}
break;
case YIMEnum_ConversationType.Team:
final fRzBwkFTgPAvTbAa = RbOFBoUMiGshbGjp.lastMessage.to;
for (var pdVBjuxHSzIhytrJ = muTUzDMTZNCBSjFN.length - 1; pdVBjuxHSzIhytrJ >= 0; pdVBjuxHSzIhytrJ--) {
if (muTUzDMTZNCBSjFN[pdVBjuxHSzIhytrJ]["conversationID"] == fRzBwkFTgPAvTbAa) muTUzDMTZNCBSjFN.removeAt(pdVBjuxHSzIhytrJ);
}
break;
default:
break;
}
});
//将本地没有的云端会话,把消息同步下来
for (final RbOFBoUMiGshbGjp in muTUzDMTZNCBSjFN.reversed) {
TOguPJtIdcSeGZGX.vlfiqAfysAISnRJq.ouHXnEiDGrTJlOHj(
BgfAEObZrclDbHGn: YIMEnum_ConversationType.from(RbOFBoUMiGshbGjp["conversationType"].toString()),
fRzBwkFTgPAvTbAa: RbOFBoUMiGshbGjp["conversationID"].toString(),
rWeHdJjAbLtRabTA: RgTTqSEnxRPxFwzl.ihNZZIImCmUlPGzP.RWFiiBlidRGtTpgG,
RpTfEMreuKahSHPQ: (HNMwGFsvIPdZudoP, kVExwhjmVJPOYwEt) async {
if (HNMwGFsvIPdZudoP) {
for (var i = 0; i < kVExwhjmVJPOYwEt!.length; i++) {
await fNwLXAZFaVtnCIks(kVExwhjmVJPOYwEt[i], false, RpTfEMreuKahSHPQ: (HNMwGFsvIPdZudoP) async {
if (!HNMwGFsvIPdZudoP) return;
Filter? QXsGIQPhlpBQAYXd;
switch (YIMEnum_ConversationType.from(RbOFBoUMiGshbGjp["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
QXsGIQPhlpBQAYXd = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.to", RbOFBoUMiGshbGjp["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.from", RbOFBoUMiGshbGjp["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
QXsGIQPhlpBQAYXd = Filter.and([
Filter.equals("lastMessage.to", RbOFBoUMiGshbGjp["conversationID"]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
break;
default:
break;
}
final OsvfXWWAnXEAmcwJ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.MvRDbZWvZkgQtMaI<_YIMTable_Conversation>(
_YIMTableName.Conversation,
(dLVkEuTMmrBJBJeI) => dLVkEuTMmrBJBJeI!..unRead = int.parse(RbOFBoUMiGshbGjp["unReadCount"].toString()),
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(filter: QXsGIQPhlpBQAYXd),
);
if (!OsvfXWWAnXEAmcwJ) return;
if (i >= kVExwhjmVJPOYwEt.length - 1) {
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
Filter? zIeqXzcaEvxPpBIs;
switch (YIMEnum_ConversationType.from(RbOFBoUMiGshbGjp["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.to", RbOFBoUMiGshbGjp["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.from", RbOFBoUMiGshbGjp["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", RbOFBoUMiGshbGjp["conversationType"]),
]);
break;
case YIMEnum_ConversationType.Team:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.equals("lastMessage.to", RbOFBoUMiGshbGjp["conversationID"]),
Filter.equals("lastMessage.conversationType", RbOFBoUMiGshbGjp["conversationType"]),
]);
break;
}
final BvJTVmnFgEFpwQtQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.mIfLIZlbruepMfyA<_YIMTable_Conversation>(
_YIMTableName.Conversation,
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(filter: zIeqXzcaEvxPpBIs),
);
if (BvJTVmnFgEFpwQtQ == null) {
return;
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.OWWGiDgcnjSHuYOM?.call(BvJTVmnFgEFpwQtQ.map((e) => YIMConversation(RbOFBoUMiGshbGjp: e)).toList());
});
}
});
}
}
},
);
}
},
);
}
});
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
ISQryhAENMpYxKJy?.call(YIMResult<YIMEnum_LoginResult>(code: YIMEnum_LoginResult.Success, msg: "success"));
});
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
ISQryhAENMpYxKJy = null;
});
//将历史的发送中消息,置为失败状态
await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.wlEqwXkgMLSssAPA(
_YIMTableName.Message,
() {
return {"messageState": YIMEnum_MessageState.Fail.rawValue};
},
IaZSeQoXPmnqurCt: Finder(filter: Filter.equals("messageState", YIMEnum_MessageState.Sending.rawValue)),
);
TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.mfRDqyLVGZXBnAUb(RpTfEMreuKahSHPQ: (lmLThEnDJPcSwcIu) async {
if (lmLThEnDJPcSwcIu == null) return;
for (var RbOFBoUMiGshbGjp in lmLThEnDJPcSwcIu) {
await TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.RNFknVLCuPJTcxUh(RbOFBoUMiGshbGjp.lastMessage.conversationType, RbOFBoUMiGshbGjp.lastMessage.getConversatinoID());
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(lmLThEnDJPcSwcIu);
});
});
break;
case "conversation_top_update":
List<String> OCReTgXehKqOCmEk = (GlIXyNxjXRjKcoLX["conversationTops"] as List).map((element) => element.toString()).toList();
RgTTqSEnxRPxFwzl.OCReTgXehKqOCmEk = OCReTgXehKqOCmEk;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
if (TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ != null) {
TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.mfRDqyLVGZXBnAUb(RpTfEMreuKahSHPQ: (lmLThEnDJPcSwcIu) {
if (lmLThEnDJPcSwcIu == null) return;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(lmLThEnDJPcSwcIu);
});
});
}
break;
case "disturbs_p2p_update":
List<String> bXEblboFFkAkeobo = (GlIXyNxjXRjKcoLX["disturbs_p2p"] as List).map((element) => element.toString()).toList();
RgTTqSEnxRPxFwzl.bXEblboFFkAkeobo = bXEblboFFkAkeobo;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
if (TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ != null) {
TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.mfRDqyLVGZXBnAUb(RpTfEMreuKahSHPQ: (lmLThEnDJPcSwcIu) {
if (lmLThEnDJPcSwcIu == null) return;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(lmLThEnDJPcSwcIu);
});
});
}
break;
case "disturbs_team_update":
List<String> OhYLrUkfbGMMhiMF = (GlIXyNxjXRjKcoLX["disturbs_team"] as List).map((element) => element.toString()).toList();
RgTTqSEnxRPxFwzl.OhYLrUkfbGMMhiMF = OhYLrUkfbGMMhiMF;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
if (TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ != null) {
TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.mfRDqyLVGZXBnAUb(RpTfEMreuKahSHPQ: (lmLThEnDJPcSwcIu) {
if (lmLThEnDJPcSwcIu == null) return;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(lmLThEnDJPcSwcIu);
});
});
}
break;
case "kick":
TOguPJtIdcSeGZGX.rBuDdhLENqbkPPvE.qDxtWkjjtTlxolXd();
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.tNDrOcWSgCuSrPfS?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Kick, msg: "Kicked by ${GlIXyNxjXRjKcoLX["device"]} device"));
});
break;
case "kick_room":
final RQwASHErKoEIPhJj = GlIXyNxjXRjKcoLX["roomID"] as String;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.WCBoUsOOywGRNMiw?.call(RQwASHErKoEIPhJj);
});
break;
case "close_room":
final RQwASHErKoEIPhJj = GlIXyNxjXRjKcoLX["roomID"] as String;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.vyIXosozvQqttwOK?.call(RQwASHErKoEIPhJj);
});
break;
case "message":
case "message_sync":
final kVExwhjmVJPOYwEt = (GlIXyNxjXRjKcoLX["messages"] as List<dynamic>).map((element) => YIMMessage(kmHFaoDMcNOfZpRN: _YIMTable_Message.fromJson(element))).toList();
for (var kmHFaoDMcNOfZpRN in kVExwhjmVJPOYwEt) {
Filter? zIeqXzcaEvxPpBIs;
switch (kmHFaoDMcNOfZpRN.conversationType) {
case YIMEnum_ConversationType.P2P:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.to", kmHFaoDMcNOfZpRN.getConversatinoID())]),
Filter.and([Filter.equals("lastMessage.to", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.from", kmHFaoDMcNOfZpRN.getConversatinoID())]),
]),
Filter.equals("lastMessage.conversationType", kmHFaoDMcNOfZpRN.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.equals("lastMessage.to", kmHFaoDMcNOfZpRN.getConversatinoID()),
Filter.equals("lastMessage.conversationType", kmHFaoDMcNOfZpRN.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.equals("lastMessage.conversationType", kmHFaoDMcNOfZpRN.conversationType.rawValue),
]);
break;
}
var BvJTVmnFgEFpwQtQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.mIfLIZlbruepMfyA<_YIMTable_Conversation>(
_YIMTableName.Conversation,
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(filter: zIeqXzcaEvxPpBIs),
);
if (BvJTVmnFgEFpwQtQ == null) {
return;
}
await fNwLXAZFaVtnCIks(kmHFaoDMcNOfZpRN, fFAvVZnQADWGnDMJ == "message", RpTfEMreuKahSHPQ: (HNMwGFsvIPdZudoP) async {
if (!HNMwGFsvIPdZudoP) return;
final GxjJVVZTfAAFSOOe = BvJTVmnFgEFpwQtQ!.isEmpty;
BvJTVmnFgEFpwQtQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.mIfLIZlbruepMfyA<_YIMTable_Conversation>(
_YIMTableName.Conversation,
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(filter: zIeqXzcaEvxPpBIs),
);
if (BvJTVmnFgEFpwQtQ == null) {
return;
}
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(kmHFaoDMcNOfZpRN.conversationType)) {
if (GxjJVVZTfAAFSOOe) {
//新增的会话
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.OWWGiDgcnjSHuYOM?.call(BvJTVmnFgEFpwQtQ!.map((e) => YIMConversation(RbOFBoUMiGshbGjp: e)).toList());
});
} else {
//原有的会话
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(BvJTVmnFgEFpwQtQ!.map((e) => YIMConversation(RbOFBoUMiGshbGjp: e)).toList());
});
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
}
});
}
break;
case "broadcast":
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.MPfiOHqskDIHbaeC?.call(YIMBroadcastMessage.fromJson(GlIXyNxjXRjKcoLX["message"]));
});
break;
case "notification":
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.ZzMNrDrDSTxwMxQZ?.call(YIMNotificationMessage.fromJson(GlIXyNxjXRjKcoLX["message"]));
});
break;
case "revoke":
case "revoke_sync":
for (final jJtPQPGAcqPcBkhS in (GlIXyNxjXRjKcoLX["messages"] as List<dynamic>)) {
final kmHFaoDMcNOfZpRN = YIMRevokeMessage.fromJson(jJtPQPGAcqPcBkhS);
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(kmHFaoDMcNOfZpRN.conversationType)) {
final vSXbWzDRaLqgPsWU = await TOguPJtIdcSeGZGX.vlfiqAfysAISnRJq.xUtxjdNKjAhbzQLC(
kmHFaoDMcNOfZpRN.conversationType,
kmHFaoDMcNOfZpRN.messageID,
);
if (!vSXbWzDRaLqgPsWU) return;
final waFAsRUSReeHKfTO = await TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.RNFknVLCuPJTcxUh(
kmHFaoDMcNOfZpRN.conversationType,
kmHFaoDMcNOfZpRN.conversationID,
// unRead: _YIMEnum_ConversatypeUnRead.Minus,
);
if (!waFAsRUSReeHKfTO) return;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
Filter? zIeqXzcaEvxPpBIs;
switch (kmHFaoDMcNOfZpRN.conversationType) {
case YIMEnum_ConversationType.P2P:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.to", kmHFaoDMcNOfZpRN.conversationID)]),
Filter.and([Filter.equals("lastMessage.to", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.from", kmHFaoDMcNOfZpRN.conversationID)]),
]),
Filter.equals("lastMessage.conversationType", kmHFaoDMcNOfZpRN.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
zIeqXzcaEvxPpBIs = Filter.and([
Filter.equals("lastMessage.to", kmHFaoDMcNOfZpRN.conversationID),
Filter.equals("lastMessage.conversationType", kmHFaoDMcNOfZpRN.conversationType.rawValue),
]);
break;
}
final BvJTVmnFgEFpwQtQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.mIfLIZlbruepMfyA<_YIMTable_Conversation>(
_YIMTableName.Conversation,
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(filter: zIeqXzcaEvxPpBIs),
);
if (BvJTVmnFgEFpwQtQ == null) {
return;
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(BvJTVmnFgEFpwQtQ.map((e) => YIMConversation(RbOFBoUMiGshbGjp: e)).toList());
});
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.malksQFeIhtGHurt?.call(kmHFaoDMcNOfZpRN);
});
}
break;
case "receipt_p2p":
List<String> UeMmyGDuVsWfKmxZ = (GlIXyNxjXRjKcoLX["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final fRzBwkFTgPAvTbAa in UeMmyGDuVsWfKmxZ) {
final eefnNiLIEupRyXVP = await TOguPJtIdcSeGZGX.vlfiqAfysAISnRJq.rpcGzxzmwAGAbiws(
YIMEnum_ConversationType.P2P,
fRzBwkFTgPAvTbAa,
false,
);
if (!eefnNiLIEupRyXVP) return;
final waFAsRUSReeHKfTO = await TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.RNFknVLCuPJTcxUh(
YIMEnum_ConversationType.P2P,
fRzBwkFTgPAvTbAa,
);
if (!waFAsRUSReeHKfTO) return;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
final BvJTVmnFgEFpwQtQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.mIfLIZlbruepMfyA<_YIMTable_Conversation>(
_YIMTableName.Conversation,
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(
filter: Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.to", fRzBwkFTgPAvTbAa)]),
Filter.and([Filter.equals("lastMessage.to", RgTTqSEnxRPxFwzl.KXZihjAgwIbphLgM), Filter.equals("lastMessage.from", fRzBwkFTgPAvTbAa)]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]),
),
);
if (BvJTVmnFgEFpwQtQ == null) {
return;
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(BvJTVmnFgEFpwQtQ.map((e) => YIMConversation(RbOFBoUMiGshbGjp: e)).toList());
});
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.NWKVmrPNtrAWxtHh?.call(fRzBwkFTgPAvTbAa);
});
}
break;
case "receipt_team":
List<String> UeMmyGDuVsWfKmxZ = (GlIXyNxjXRjKcoLX["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final fRzBwkFTgPAvTbAa in UeMmyGDuVsWfKmxZ) {
final eefnNiLIEupRyXVP = await TOguPJtIdcSeGZGX.vlfiqAfysAISnRJq.rpcGzxzmwAGAbiws(
YIMEnum_ConversationType.Team,
fRzBwkFTgPAvTbAa,
false,
);
if (!eefnNiLIEupRyXVP) return;
final waFAsRUSReeHKfTO = await TOguPJtIdcSeGZGX.qcEqJQAppCXqglUJ.RNFknVLCuPJTcxUh(
YIMEnum_ConversationType.Team,
fRzBwkFTgPAvTbAa,
);
if (!waFAsRUSReeHKfTO) return;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.lEMTnluMYwHrTztH?.call();
});
final BvJTVmnFgEFpwQtQ = await RgTTqSEnxRPxFwzl.XYSDgLkjooSuxQxj.mIfLIZlbruepMfyA<_YIMTable_Conversation>(
_YIMTableName.Conversation,
AssMtxrsCpVcieAX: (map) => _YIMTable_Conversation.fromJson(map),
IaZSeQoXPmnqurCt: Finder(
filter: Filter.and([
Filter.equals("lastMessage.to", fRzBwkFTgPAvTbAa),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]),
),
);
if (BvJTVmnFgEFpwQtQ == null) {
return;
}
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.PWZOJJpoenSGGruJ?.call(BvJTVmnFgEFpwQtQ.map((e) => YIMConversation(RbOFBoUMiGshbGjp: e)).toList());
});
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.NWKVmrPNtrAWxtHh?.call(fRzBwkFTgPAvTbAa);
});
}
break;
case "receipt_room":
List<String> UeMmyGDuVsWfKmxZ = (GlIXyNxjXRjKcoLX["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final fRzBwkFTgPAvTbAa in UeMmyGDuVsWfKmxZ) {
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.TfAfmudNuGQoHhbb.NWKVmrPNtrAWxtHh?.call(fRzBwkFTgPAvTbAa);
});
}
break;
case "event_online":
final nOAlHNjXrpdBABGF = GlIXyNxjXRjKcoLX["user"] as String;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.UalvtaoefjqRhCXH.CZrZcadnYZEOKPIO?.call(nOAlHNjXrpdBABGF, YIMEnum_EventOnline.Online);
});
break;
case "event_offline":
final nOAlHNjXrpdBABGF = GlIXyNxjXRjKcoLX["user"] as String;
RgTTqSEnxRPxFwzl.CfKfGgNeZazCORbX.LrMzRSTzQmONyVIm(() {
TOguPJtIdcSeGZGX.UalvtaoefjqRhCXH.CZrZcadnYZEOKPIO?.call(nOAlHNjXrpdBABGF, YIMEnum_EventOnline.Offline);
});
break;
case "update_user":
RgTTqSEnxRPxFwzl.lyCZGqmwzLKqDevq = YIMUser.fromJson(GlIXyNxjXRjKcoLX["user"]);
}
});
}