mirror of
https://github.com/WuKongIM/WuKongIMFlutterSDK
synced 2025-06-01 08:37:25 +00:00
add message reaction
This commit is contained in:
parent
fe7664f4d0
commit
fa1a4bb114
@ -94,7 +94,6 @@ class WKDBConst {
|
|||||||
reaction.createdAt = readString(data, 'created_at');
|
reaction.createdAt = readString(data, 'created_at');
|
||||||
reaction.seq = readInt(data, 'seq');
|
reaction.seq = readInt(data, 'seq');
|
||||||
reaction.emoji = readString(data, 'emoji');
|
reaction.emoji = readString(data, 'emoji');
|
||||||
reaction.isDeleted = readInt(data, 'is_deleted');
|
|
||||||
return reaction;
|
return reaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:wukongimfluttersdk/db/channel.dart';
|
import 'package:wukongimfluttersdk/db/channel.dart';
|
||||||
import 'package:wukongimfluttersdk/db/const.dart';
|
import 'package:wukongimfluttersdk/db/const.dart';
|
||||||
|
import 'package:wukongimfluttersdk/db/reaction.dart';
|
||||||
import 'package:wukongimfluttersdk/entity/msg.dart';
|
import 'package:wukongimfluttersdk/entity/msg.dart';
|
||||||
import 'package:wukongimfluttersdk/type/const.dart';
|
import 'package:wukongimfluttersdk/type/const.dart';
|
||||||
import 'package:wukongimfluttersdk/wkim.dart';
|
import 'package:wukongimfluttersdk/wkim.dart';
|
||||||
@ -66,7 +67,8 @@ class MessageDB {
|
|||||||
wkMsg = WKDBConst.serializeWKMsg(list[0]);
|
wkMsg = WKDBConst.serializeWKMsg(list[0]);
|
||||||
}
|
}
|
||||||
if (wkMsg != null) {
|
if (wkMsg != null) {
|
||||||
wkMsg.reactionList = await queryReactions(wkMsg.messageID);
|
wkMsg.reactionList =
|
||||||
|
await ReactionDB.shared.queryWithMessageId(wkMsg.messageID);
|
||||||
}
|
}
|
||||||
return wkMsg;
|
return wkMsg;
|
||||||
}
|
}
|
||||||
@ -82,7 +84,8 @@ class MessageDB {
|
|||||||
wkMsg = WKDBConst.serializeWKMsg(list[0]);
|
wkMsg = WKDBConst.serializeWKMsg(list[0]);
|
||||||
}
|
}
|
||||||
if (wkMsg != null) {
|
if (wkMsg != null) {
|
||||||
wkMsg.reactionList = await queryReactions(wkMsg.messageID);
|
wkMsg.reactionList =
|
||||||
|
await ReactionDB.shared.queryWithMessageId(wkMsg.messageID);
|
||||||
}
|
}
|
||||||
return wkMsg;
|
return wkMsg;
|
||||||
}
|
}
|
||||||
@ -111,20 +114,6 @@ class MessageDB {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<WKMsgReaction>> queryReactions(String messageID) async {
|
|
||||||
String sql =
|
|
||||||
"select * from ${WKDBConst.tableMessageReaction} where message_id='$messageID' and is_deleted=0 ORDER BY created_at desc";
|
|
||||||
List<WKMsgReaction> list = [];
|
|
||||||
List<Map<String, Object?>> results =
|
|
||||||
await WKDBHelper.shared.getDB().rawQuery(sql);
|
|
||||||
if (results.isNotEmpty) {
|
|
||||||
for (Map<String, Object?> data in results) {
|
|
||||||
list.add(WKDBConst.serializeMsgReation(data));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<int> queryMaxOrderSeq(String channelID, int channelType) async {
|
Future<int> queryMaxOrderSeq(String channelID, int channelType) async {
|
||||||
int maxOrderSeq = 0;
|
int maxOrderSeq = 0;
|
||||||
String sql =
|
String sql =
|
||||||
@ -231,7 +220,8 @@ class MessageDB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//扩展消息
|
//扩展消息
|
||||||
List<WKMsgReaction> list = await queryMsgReactionWithMessageIds(messageIds);
|
List<WKMsgReaction> list =
|
||||||
|
await ReactionDB.shared.queryWithMessageIds(messageIds);
|
||||||
if (list.isNotEmpty) {
|
if (list.isNotEmpty) {
|
||||||
for (int i = 0, size = msgList.length; i < size; i++) {
|
for (int i = 0, size = msgList.length; i < size; i++) {
|
||||||
for (int j = 0, len = list.length; j < len; j++) {
|
for (int j = 0, len = list.length; j < len; j++) {
|
||||||
@ -640,72 +630,6 @@ class MessageDB {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<WKMsgReaction>> queryMsgReactionWithMessageIds(
|
|
||||||
List<String> messageIds) async {
|
|
||||||
StringBuffer stringBuffer = StringBuffer();
|
|
||||||
for (int i = 0, size = messageIds.length; i < size; i++) {
|
|
||||||
if (stringBuffer.length > 0) {
|
|
||||||
stringBuffer.write(",");
|
|
||||||
}
|
|
||||||
stringBuffer.write(messageIds[i]);
|
|
||||||
}
|
|
||||||
String sql =
|
|
||||||
"select * from ${WKDBConst.tableMessageReaction} where message_id in ($stringBuffer) and is_deleted=0 ORDER BY created_at desc";
|
|
||||||
List<WKMsgReaction> list = [];
|
|
||||||
List<Map<String, Object?>> results =
|
|
||||||
await WKDBHelper.shared.getDB().rawQuery(sql);
|
|
||||||
if (results.isNotEmpty) {
|
|
||||||
for (Map<String, Object?> data in results) {
|
|
||||||
list.add(WKDBConst.serializeMsgReation(data));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
insertOrUpdateReactionList(List<WKMsgReaction> list) {
|
|
||||||
if (list.isEmpty) return;
|
|
||||||
for (int i = 0, size = list.length; i < size; i++) {
|
|
||||||
insertOrUpdateReaction(list[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
insertOrUpdateReaction(WKMsgReaction reaction) async {
|
|
||||||
bool isExist = await isExistReaction(reaction.uid, reaction.messageID);
|
|
||||||
if (isExist) {
|
|
||||||
updateReaction(reaction);
|
|
||||||
} else {
|
|
||||||
insertReaction(reaction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateReaction(WKMsgReaction reaction) {
|
|
||||||
var map = <String, Object>{};
|
|
||||||
map['is_deleted'] = reaction.isDeleted;
|
|
||||||
map['seq'] = reaction.seq;
|
|
||||||
map['emoji'] = reaction.emoji;
|
|
||||||
WKDBHelper.shared.getDB().update(WKDBConst.tableMessageReaction, map,
|
|
||||||
where: "message_id='${reaction.messageID}' and uid='${reaction.uid}'");
|
|
||||||
}
|
|
||||||
|
|
||||||
insertReaction(WKMsgReaction reaction) {
|
|
||||||
WKDBHelper.shared
|
|
||||||
.getDB()
|
|
||||||
.insert(WKDBConst.tableMessageReaction, getReactionMap(reaction));
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<bool> isExistReaction(String uid, String messageID) async {
|
|
||||||
bool isExist = false;
|
|
||||||
String sql =
|
|
||||||
"select * from ${WKDBConst.tableMessageReaction} where message_id='$messageID' and uid='$uid' ";
|
|
||||||
|
|
||||||
List<Map<String, Object?>> list =
|
|
||||||
await WKDBHelper.shared.getDB().rawQuery(sql);
|
|
||||||
if (list.isNotEmpty) {
|
|
||||||
isExist = true;
|
|
||||||
}
|
|
||||||
return isExist;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateSendingMsgFail() {
|
updateSendingMsgFail() {
|
||||||
var map = <String, Object>{};
|
var map = <String, Object>{};
|
||||||
map['status'] = WKSendMsgResult.sendFail;
|
map['status'] = WKSendMsgResult.sendFail;
|
||||||
@ -728,7 +652,8 @@ class MessageDB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (wkMsg != null) {
|
if (wkMsg != null) {
|
||||||
wkMsg.reactionList = await queryReactions(wkMsg.messageID);
|
wkMsg.reactionList =
|
||||||
|
await ReactionDB.shared.queryWithMessageId(wkMsg.messageID);
|
||||||
}
|
}
|
||||||
return wkMsg;
|
return wkMsg;
|
||||||
}
|
}
|
||||||
@ -782,18 +707,4 @@ class MessageDB {
|
|||||||
map['message_id'] = extra.messageID;
|
map['message_id'] = extra.messageID;
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
dynamic getReactionMap(WKMsgReaction reaction) {
|
|
||||||
var map = <String, Object>{};
|
|
||||||
map['channel_id'] = reaction.channelID;
|
|
||||||
map['channel_id'] = reaction.channelID;
|
|
||||||
map['channel_type'] = reaction.channelType;
|
|
||||||
map['message_id'] = reaction.messageID;
|
|
||||||
map['uid'] = reaction.uid;
|
|
||||||
map['name'] = reaction.name;
|
|
||||||
map['is_deleted'] = reaction.isDeleted;
|
|
||||||
map['seq'] = reaction.seq;
|
|
||||||
map['emoji'] = reaction.emoji;
|
|
||||||
map['created_at'] = reaction.createdAt;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
123
lib/db/reaction.dart
Normal file
123
lib/db/reaction.dart
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
import 'package:wukongimfluttersdk/entity/msg.dart';
|
||||||
|
|
||||||
|
import 'const.dart';
|
||||||
|
import 'wk_db_helper.dart';
|
||||||
|
|
||||||
|
class ReactionDB {
|
||||||
|
ReactionDB._privateConstructor();
|
||||||
|
static final ReactionDB _instance = ReactionDB._privateConstructor();
|
||||||
|
static ReactionDB get shared => _instance;
|
||||||
|
|
||||||
|
Future<int> queryMaxSeqWithChannel(String channelID, int channelType) async {
|
||||||
|
String sql =
|
||||||
|
"select max(seq) seq from ${WKDBConst.tableMessageReaction} where channel_id='$channelID' and channel_type=$channelType limit 0, 1";
|
||||||
|
int version = 0;
|
||||||
|
|
||||||
|
List<Map<String, Object?>> list =
|
||||||
|
await WKDBHelper.shared.getDB().rawQuery(sql);
|
||||||
|
if (list.isNotEmpty) {
|
||||||
|
dynamic data = list[0];
|
||||||
|
if (data != null) {
|
||||||
|
version = WKDBConst.readInt(data, 'seq');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<WKMsgReaction>> queryWithMessageId(String messageId) async {
|
||||||
|
String sql =
|
||||||
|
"select * from ${WKDBConst.tableMessageReaction} where message_id='$messageId' and is_deleted=0 ORDER BY created_at desc";
|
||||||
|
List<WKMsgReaction> list = [];
|
||||||
|
|
||||||
|
List<Map<String, Object?>> results =
|
||||||
|
await WKDBHelper.shared.getDB().rawQuery(sql);
|
||||||
|
if (results.isNotEmpty) {
|
||||||
|
for (Map<String, Object?> data in results) {
|
||||||
|
list.add(WKDBConst.serializeMsgReation(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<WKMsgReaction>> queryWithMessageIds(
|
||||||
|
List<String> messageIds) async {
|
||||||
|
StringBuffer sb = StringBuffer();
|
||||||
|
for (int i = 0, size = messageIds.length; i < size; i++) {
|
||||||
|
if (i != 0) {
|
||||||
|
sb.write("'");
|
||||||
|
}
|
||||||
|
sb.write(messageIds[i]);
|
||||||
|
sb.write("'");
|
||||||
|
}
|
||||||
|
|
||||||
|
String sql =
|
||||||
|
"select * from ${WKDBConst.tableMessageReaction} where message_id in (${sb.toString()}) and is_deleted=0 ORDER BY created_at desc";
|
||||||
|
List<WKMsgReaction> list = [];
|
||||||
|
List<Map<String, Object?>> results =
|
||||||
|
await WKDBHelper.shared.getDB().rawQuery(sql);
|
||||||
|
if (results.isNotEmpty) {
|
||||||
|
for (Map<String, Object?> data in results) {
|
||||||
|
list.add(WKDBConst.serializeMsgReation(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
insertOrUpdateReactionList(List<WKMsgReaction> list) {
|
||||||
|
if (list.isEmpty) return;
|
||||||
|
for (int i = 0, size = list.length; i < size; i++) {
|
||||||
|
insertOrUpdateReaction(list[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
insertOrUpdateReaction(WKMsgReaction reaction) async {
|
||||||
|
bool isExist = await isExistReaction(reaction.uid, reaction.messageID);
|
||||||
|
if (isExist) {
|
||||||
|
updateReaction(reaction);
|
||||||
|
} else {
|
||||||
|
insertReaction(reaction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateReaction(WKMsgReaction reaction) {
|
||||||
|
var map = <String, Object>{};
|
||||||
|
map['is_deleted'] = reaction.isDeleted;
|
||||||
|
map['seq'] = reaction.seq;
|
||||||
|
map['emoji'] = reaction.emoji;
|
||||||
|
WKDBHelper.shared.getDB().update(WKDBConst.tableMessageReaction, map,
|
||||||
|
where: "message_id='${reaction.messageID}' and uid='${reaction.uid}'");
|
||||||
|
}
|
||||||
|
|
||||||
|
insertReaction(WKMsgReaction reaction) {
|
||||||
|
WKDBHelper.shared
|
||||||
|
.getDB()
|
||||||
|
.insert(WKDBConst.tableMessageReaction, getReactionMap(reaction));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> isExistReaction(String uid, String messageID) async {
|
||||||
|
bool isExist = false;
|
||||||
|
String sql =
|
||||||
|
"select * from ${WKDBConst.tableMessageReaction} where message_id='$messageID' and uid='$uid' ";
|
||||||
|
|
||||||
|
List<Map<String, Object?>> list =
|
||||||
|
await WKDBHelper.shared.getDB().rawQuery(sql);
|
||||||
|
if (list.isNotEmpty) {
|
||||||
|
isExist = true;
|
||||||
|
}
|
||||||
|
return isExist;
|
||||||
|
}
|
||||||
|
|
||||||
|
dynamic getReactionMap(WKMsgReaction reaction) {
|
||||||
|
var map = <String, Object>{};
|
||||||
|
map['channel_id'] = reaction.channelID;
|
||||||
|
map['channel_id'] = reaction.channelID;
|
||||||
|
map['channel_type'] = reaction.channelType;
|
||||||
|
map['message_id'] = reaction.messageID;
|
||||||
|
map['uid'] = reaction.uid;
|
||||||
|
map['name'] = reaction.name;
|
||||||
|
map['is_deleted'] = reaction.isDeleted;
|
||||||
|
map['seq'] = reaction.seq;
|
||||||
|
map['emoji'] = reaction.emoji;
|
||||||
|
map['created_at'] = reaction.createdAt;
|
||||||
|
}
|
||||||
|
}
|
@ -108,9 +108,6 @@ class WKConnectionManager {
|
|||||||
_socket!.close();
|
_socket!.close();
|
||||||
}
|
}
|
||||||
// if (isLogout) {
|
// if (isLogout) {
|
||||||
WKIM.shared.options.uid = '';
|
|
||||||
WKIM.shared.options.token = '';
|
|
||||||
WKIM.shared.messageManager.updateSendingMsgFail();
|
|
||||||
// }
|
// }
|
||||||
_closeAll();
|
_closeAll();
|
||||||
}
|
}
|
||||||
@ -278,6 +275,9 @@ class WKConnectionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_closeAll() {
|
_closeAll() {
|
||||||
|
WKIM.shared.options.uid = '';
|
||||||
|
WKIM.shared.options.token = '';
|
||||||
|
WKIM.shared.messageManager.updateSendingMsgFail();
|
||||||
_stopCheckNetworkTimer();
|
_stopCheckNetworkTimer();
|
||||||
_stopHeartTimer();
|
_stopHeartTimer();
|
||||||
_socket!.close();
|
_socket!.close();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
|
|
||||||
import 'package:wukongimfluttersdk/db/message.dart';
|
import 'package:wukongimfluttersdk/db/message.dart';
|
||||||
|
import 'package:wukongimfluttersdk/db/reaction.dart';
|
||||||
import 'package:wukongimfluttersdk/entity/msg.dart';
|
import 'package:wukongimfluttersdk/entity/msg.dart';
|
||||||
import 'package:wukongimfluttersdk/wkim.dart';
|
import 'package:wukongimfluttersdk/wkim.dart';
|
||||||
|
|
||||||
@ -221,7 +222,7 @@ class WKConversationManager {
|
|||||||
ConversationDB.shared.insertMsgList(conversationMsgList);
|
ConversationDB.shared.insertMsgList(conversationMsgList);
|
||||||
}
|
}
|
||||||
if (msgReactionList.isNotEmpty) {
|
if (msgReactionList.isNotEmpty) {
|
||||||
MessageDB.shared.insertOrUpdateReactionList(msgReactionList);
|
ReactionDB.shared.insertOrUpdateReactionList(msgReactionList);
|
||||||
}
|
}
|
||||||
if (msgList.isNotEmpty && msgList.length < 20) {
|
if (msgList.isNotEmpty && msgList.length < 20) {
|
||||||
msgList.sort((a, b) => a.messageSeq.compareTo(b.messageSeq));
|
msgList.sort((a, b) => a.messageSeq.compareTo(b.messageSeq));
|
||||||
|
@ -6,6 +6,7 @@ import 'package:wukongimfluttersdk/common/logs.dart';
|
|||||||
import 'package:wukongimfluttersdk/db/const.dart';
|
import 'package:wukongimfluttersdk/db/const.dart';
|
||||||
import 'package:wukongimfluttersdk/db/conversation.dart';
|
import 'package:wukongimfluttersdk/db/conversation.dart';
|
||||||
import 'package:wukongimfluttersdk/db/message.dart';
|
import 'package:wukongimfluttersdk/db/message.dart';
|
||||||
|
import 'package:wukongimfluttersdk/db/reaction.dart';
|
||||||
import 'package:wukongimfluttersdk/entity/msg.dart';
|
import 'package:wukongimfluttersdk/entity/msg.dart';
|
||||||
import 'package:wukongimfluttersdk/model/wk_media_message_content.dart';
|
import 'package:wukongimfluttersdk/model/wk_media_message_content.dart';
|
||||||
import 'package:wukongimfluttersdk/proto/proto.dart';
|
import 'package:wukongimfluttersdk/proto/proto.dart';
|
||||||
@ -177,15 +178,17 @@ class WKMessageManager {
|
|||||||
_saveSyncChannelMSGs(List<WKSyncMsg> list) {
|
_saveSyncChannelMSGs(List<WKSyncMsg> list) {
|
||||||
List<WKMsg> msgList = [];
|
List<WKMsg> msgList = [];
|
||||||
List<WKMsgExtra> msgExtraList = [];
|
List<WKMsgExtra> msgExtraList = [];
|
||||||
|
List<WKMsgReaction> msgReactionList = [];
|
||||||
for (int j = 0, len = list.length; j < len; j++) {
|
for (int j = 0, len = list.length; j < len; j++) {
|
||||||
WKMsg wkMsg = list[j].getWKMsg();
|
WKMsg wkMsg = list[j].getWKMsg();
|
||||||
msgList.add(wkMsg);
|
msgList.add(wkMsg);
|
||||||
if (list[j].messageExtra != null) {
|
if (list[j].messageExtra != null) {
|
||||||
if (list[j].messageExtra != null) {
|
WKMsgExtra extra = wkSyncExtraMsg2WKMsgExtra(
|
||||||
WKMsgExtra extra = wkSyncExtraMsg2WKMsgExtra(
|
wkMsg.channelID, wkMsg.channelType, list[j].messageExtra!);
|
||||||
wkMsg.channelID, wkMsg.channelType, list[j].messageExtra!);
|
msgExtraList.add(extra);
|
||||||
msgExtraList.add(extra);
|
}
|
||||||
}
|
if (wkMsg.reactionList != null && wkMsg.reactionList!.isNotEmpty) {
|
||||||
|
msgReactionList.addAll(wkMsg.reactionList!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (msgExtraList.isNotEmpty) {
|
if (msgExtraList.isNotEmpty) {
|
||||||
@ -194,6 +197,9 @@ class WKMessageManager {
|
|||||||
if (msgList.isNotEmpty) {
|
if (msgList.isNotEmpty) {
|
||||||
MessageDB.shared.insertMsgList(msgList);
|
MessageDB.shared.insertMsgList(msgList);
|
||||||
}
|
}
|
||||||
|
if (msgReactionList.isNotEmpty) {
|
||||||
|
ReactionDB.shared.insertOrUpdateReactionList(msgReactionList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WKMsgExtra wkSyncExtraMsg2WKMsgExtra(
|
WKMsgExtra wkSyncExtraMsg2WKMsgExtra(
|
||||||
@ -218,6 +224,46 @@ class WKMessageManager {
|
|||||||
return extra;
|
return extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
saveMessageReactions(List<WKSyncMsgReaction> list) async {
|
||||||
|
if (list.isEmpty) return;
|
||||||
|
List<WKMsgReaction> reactionList = [];
|
||||||
|
List<String> msgIds = [];
|
||||||
|
for (int i = 0, size = list.length; i < size; i++) {
|
||||||
|
WKMsgReaction reaction = WKMsgReaction();
|
||||||
|
reaction.messageID = list[i].messageID;
|
||||||
|
reaction.channelID = list[i].channelID;
|
||||||
|
reaction.channelType = list[i].channelType;
|
||||||
|
reaction.uid = list[i].uid;
|
||||||
|
reaction.name = list[i].name;
|
||||||
|
reaction.seq = list[i].seq;
|
||||||
|
reaction.emoji = list[i].emoji;
|
||||||
|
reaction.isDeleted = list[i].isDeleted;
|
||||||
|
reaction.createdAt = list[i].createdAt;
|
||||||
|
msgIds.add(reaction.messageID);
|
||||||
|
reactionList.add(reaction);
|
||||||
|
}
|
||||||
|
ReactionDB.shared.insertOrUpdateReactionList(reactionList);
|
||||||
|
List<WKMsg> msgList = await MessageDB.shared.queryWithMessageIds(msgIds);
|
||||||
|
getMsgReactionsAndRefreshMsg(msgIds, msgList);
|
||||||
|
}
|
||||||
|
|
||||||
|
getMsgReactionsAndRefreshMsg(
|
||||||
|
List<String> messageIds, List<WKMsg> updatedMsgList) async {
|
||||||
|
List<WKMsgReaction> reactionList =
|
||||||
|
await ReactionDB.shared.queryWithMessageIds(messageIds);
|
||||||
|
for (int i = 0, size = updatedMsgList.length; i < size; i++) {
|
||||||
|
for (int j = 0, len = reactionList.length; j < len; j++) {
|
||||||
|
if (updatedMsgList[i].messageID == reactionList[j].messageID) {
|
||||||
|
if (updatedMsgList[i].reactionList == null) {
|
||||||
|
updatedMsgList[i].reactionList = [];
|
||||||
|
}
|
||||||
|
updatedMsgList[i].reactionList!.add(reactionList[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setRefreshMsg(updatedMsgList[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 查询或同步某个频道消息
|
* 查询或同步某个频道消息
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user