Implementation
Future<void> fshzduTPWkITuRzq(String IDknCLPaIpCyGkFM, Map<String, dynamic> JUQwIovWWbGEtXed) async {
await bCMMYpSojRClXHfi.synchronized(() async {
var wBrGemezRfGxZxfK = new Lock();
Future<void> RhCdtGDewoNAvfcN(YIMMessage kCwocHxVzlSDCcUI, bool SdVzSqIZujZAlBBS, {void Function(bool IWxelvVBXdhLiYGw)? dFOzKXrUQFAiVUMV}) async {
await wBrGemezRfGxZxfK.synchronized(() async {
if (kCwocHxVzlSDCcUI.id == eKIBpNethBUwYhJi) return;
eKIBpNethBUwYhJi = kCwocHxVzlSDCcUI.id;
switch (kCwocHxVzlSDCcUI.conversationType) {
case YIMEnum_ConversationType.P2P:
final fSZjgxfqRzThwulA = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.fSZjgxfqRzThwulA(
_YIMTableName.Message,
filter: Filter.equals("id", kCwocHxVzlSDCcUI.id),
);
if (fSZjgxfqRzThwulA == null) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
if (fSZjgxfqRzThwulA > 0) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
final tIjusDOaytMfyUYh = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.jtsnVpZoATWiaSlU(
_YIMTableName.Message,
JUQwIovWWbGEtXed: _YIMTable_Message(kCwocHxVzlSDCcUI: kCwocHxVzlSDCcUI),
);
if (!tIjusDOaytMfyUYh) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
final mcEPlVXzTebdsxXZ = await UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.PZljnyQTHQWpRuih(
kCwocHxVzlSDCcUI.conversationType,
kCwocHxVzlSDCcUI.from == lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM ? kCwocHxVzlSDCcUI.to : kCwocHxVzlSDCcUI.from,
IpnvQLcAhgIkPBhZ: (kCwocHxVzlSDCcUI.from != lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM && kCwocHxVzlSDCcUI.messageState == YIMEnum_MessageState.Success_UnRead) ? ghgUnqfoANgJzhoD.RhNWXyqLXbXhjbqi : ghgUnqfoANgJzhoD.rDuHPDFhXIKMBAtv,
);
if (!mcEPlVXzTebdsxXZ) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
if (SdVzSqIZujZAlBBS)
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.PFaWuRZNJFoTSnNL?.call([kCwocHxVzlSDCcUI]);
});
else
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.EfwXpUrWTsCbcDgs?.call([kCwocHxVzlSDCcUI]);
});
dFOzKXrUQFAiVUMV?.call(true);
break;
case YIMEnum_ConversationType.Team:
final fSZjgxfqRzThwulA = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.fSZjgxfqRzThwulA(
_YIMTableName.Message,
filter: Filter.equals("id", kCwocHxVzlSDCcUI.id),
);
if (fSZjgxfqRzThwulA == null) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
if (fSZjgxfqRzThwulA > 0) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
final tIjusDOaytMfyUYh = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.jtsnVpZoATWiaSlU(
_YIMTableName.Message,
JUQwIovWWbGEtXed: _YIMTable_Message(kCwocHxVzlSDCcUI: kCwocHxVzlSDCcUI),
);
if (!tIjusDOaytMfyUYh) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
final mcEPlVXzTebdsxXZ = await UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.PZljnyQTHQWpRuih(
kCwocHxVzlSDCcUI.conversationType,
kCwocHxVzlSDCcUI.to,
IpnvQLcAhgIkPBhZ: (kCwocHxVzlSDCcUI.from != lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM) ? ghgUnqfoANgJzhoD.RhNWXyqLXbXhjbqi : ghgUnqfoANgJzhoD.rDuHPDFhXIKMBAtv,
);
if (!mcEPlVXzTebdsxXZ) {
dFOzKXrUQFAiVUMV?.call(false);
return;
}
if (SdVzSqIZujZAlBBS)
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.PFaWuRZNJFoTSnNL?.call([kCwocHxVzlSDCcUI]);
});
else
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.EfwXpUrWTsCbcDgs?.call([kCwocHxVzlSDCcUI]);
});
dFOzKXrUQFAiVUMV?.call(true);
break;
case YIMEnum_ConversationType.ChatRoom:
if (SdVzSqIZujZAlBBS)
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.PFaWuRZNJFoTSnNL?.call([kCwocHxVzlSDCcUI]);
});
else
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.EfwXpUrWTsCbcDgs?.call([kCwocHxVzlSDCcUI]);
});
dFOzKXrUQFAiVUMV?.call(true);
break;
default:
break;
}
});
}
switch (IDknCLPaIpCyGkFM) {
case "loginFailed":
rfNUjJngNdkmjAxe(JUQwIovWWbGEtXed["msg"].toString());
break;
case "loginSuccess":
if (ZjXuxoDelatipWzo) return;
ZjXuxoDelatipWzo = true;
OyEzWRNaYPqNtufz?.cancel();
OyEzWRNaYPqNtufz = null;
TkisuliLuqPUEVWM?.cancel();
TkisuliLuqPUEVWM = null;
OyEzWRNaYPqNtufz = Timer.periodic(Duration(seconds: 5), (timer) {
if (!UChfQaxIZXBHpDHw.njDzuTHDjwOofRwd.anPqdZrnWKekLPyp(XnbKaMhmJjWKgrAm: true) || AXEDuxiWAkDMTKGB == null) {
if (!qILLQlEXlRWYMmye) {
qILLQlEXlRWYMmye = true;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.QgGWNsWrOkOrYyPu?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnecting, msg: "Reconnecting"));
});
KepcwyLeqXAhtQeG(true);
Future.delayed(Duration(seconds: 1), () {
OMDQMMrMTEoZfbGa(true);
Future.delayed(Duration(seconds: 5), () {
if (qILLQlEXlRWYMmye) {
qILLQlEXlRWYMmye = false;
KepcwyLeqXAhtQeG(true);
}
});
});
}
} else {
if (qILLQlEXlRWYMmye) {
qILLQlEXlRWYMmye = false;
ktBFqviohlMHUDmw();
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.QgGWNsWrOkOrYyPu?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Reconnected, msg: "Reconnected"));
});
}
// lnHdKoLeAXayLaTQ.IDteDTVOmCXMeoaZ.xAbmkiHIVdSWVdsf("refreshOnline");
}
});
lnHdKoLeAXayLaTQ.ikCtvzoxOumWKvvj = YIMUser.fromJson(JUQwIovWWbGEtXed["user"]);
lnHdKoLeAXayLaTQ.cTPjiAqeCjOrRkZR = (JUQwIovWWbGEtXed["conversationTops"] as List<dynamic>).map((e) => e.toString()).toList();
lnHdKoLeAXayLaTQ.CgBjJxDnQVBRFFnX = (JUQwIovWWbGEtXed["disturbs_p2p"] as List<dynamic>).map((e) => e.toString()).toList();
lnHdKoLeAXayLaTQ.qScefxlPSQTbPUjX = (JUQwIovWWbGEtXed["disturbs_team"] as List<dynamic>).map((e) => e.toString()).toList();
lnHdKoLeAXayLaTQ.daTsWHmsUCmfYRlx.pYozWCnHZaaGRjEx(JUQwIovWWbGEtXed["oss"]);
lnHdKoLeAXayLaTQ.uHrDKqGhYwFfFjzt.pYozWCnHZaaGRjEx(lnHdKoLeAXayLaTQ.faQkRmckBLGLNpdu?.push ?? JUQwIovWWbGEtXed["push"]);
//同步云端会话
xAbmkiHIVdSWVdsf("queryConversations", jCuQmdbQKfCyjgLe: (IWxelvVBXdhLiYGw, iRnmzMAYPMjltgiU, RIJJEwowWZYrUgoB, ojKzdeKHBwmcEOBz) {
if (IWxelvVBXdhLiYGw) {
List<Map<String, dynamic>> HFftvJKILIsuhlJr = (iRnmzMAYPMjltgiU?["conversations"] as List<dynamic>).map((m) => m as Map<String, dynamic>).toList();
if (HFftvJKILIsuhlJr.isEmpty) return;
UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.TjMCUKWVAiKboQQH(
dFOzKXrUQFAiVUMV: (mvNVnlaAbMjTUWGG) {
//过滤本地已经存在的云端会话
mvNVnlaAbMjTUWGG?.forEach((BXiYJGYbkPLwuERt) {
switch (BXiYJGYbkPLwuERt.lastMessage.conversationType) {
case YIMEnum_ConversationType.P2P:
final DdEJLInBukyevMKs = BXiYJGYbkPLwuERt.lastMessage.from == lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM ? BXiYJGYbkPLwuERt.lastMessage.to : BXiYJGYbkPLwuERt.lastMessage.from;
for (var bpqlEkewYJcrfGpI = HFftvJKILIsuhlJr.length - 1; bpqlEkewYJcrfGpI >= 0; bpqlEkewYJcrfGpI--) {
if (HFftvJKILIsuhlJr[bpqlEkewYJcrfGpI]["conversationID"] == DdEJLInBukyevMKs) HFftvJKILIsuhlJr.removeAt(bpqlEkewYJcrfGpI);
}
break;
case YIMEnum_ConversationType.Team:
final DdEJLInBukyevMKs = BXiYJGYbkPLwuERt.lastMessage.to;
for (var bpqlEkewYJcrfGpI = HFftvJKILIsuhlJr.length - 1; bpqlEkewYJcrfGpI >= 0; bpqlEkewYJcrfGpI--) {
if (HFftvJKILIsuhlJr[bpqlEkewYJcrfGpI]["conversationID"] == DdEJLInBukyevMKs) HFftvJKILIsuhlJr.removeAt(bpqlEkewYJcrfGpI);
}
break;
default:
break;
}
});
//将本地没有的云端会话,把消息同步下来
for (final BXiYJGYbkPLwuERt in HFftvJKILIsuhlJr.reversed) {
UChfQaxIZXBHpDHw.TVtBMJBxUhVUNvEa.CBjapngMjhQiNExq(
TIVvnmucZCCCoXWZ: YIMEnum_ConversationType.from(BXiYJGYbkPLwuERt["conversationType"].toString()),
DdEJLInBukyevMKs: BXiYJGYbkPLwuERt["conversationID"].toString(),
nHycbSwpLhrSWLwd: lnHdKoLeAXayLaTQ.HprQvLGSNsDrbxsL.prCTaddMcVstuzqb,
dFOzKXrUQFAiVUMV: (IWxelvVBXdhLiYGw, ngxdEdyjvmzNkZGI) async {
if (IWxelvVBXdhLiYGw) {
for (var i = 0; i < ngxdEdyjvmzNkZGI!.length; i++) {
await RhCdtGDewoNAvfcN(ngxdEdyjvmzNkZGI[i], false, dFOzKXrUQFAiVUMV: (IWxelvVBXdhLiYGw) async {
if (!IWxelvVBXdhLiYGw) return;
Filter? CtfXnnlMSVlkkRNg;
switch (YIMEnum_ConversationType.from(BXiYJGYbkPLwuERt["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
CtfXnnlMSVlkkRNg = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.to", BXiYJGYbkPLwuERt["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.from", BXiYJGYbkPLwuERt["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
CtfXnnlMSVlkkRNg = Filter.and([
Filter.equals("lastMessage.to", BXiYJGYbkPLwuERt["conversationID"]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
break;
default:
break;
}
final eCwqNHFuvuJLmpqA = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.wWZGwmhKzGRaHief<_YIMTable_Conversation>(
_YIMTableName.Conversation,
(ERkcyObSnpiYvUcn) => ERkcyObSnpiYvUcn!..unRead = int.parse(BXiYJGYbkPLwuERt["unReadCount"].toString()),
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(filter: CtfXnnlMSVlkkRNg),
);
if (!eCwqNHFuvuJLmpqA) return;
if (i >= ngxdEdyjvmzNkZGI.length - 1) {
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
Filter? PViwEfkxnHthuFaW;
switch (YIMEnum_ConversationType.from(BXiYJGYbkPLwuERt["conversationType"].toString())) {
case YIMEnum_ConversationType.P2P:
PViwEfkxnHthuFaW = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.to", BXiYJGYbkPLwuERt["conversationID"])]),
Filter.and([Filter.equals("lastMessage.to", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.from", BXiYJGYbkPLwuERt["conversationID"])]),
]),
Filter.equals("lastMessage.conversationType", BXiYJGYbkPLwuERt["conversationType"]),
]);
break;
case YIMEnum_ConversationType.Team:
PViwEfkxnHthuFaW = Filter.and([
Filter.equals("lastMessage.to", BXiYJGYbkPLwuERt["conversationID"]),
Filter.equals("lastMessage.conversationType", BXiYJGYbkPLwuERt["conversationType"]),
]);
break;
}
final dtmfXZcFGyRKHKIm = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.uKKZjqnYwajOojnf<_YIMTable_Conversation>(
_YIMTableName.Conversation,
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(filter: PViwEfkxnHthuFaW),
);
if (dtmfXZcFGyRKHKIm == null) {
return;
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.tvXnKsJjYewLWIsE?.call(dtmfXZcFGyRKHKIm.map((e) => YIMConversation(BXiYJGYbkPLwuERt: e)).toList());
});
}
});
}
}
},
);
}
},
);
}
});
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
JFJJGDpdTnIRggpg?.call(YIMResult<YIMEnum_LoginResult>(code: YIMEnum_LoginResult.Success, msg: "success"));
});
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
JFJJGDpdTnIRggpg = null;
});
//将历史的发送中消息,置为失败状态
await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.HtZiTsNfAGUmLizq(
_YIMTableName.Message,
() {
return {"messageState": YIMEnum_MessageState.Fail.rawValue};
},
fnfSorwGDrYrXXrJ: Finder(filter: Filter.equals("messageState", YIMEnum_MessageState.Sending.rawValue)),
);
UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.TjMCUKWVAiKboQQH(dFOzKXrUQFAiVUMV: (mvNVnlaAbMjTUWGG) async {
if (mvNVnlaAbMjTUWGG == null) return;
for (var BXiYJGYbkPLwuERt in mvNVnlaAbMjTUWGG) {
await UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.PZljnyQTHQWpRuih(BXiYJGYbkPLwuERt.lastMessage.conversationType, BXiYJGYbkPLwuERt.lastMessage.getConversatinoID());
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(mvNVnlaAbMjTUWGG);
});
});
break;
case "conversation_top_update":
List<String> cTPjiAqeCjOrRkZR = (JUQwIovWWbGEtXed["conversationTops"] as List).map((element) => element.toString()).toList();
lnHdKoLeAXayLaTQ.cTPjiAqeCjOrRkZR = cTPjiAqeCjOrRkZR;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
if (UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu != null) {
UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.TjMCUKWVAiKboQQH(dFOzKXrUQFAiVUMV: (mvNVnlaAbMjTUWGG) {
if (mvNVnlaAbMjTUWGG == null) return;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(mvNVnlaAbMjTUWGG);
});
});
}
break;
case "disturbs_p2p_update":
List<String> CgBjJxDnQVBRFFnX = (JUQwIovWWbGEtXed["disturbs_p2p"] as List).map((element) => element.toString()).toList();
lnHdKoLeAXayLaTQ.CgBjJxDnQVBRFFnX = CgBjJxDnQVBRFFnX;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
if (UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu != null) {
UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.TjMCUKWVAiKboQQH(dFOzKXrUQFAiVUMV: (mvNVnlaAbMjTUWGG) {
if (mvNVnlaAbMjTUWGG == null) return;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(mvNVnlaAbMjTUWGG);
});
});
}
break;
case "disturbs_team_update":
List<String> qScefxlPSQTbPUjX = (JUQwIovWWbGEtXed["disturbs_team"] as List).map((element) => element.toString()).toList();
lnHdKoLeAXayLaTQ.qScefxlPSQTbPUjX = qScefxlPSQTbPUjX;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
if (UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu != null) {
UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.TjMCUKWVAiKboQQH(dFOzKXrUQFAiVUMV: (mvNVnlaAbMjTUWGG) {
if (mvNVnlaAbMjTUWGG == null) return;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(mvNVnlaAbMjTUWGG);
});
});
}
break;
case "kick":
UChfQaxIZXBHpDHw.njDzuTHDjwOofRwd.YqhLoIVTiPFNjYVF();
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.QgGWNsWrOkOrYyPu?.call(YIMResult<YIMEnum_OnlineState>(code: YIMEnum_OnlineState.Kick, msg: "Kicked by ${JUQwIovWWbGEtXed["device"]} device"));
});
break;
case "kick_room":
final cjjasEdBSfpWPBCi = JUQwIovWWbGEtXed["roomID"] as String;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.hLxdVDZKArSVcSuz?.call(cjjasEdBSfpWPBCi);
});
break;
case "close_room":
final cjjasEdBSfpWPBCi = JUQwIovWWbGEtXed["roomID"] as String;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.CIKLvMnTYHtovpQM?.call(cjjasEdBSfpWPBCi);
});
break;
case "message":
case "message_sync":
final ngxdEdyjvmzNkZGI = (JUQwIovWWbGEtXed["messages"] as List<dynamic>).map((element) => YIMMessage(kCwocHxVzlSDCcUI: _YIMTable_Message.fromJson(element))).toList();
for (var kCwocHxVzlSDCcUI in ngxdEdyjvmzNkZGI) {
Filter? PViwEfkxnHthuFaW;
switch (kCwocHxVzlSDCcUI.conversationType) {
case YIMEnum_ConversationType.P2P:
PViwEfkxnHthuFaW = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.to", kCwocHxVzlSDCcUI.getConversatinoID())]),
Filter.and([Filter.equals("lastMessage.to", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.from", kCwocHxVzlSDCcUI.getConversatinoID())]),
]),
Filter.equals("lastMessage.conversationType", kCwocHxVzlSDCcUI.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
PViwEfkxnHthuFaW = Filter.and([
Filter.equals("lastMessage.to", kCwocHxVzlSDCcUI.getConversatinoID()),
Filter.equals("lastMessage.conversationType", kCwocHxVzlSDCcUI.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.ChatRoom:
PViwEfkxnHthuFaW = Filter.and([
Filter.equals("lastMessage.conversationType", kCwocHxVzlSDCcUI.conversationType.rawValue),
]);
break;
}
var dtmfXZcFGyRKHKIm = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.uKKZjqnYwajOojnf<_YIMTable_Conversation>(
_YIMTableName.Conversation,
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(filter: PViwEfkxnHthuFaW),
);
if (dtmfXZcFGyRKHKIm == null) {
return;
}
await RhCdtGDewoNAvfcN(kCwocHxVzlSDCcUI, IDknCLPaIpCyGkFM == "message", dFOzKXrUQFAiVUMV: (IWxelvVBXdhLiYGw) async {
if (!IWxelvVBXdhLiYGw) return;
final RgiipeBdQbKTfboo = dtmfXZcFGyRKHKIm!.isEmpty;
dtmfXZcFGyRKHKIm = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.uKKZjqnYwajOojnf<_YIMTable_Conversation>(
_YIMTableName.Conversation,
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(filter: PViwEfkxnHthuFaW),
);
if (dtmfXZcFGyRKHKIm == null) {
return;
}
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(kCwocHxVzlSDCcUI.conversationType)) {
if (RgiipeBdQbKTfboo) {
//新增的会话
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.tvXnKsJjYewLWIsE?.call(dtmfXZcFGyRKHKIm!.map((e) => YIMConversation(BXiYJGYbkPLwuERt: e)).toList());
});
} else {
//原有的会话
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(dtmfXZcFGyRKHKIm!.map((e) => YIMConversation(BXiYJGYbkPLwuERt: e)).toList());
});
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
}
});
}
break;
case "broadcast":
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.ltyamhUbEqXlorSB?.call(YIMBroadcastMessage.fromJson(JUQwIovWWbGEtXed["message"]));
});
break;
case "notification":
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.hUeQfhsQXaKoSxRa?.call(YIMNotificationMessage.fromJson(JUQwIovWWbGEtXed["message"]));
});
break;
case "push":
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.DSQlqzXbtpyYWgbH?.call(YIMPushMessage.fromJson(JUQwIovWWbGEtXed["message"]));
});
break;
case "revoke":
case "revoke_sync":
for (final FQhJkpttqzsvMrwj in (JUQwIovWWbGEtXed["messages"] as List<dynamic>)) {
final kCwocHxVzlSDCcUI = YIMRevokeMessage.fromJson(FQhJkpttqzsvMrwj);
if ([YIMEnum_ConversationType.P2P, YIMEnum_ConversationType.Team].contains(kCwocHxVzlSDCcUI.conversationType)) {
final ZSerFQVSEagBQhqF = await UChfQaxIZXBHpDHw.TVtBMJBxUhVUNvEa.VRCPzHDUoPYMLBOp(
kCwocHxVzlSDCcUI.conversationType,
kCwocHxVzlSDCcUI.messageID,
);
if (!ZSerFQVSEagBQhqF) return;
final mcEPlVXzTebdsxXZ = await UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.PZljnyQTHQWpRuih(
kCwocHxVzlSDCcUI.conversationType,
kCwocHxVzlSDCcUI.conversationID,
// unRead: _YIMEnum_ConversatypeUnRead.Minus,
);
if (!mcEPlVXzTebdsxXZ) return;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
Filter? PViwEfkxnHthuFaW;
switch (kCwocHxVzlSDCcUI.conversationType) {
case YIMEnum_ConversationType.P2P:
PViwEfkxnHthuFaW = Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.to", kCwocHxVzlSDCcUI.conversationID)]),
Filter.and([Filter.equals("lastMessage.to", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.from", kCwocHxVzlSDCcUI.conversationID)]),
]),
Filter.equals("lastMessage.conversationType", kCwocHxVzlSDCcUI.conversationType.rawValue),
]);
break;
case YIMEnum_ConversationType.Team:
PViwEfkxnHthuFaW = Filter.and([
Filter.equals("lastMessage.to", kCwocHxVzlSDCcUI.conversationID),
Filter.equals("lastMessage.conversationType", kCwocHxVzlSDCcUI.conversationType.rawValue),
]);
break;
}
final dtmfXZcFGyRKHKIm = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.uKKZjqnYwajOojnf<_YIMTable_Conversation>(
_YIMTableName.Conversation,
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(filter: PViwEfkxnHthuFaW),
);
if (dtmfXZcFGyRKHKIm == null) {
return;
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(dtmfXZcFGyRKHKIm.map((e) => YIMConversation(BXiYJGYbkPLwuERt: e)).toList());
});
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.TVlcUBVraDhODubx?.call(kCwocHxVzlSDCcUI);
});
}
break;
case "receipt_p2p":
List<String> ppTCuZbHYhtpcWGC = (JUQwIovWWbGEtXed["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final DdEJLInBukyevMKs in ppTCuZbHYhtpcWGC) {
final iirtwqEXofdELBSI = await UChfQaxIZXBHpDHw.TVtBMJBxUhVUNvEa.KBzcdMaVgeTLhbSO(
YIMEnum_ConversationType.P2P,
DdEJLInBukyevMKs,
false,
);
if (!iirtwqEXofdELBSI) return;
final mcEPlVXzTebdsxXZ = await UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.PZljnyQTHQWpRuih(
YIMEnum_ConversationType.P2P,
DdEJLInBukyevMKs,
);
if (!mcEPlVXzTebdsxXZ) return;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
final dtmfXZcFGyRKHKIm = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.uKKZjqnYwajOojnf<_YIMTable_Conversation>(
_YIMTableName.Conversation,
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(
filter: Filter.and([
Filter.or([
Filter.and([Filter.equals("lastMessage.from", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.to", DdEJLInBukyevMKs)]),
Filter.and([Filter.equals("lastMessage.to", lnHdKoLeAXayLaTQ.wkoLiCQozKacYjmM), Filter.equals("lastMessage.from", DdEJLInBukyevMKs)]),
]),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.P2P.rawValue),
]),
),
);
if (dtmfXZcFGyRKHKIm == null) {
return;
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(dtmfXZcFGyRKHKIm.map((e) => YIMConversation(BXiYJGYbkPLwuERt: e)).toList());
});
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.AdoSfdKUZKmSgbVI?.call(DdEJLInBukyevMKs);
});
}
break;
case "receipt_team":
List<String> ppTCuZbHYhtpcWGC = (JUQwIovWWbGEtXed["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final DdEJLInBukyevMKs in ppTCuZbHYhtpcWGC) {
final iirtwqEXofdELBSI = await UChfQaxIZXBHpDHw.TVtBMJBxUhVUNvEa.KBzcdMaVgeTLhbSO(
YIMEnum_ConversationType.Team,
DdEJLInBukyevMKs,
false,
);
if (!iirtwqEXofdELBSI) return;
final mcEPlVXzTebdsxXZ = await UChfQaxIZXBHpDHw.VurOaXdcuMhmFxOY.PZljnyQTHQWpRuih(
YIMEnum_ConversationType.Team,
DdEJLInBukyevMKs,
);
if (!mcEPlVXzTebdsxXZ) return;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.zYXHYCxBRzMmefXt?.call();
});
final dtmfXZcFGyRKHKIm = await lnHdKoLeAXayLaTQ.vByYuYitJBHbvUKL.uKKZjqnYwajOojnf<_YIMTable_Conversation>(
_YIMTableName.Conversation,
kXTnRNGoMYqcQtxj: (map) => _YIMTable_Conversation.fromJson(map),
fnfSorwGDrYrXXrJ: Finder(
filter: Filter.and([
Filter.equals("lastMessage.to", DdEJLInBukyevMKs),
Filter.equals("lastMessage.conversationType", YIMEnum_ConversationType.Team.rawValue),
]),
),
);
if (dtmfXZcFGyRKHKIm == null) {
return;
}
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.rMqppijxSRmKvvLu?.call(dtmfXZcFGyRKHKIm.map((e) => YIMConversation(BXiYJGYbkPLwuERt: e)).toList());
});
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.AdoSfdKUZKmSgbVI?.call(DdEJLInBukyevMKs);
});
}
break;
case "receipt_room":
List<String> ppTCuZbHYhtpcWGC = (JUQwIovWWbGEtXed["conversationIDs"] as List).map((element) => element.toString()).toList();
for (final DdEJLInBukyevMKs in ppTCuZbHYhtpcWGC) {
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.hTyLGxoJhBOoadid.AdoSfdKUZKmSgbVI?.call(DdEJLInBukyevMKs);
});
}
break;
case "event_online":
final OqUWRJxUkloqziqW = JUQwIovWWbGEtXed["user"] as String;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.aPajfqGZYzQCDWSB.iDslZJfRGeDdprMF?.call(OqUWRJxUkloqziqW, YIMEnum_EventOnline.Online);
});
break;
case "event_offline":
final OqUWRJxUkloqziqW = JUQwIovWWbGEtXed["user"] as String;
lnHdKoLeAXayLaTQ.hqSwzyClHgtHzAja.bhMrnZZKiorcTBJp(() {
UChfQaxIZXBHpDHw.aPajfqGZYzQCDWSB.iDslZJfRGeDdprMF?.call(OqUWRJxUkloqziqW, YIMEnum_EventOnline.Offline);
});
break;
case "update_user":
lnHdKoLeAXayLaTQ.ikCtvzoxOumWKvvj = YIMUser.fromJson(JUQwIovWWbGEtXed["user"]);
}
});
}