Update channel info refresh listener and optimize data insertion issues

This commit is contained in:
SL 2023-12-01 19:03:47 +08:00
parent a0b6bd0edf
commit 00af8b6a9f
18 changed files with 215 additions and 161 deletions

View File

@ -39,4 +39,6 @@
### 1.1.9
* Modify message reply to ack issue and Add protocol device flag field
### 1.2.0
* Modify query channel message error issue
* Modify query channel message error issue
### 1.2.1
* Update channel info refresh listener and optimize data insertion issues

View File

@ -9,7 +9,7 @@
#### 安装
```
dependencies:
wukongimfluttersdk: ^1.2.0
wukongimfluttersdk: ^1.2.1
```
#### 引入
```dart

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -59,7 +59,7 @@ class ChatListDataState extends State<ChatList> {
void initState() {
super.initState();
initListener();
getMsgList(50000, 0, true);
getMsgList(0, 0, true);
}
initListener() {

View File

@ -49,11 +49,13 @@ class ListViewShowDataState extends State<ListViewShowData> {
if (status == WKConnectStatus.connecting) {
_connectionStatusStr = '连接中...';
} else if (status == WKConnectStatus.success) {
_connectionStatusStr = '最近会话';
_connectionStatusStr = '最近会话【连接成功】';
} else if (status == WKConnectStatus.noNetwork) {
_connectionStatusStr = '网络异常';
} else if (status == WKConnectStatus.syncMsg) {
_connectionStatusStr = '同步消息中...';
} else if (status == WKConnectStatus.kicked) {
_connectionStatusStr = '未连接,在其他设备登录';
}
setState(() {});
});
@ -163,6 +165,10 @@ class ListViewShowDataState extends State<ListViewShowData> {
height: 200,
width: 200,
fit: BoxFit.cover,
errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) {
return Image.asset('assets/ic_default_avatar.png');
},
),
),
Expanded(

View File

@ -40,7 +40,7 @@ class HttpUtils {
lastSsgSeqs, // channelID:channelType:last_msg_seq|channelID:channelType:last_msg_seq
"msg_count": 10 // app点进去第一屏的数据
});
print(response.data);
// print(response.data);
WKSyncConversation conversation = WKSyncConversation();
conversation.conversations = [];
if (response.statusCode == HttpStatus.ok) {

View File

@ -32,7 +32,14 @@ class IMUtils {
"https://lmg.jj20.com/up/allimg/tx30/10121138219844229.jpg",
"https://lmg.jj20.com/up/allimg/tx30/10121138219844229.jpg",
"https://lmg.jj20.com/up/allimg/tx28/430423183653303.jpg",
"https://lmg.jj20.com/up/allimg/tx23/520420024834916.jpg"
"https://lmg.jj20.com/up/allimg/tx23/520420024834916.jpg",
"https://himg.bdimg.com/sys/portraitn/item/public.1.a535a65d.tJe8MgWmP8zJ456B73Kzfg",
"https://images.liqucn.com/img/h23/h07/img_localize_cb7b78b88d5b33e2ce8921221bf3deae_400x400.png",
"https://img1.baidu.com/it/u=3916753633,2634890492&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400",
"https://img0.baidu.com/it/u=4210586523,443489101&fm=253&fmt=auto&app=138&f=JPEG?w=304&h=304",
"https://img2.baidu.com/it/u=2559320899,1546883787&fm=253&fmt=auto&app=138&f=JPEG?w=441&h=499",
"https://img0.baidu.com/it/u=2952429745,3806929819&fm=253&fmt=auto&app=138&f=JPEG?w=380&h=380",
"https://img2.baidu.com/it/u=3783923022,668713258&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",
];
WKIM.shared.messageManager.addOnSyncChannelMsgListener((channelID,
@ -44,6 +51,7 @@ class IMUtils {
// channel资料
WKIM.shared.channelManager
.addOnGetChannelListener((channelId, channelType, back) {
print('获取channel资料');
if (channelType == WKChannelType.personal) {
//
// API请求后返回

View File

@ -1,6 +1,7 @@
import 'dart:collection';
import 'dart:convert';
import 'package:sqflite/sqflite.dart';
import 'package:wukongimfluttersdk/db/const.dart';
import 'package:wukongimfluttersdk/entity/channel.dart';
@ -12,11 +13,11 @@ class ChannelDB {
static ChannelDB get shared => _instance;
Future<WKChannel?> query(String channelID, int channelType) async {
String sql =
"select * from ${WKDBConst.tableChannel} where channel_id='$channelID' and channel_type=$channelType";
WKChannel? channel;
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared.getDB().query(
WKDBConst.tableChannel,
where: "channel_id=? and channel_type=?",
whereArgs: [channelID, channelType]);
if (list.isNotEmpty) {
channel = WKDBConst.serializeChannel(list[0]);
}
@ -44,8 +45,8 @@ class ChannelDB {
if (updateList.isNotEmpty) {
for (Map<String, dynamic> value in updateList) {
txn.update(WKDBConst.tableChannel, value,
where:
"channel_id='${value['channel_id']}' and channel_type=${value['channel_type']}");
where: "channel_id=? and channel_type=?",
whereArgs: [value['channel_id'], value['channel_type']]);
}
}
});
@ -62,26 +63,27 @@ class ChannelDB {
}
insert(WKChannel channel) {
WKDBHelper.shared.getDB().insert(WKDBConst.tableChannel, getMap(channel));
WKDBHelper.shared.getDB().insert(WKDBConst.tableChannel, getMap(channel),
conflictAlgorithm: ConflictAlgorithm.replace);
}
update(WKChannel channel) {
WKDBHelper.shared.getDB().update(WKDBConst.tableChannel, getMap(channel),
where:
"channel_id='${channel.channelID}' and channel_type=${channel.channelType}");
where: "channel_id=? and channel_type=?",
whereArgs: [channel.channelID, channel.channelType]);
}
Future<bool> isExist(String channelID, int channelType) async {
bool isExit = false;
String sql =
"select * from ${WKDBConst.tableChannel} where channel_id='$channelID' and channel_type=$channelType";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared.getDB().query(
WKDBConst.tableChannel,
where: "channel_id=? and channel_type=?",
whereArgs: [channelID, channelType]);
if (list.isNotEmpty) {
dynamic data = list[0];
if (data != null) {
String channelID = WKDBConst.readString(data, 'channel_id');
if (channelID != '' && channelID.isNotEmpty) {
if (channelID != '') {
isExit = true;
}
}
@ -104,11 +106,11 @@ class ChannelDB {
sb.write("'");
}
String channelIds = sb.toString();
String sql =
"select * from ${WKDBConst.tableChannel} where channel_id in ($channelIds) and channel_type=$channelType";
List<WKChannel> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableChannel,
where: "channel_id in (?) and channel_type=?",
whereArgs: [channelIds, channelType]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeChannel(data));

View File

@ -1,3 +1,5 @@
import 'package:sqflite/sqflite.dart';
import '../entity/channel_member.dart';
import 'const.dart';
import 'wk_db_helper.dart';
@ -21,11 +23,11 @@ class ChannelMemberDB {
sb.write(uidList[i]);
sb.write("'");
}
String sql =
"select * from ${WKDBConst.tableChannelMember} where channel_id='$channelID' and channel_type=$channelType and member_uid in (${sb.toString()})";
List<WKChannelMember> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableChannelMember,
where: "channel_id=? and channel_type=? and member_uid in (?)",
whereArgs: [channelID, channelType, sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeChannelMember(data));
@ -36,11 +38,11 @@ class ChannelMemberDB {
Future<int> getMaxVersion(String channelID, int channelType) async {
String sql =
"select max(version) version from ${WKDBConst.tableChannelMember} where channel_id ='$channelID' and channel_type=$channelType limit 0, 1";
"select max(version) version from ${WKDBConst.tableChannelMember} where channel_id =? and channel_type=? limit 0, 1";
int version = 0;
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelID, channelType]);
if (results.isNotEmpty) {
dynamic data = results[0];
version = WKDBConst.readInt(data, 'version');
@ -51,10 +53,11 @@ class ChannelMemberDB {
Future<WKChannelMember?> queryWithUID(
String channelId, int channelType, String memberUID) async {
String sql =
"select ${WKDBConst.tableChannelMember}.*,$channelCols from ${WKDBConst.tableChannelMember} left join ${WKDBConst.tableChannel} on ${WKDBConst.tableChannelMember}.member_uid = ${WKDBConst.tableChannel}.channel_id AND ${WKDBConst.tableChannel}.channel_type=1 where (${WKDBConst.tableChannelMember}.channel_id='$channelId' and ${WKDBConst.tableChannelMember}.channel_type=$channelType and ${WKDBConst.tableChannelMember}.member_uid='$memberUID')";
"select ${WKDBConst.tableChannelMember}.*,$channelCols from ${WKDBConst.tableChannelMember} left join ${WKDBConst.tableChannel} on ${WKDBConst.tableChannelMember}.member_uid = ${WKDBConst.tableChannel}.channel_id AND ${WKDBConst.tableChannel}.channel_type=1 where (${WKDBConst.tableChannelMember}.channel_id=? and ${WKDBConst.tableChannelMember}.channel_type=? and ${WKDBConst.tableChannelMember}.member_uid=?)";
WKChannelMember? channelMember;
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared
.getDB()
.rawQuery(sql, [channelId, channelType, memberUID]);
if (list.isNotEmpty) {
channelMember = WKDBConst.serializeChannelMember(list[0]);
}
@ -64,10 +67,10 @@ class ChannelMemberDB {
Future<List<WKChannelMember>?> queryWithChannel(
String channelId, int channelType) async {
String sql =
"select ${WKDBConst.tableChannelMember}.*,$channelCols from ${WKDBConst.tableChannelMember} LEFT JOIN ${WKDBConst.tableChannel} on ${WKDBConst.tableChannelMember}.member_uid=${WKDBConst.tableChannel}.channel_id and ${WKDBConst.tableChannel}.channel_type=1 where ${WKDBConst.tableChannelMember}.channel_id='$channelId' and ${WKDBConst.tableChannelMember}.channel_type=$channelType and ${WKDBConst.tableChannelMember}.is_deleted=0 and ${WKDBConst.tableChannelMember}.status=1 order by ${WKDBConst.tableChannelMember}.role=1 desc,${WKDBConst.tableChannelMember}.role=2 desc,${WKDBConst.tableChannelMember}.created_at asc";
"select ${WKDBConst.tableChannelMember}.*,$channelCols from ${WKDBConst.tableChannelMember} LEFT JOIN ${WKDBConst.tableChannel} on ${WKDBConst.tableChannelMember}.member_uid=${WKDBConst.tableChannel}.channel_id and ${WKDBConst.tableChannel}.channel_type=1 where ${WKDBConst.tableChannelMember}.channel_id=? and ${WKDBConst.tableChannelMember}.channel_type=? and ${WKDBConst.tableChannelMember}.is_deleted=0 and ${WKDBConst.tableChannelMember}.status=1 order by ${WKDBConst.tableChannelMember}.role=1 desc,${WKDBConst.tableChannelMember}.role=2 desc,${WKDBConst.tableChannelMember}.created_at asc";
List<WKChannelMember> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelId, channelType]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeChannelMember(data));
@ -88,11 +91,11 @@ class ChannelMemberDB {
sb.write("'");
}
String sql =
"select * from ${WKDBConst.tableChannelMember} where channel_id ='$channelID' and channel_type=$channelType and member_uid in (${sb.toString()})";
List<WKChannelMember> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableChannelMember,
where: "channel_id=? and channel_type=? and member_uid in (?) ",
whereArgs: [channelID, channelType, sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeChannelMember(data));
@ -122,15 +125,20 @@ class ChannelMemberDB {
WKDBHelper.shared.getDB().transaction((txn) async {
if (insertCVList.isNotEmpty) {
for (Map<String, dynamic> value in insertCVList) {
txn.insert(WKDBConst.tableChannelMember, value);
txn.insert(WKDBConst.tableChannelMember, value,
conflictAlgorithm: ConflictAlgorithm.replace);
}
}
if (updateCVList.isNotEmpty) {
for (Map<String, dynamic> value in updateCVList) {
txn.update(WKDBConst.tableChannelMember, value,
where:
"channel_id='${value['channel_id']}' and channel_type=${value['channel_type']} and member_uid='${value['member_uid']}'");
where: "channel_id=? and channel_type=? and member_uid=?",
whereArgs: [
value['channel_id'],
value['channel_type'],
value['member_uid']
]);
}
}
});

View File

@ -1,7 +1,9 @@
import 'dart:collection';
import 'dart:convert';
import 'package:sqflite/sqflite.dart';
import 'package:wukongimfluttersdk/db/const.dart';
import 'package:wukongimfluttersdk/entity/channel.dart';
import '../entity/conversation.dart';
import 'wk_db_helper.dart';
@ -24,7 +26,10 @@ class ConversationDB {
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
WKConversationMsg msg = WKDBConst.serializeCoversation(data);
list.add(getUIMsg(msg));
WKChannel wkChannel = WKDBConst.serializeChannel(data);
WKUIConversationMsg uiMsg = getUIMsg(msg);
uiMsg.setWkChannel(wkChannel);
list.add(uiMsg);
}
}
return list;
@ -35,7 +40,8 @@ class ConversationDB {
data['is_deleted'] = 1;
int row = await WKDBHelper.shared.getDB().update(
WKDBConst.tableConversation, data,
where: "channel_id='$channelID' and channel_type=$channelType");
where: "channel_id=? and channel_type=?",
whereArgs: [channelID, channelType]);
return row > 0;
}
@ -46,9 +52,9 @@ class ConversationDB {
conversationMsg.channelID, conversationMsg.channelType);
if (lastMsg == null || lastMsg.channelID.isEmpty) {
row = await WKDBHelper.shared
.getDB()
.insert(WKDBConst.tableConversation, getMap(conversationMsg, false));
row = await WKDBHelper.shared.getDB().insert(
WKDBConst.tableConversation, getMap(conversationMsg, false),
conflictAlgorithm: ConflictAlgorithm.replace);
} else {
conversationMsg.unreadCount =
lastMsg.unreadCount + conversationMsg.unreadCount;
@ -66,11 +72,11 @@ class ConversationDB {
Future<WKConversationMsg?> queryMsgByMsgChannelId(
String channelId, int channelType) async {
WKConversationMsg? msg;
String sql =
"select * from ${WKDBConst.tableConversation} where channel_id='$channelId' and channel_type=$channelType";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared.getDB().query(
WKDBConst.tableConversation,
where: "channel_id=? and channel_type=?",
whereArgs: [channelId, channelType]);
if (list.isNotEmpty) {
msg = WKDBConst.serializeCoversation(list[0]);
}
@ -116,11 +122,11 @@ class ConversationDB {
sb.write(channelIds[i]);
sb.write("'");
}
String sql =
"select * from '${WKDBConst.tableConversation}' where channel_id in (${sb.toString()})";
List<WKConversationMsg> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableConversation,
where: "channel_id in (?)",
whereArgs: [sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeCoversation(data));
@ -160,14 +166,15 @@ class ConversationDB {
WKDBHelper.shared.getDB().transaction((txn) async {
if (insertList.isNotEmpty) {
for (int i = 0; i < insertList.length; i++) {
txn.insert(WKDBConst.tableConversation, insertList[i]);
txn.insert(WKDBConst.tableConversation, insertList[i],
conflictAlgorithm: ConflictAlgorithm.replace);
}
}
if (updateList.isNotEmpty) {
for (Map<String, dynamic> value in updateList) {
txn.update(WKDBConst.tableConversation, value,
where:
"channel_id='${value['channel_id']}' and channel_type=${value['channel_type']}");
where: "channel_id=? and channel_type=?",
whereArgs: [value['channel_id'], value['channel_type']]);
}
}
});
@ -196,7 +203,8 @@ class ConversationDB {
dynamic map, String channelID, int channelType) async {
return await WKDBHelper.shared.getDB().update(
WKDBConst.tableConversation, map,
where: "channel_id='$channelID' and channel_type=$channelType");
where: "channel_id=? and channel_type=?",
whereArgs: [channelID, channelType]);
}
WKUIConversationMsg getUIMsg(WKConversationMsg conversationMsg) {

View File

@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:sqflite/sqflite.dart';
import 'package:wukongimfluttersdk/db/channel.dart';
import 'package:wukongimfluttersdk/db/const.dart';
import 'package:wukongimfluttersdk/db/reaction.dart';
@ -23,10 +24,10 @@ class MessageDB {
Future<bool> isExist(String clientMsgNo) async {
bool isExist = false;
String sql =
"select * from ${WKDBConst.tableMessage} where client_msg_no='$clientMsgNo'";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessage,
where: "client_msg_no=?",
whereArgs: [clientMsgNo]);
if (list.isNotEmpty) {
isExist = true;
}
@ -45,36 +46,35 @@ class MessageDB {
msg.clientMsgNO = WKIM.shared.messageManager.generateClientMsgNo();
}
}
return await WKDBHelper.shared
.getDB()
.insert(WKDBConst.tableMessage, getMap(msg));
return await WKDBHelper.shared.getDB().insert(
WKDBConst.tableMessage, getMap(msg),
conflictAlgorithm: ConflictAlgorithm.replace);
}
Future<int> updateMsg(WKMsg msg) async {
return await WKDBHelper.shared.getDB().update(
WKDBConst.tableMessage, getMap(msg),
where: "client_seq=${msg.clientSeq}");
where: "client_seq=?", whereArgs: [msg.clientSeq]);
}
Future<int> updateMsgWithField(dynamic map, int clientSeq) async {
return await WKDBHelper.shared
.getDB()
.update(WKDBConst.tableMessage, map, where: "client_seq=$clientSeq");
return await WKDBHelper.shared.getDB().update(WKDBConst.tableMessage, map,
where: "client_seq=?", whereArgs: [clientSeq]);
}
Future<int> updateMsgWithFieldAndClientMsgNo(
dynamic map, String clientMsgNO) async {
return await WKDBHelper.shared.getDB().update(WKDBConst.tableMessage, map,
where: "client_msg_no='$clientMsgNO'");
where: "client_msg_no=?", whereArgs: [clientMsgNO]);
}
Future<WKMsg?> queryWithClientMsgNo(String clientMsgNo) async {
WKMsg? wkMsg;
String sql =
"select $messageCols,$extraCols from ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} ON ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.client_msg_no='$clientMsgNo'";
"select $messageCols,$extraCols from ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} ON ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.client_msg_no=?";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [clientMsgNo]);
if (list.isNotEmpty) {
wkMsg = WKDBConst.serializeWKMsg(list[0]);
}
@ -88,10 +88,10 @@ class MessageDB {
Future<WKMsg?> queryWithClientSeq(int clientSeq) async {
WKMsg? wkMsg;
String sql =
"select $messageCols,$extraCols from ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} ON ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.client_seq=$clientSeq";
"select $messageCols,$extraCols from ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} ON ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.client_seq=?";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [clientSeq]);
if (list.isNotEmpty) {
wkMsg = WKDBConst.serializeWKMsg(list[0]);
}
@ -114,10 +114,10 @@ class MessageDB {
}
String sql =
"select $messageCols,$extraCols from ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} ON ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.message_id in (${sb.toString()})";
"select $messageCols,$extraCols from ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} ON ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.message_id in (?)";
List<WKMsg> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeWKMsg(data));
@ -129,9 +129,9 @@ class MessageDB {
Future<int> queryMaxOrderSeq(String channelID, int channelType) async {
int maxOrderSeq = 0;
String sql =
"select max(order_seq) order_seq from ${WKDBConst.tableMessage} where channel_id ='$channelID' and channel_type=$channelType and type<>99 and type<>0 and is_deleted=0";
"select max(order_seq) order_seq from ${WKDBConst.tableMessage} where channel_id =? and channel_type=? and type<>99 and type<>0 and is_deleted=0";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelID, channelType]);
if (list.isNotEmpty) {
dynamic data = list[0];
maxOrderSeq = WKDBConst.readInt(data, 'order_seq');
@ -141,10 +141,10 @@ class MessageDB {
Future<int> getMaxMessageSeq(String channelID, int channelType) async {
String sql =
"SELECT max(message_seq) message_seq FROM ${WKDBConst.tableMessage} WHERE channel_id='$channelID' AND channel_type=$channelType";
"SELECT max(message_seq) message_seq FROM ${WKDBConst.tableMessage} WHERE channel_id=? AND channel_type=?";
int messageSeq = 0;
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelID, channelType]);
if (list.isNotEmpty) {
dynamic data = list[0];
messageSeq = WKDBConst.readInt(data, 'message_seq');
@ -156,9 +156,10 @@ class MessageDB {
String channelID, int channelType, int maxOrderSeq, int limit) async {
int minOrderSeq = 0;
String sql =
"select order_seq from ${WKDBConst.tableMessage} where channel_id='$channelID' and channel_type='$channelType' and type<>99 and order_seq <= $maxOrderSeq order by order_seq desc limit $limit";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
"select order_seq from ${WKDBConst.tableMessage} where channel_id=? and channel_type=? and type<>99 and order_seq <=? order by order_seq desc limit ?";
List<Map<String, Object?>> list = await WKDBHelper.shared
.getDB()
.rawQuery(sql, [channelID, channelType, maxOrderSeq, limit]);
if (list.isNotEmpty) {
dynamic data = list[0];
minOrderSeq = WKDBConst.readInt(data, 'order_seq');
@ -170,34 +171,41 @@ class MessageDB {
int oldestOrderSeq, bool contain, int pullMode, int limit) async {
List<WKMsg> msgList = [];
String sql;
var args = [];
if (oldestOrderSeq <= 0) {
sql =
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id='$channelId' and ${WKDBConst.tableMessage}.channel_type=$channelType and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99) where is_deleted=0 and is_mutual_deleted=0 order by order_seq desc limit 0,$limit";
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id=? and ${WKDBConst.tableMessage}.channel_type=? and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99) where is_deleted=0 and is_mutual_deleted=0 order by order_seq desc limit 0,?";
args.add(channelId);
args.add(channelType);
args.add(limit);
} else {
if (pullMode == 0) {
if (contain) {
sql =
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id='$channelId' and ${WKDBConst.tableMessage}.channel_type=$channelType and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq<=$oldestOrderSeq) where is_deleted=0 and is_mutual_deleted=0 order by order_seq desc limit 0,$limit";
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id=? and ${WKDBConst.tableMessage}.channel_type=? and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq<=?) where is_deleted=0 and is_mutual_deleted=0 order by order_seq desc limit 0,?";
} else {
sql =
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id='$channelId' and ${WKDBConst.tableMessage}.channel_type=$channelType and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq<$oldestOrderSeq) where is_deleted=0 and is_mutual_deleted=0 order by order_seq desc limit 0,$limit";
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id=? and ${WKDBConst.tableMessage}.channel_type=? and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq<?) where is_deleted=0 and is_mutual_deleted=0 order by order_seq desc limit 0,?";
}
} else {
if (contain) {
sql =
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id='$channelId' and ${WKDBConst.tableMessage}.channel_type=$channelType and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq>=$oldestOrderSeq) where is_deleted=0 and is_mutual_deleted=0 order by order_seq asc limit 0,$limit";
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id=? and ${WKDBConst.tableMessage}.channel_type=? and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq>=?) where is_deleted=0 and is_mutual_deleted=0 order by order_seq asc limit 0,?";
} else {
sql =
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id='$channelId' and ${WKDBConst.tableMessage}.channel_type=$channelType and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq>$oldestOrderSeq) where is_deleted=0 and is_mutual_deleted=0 order by order_seq asc limit 0,$limit";
"SELECT * FROM (SELECT $messageCols,$extraCols FROM ${WKDBConst.tableMessage} LEFT JOIN ${WKDBConst.tableMessageExtra} on ${WKDBConst.tableMessage}.message_id=${WKDBConst.tableMessageExtra}.message_id WHERE ${WKDBConst.tableMessage}.channel_id=? and ${WKDBConst.tableMessage}.channel_type=? and ${WKDBConst.tableMessage}.type<>0 and ${WKDBConst.tableMessage}.type<>99 AND ${WKDBConst.tableMessage}.order_seq>?) where is_deleted=0 and is_mutual_deleted=0 order by order_seq asc limit 0,?";
}
}
args.add(channelId);
args.add(channelType);
args.add(oldestOrderSeq);
args.add(limit);
}
List<String> messageIds = [];
List<String> replyMsgIds = [];
List<String> fromUIDs = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, args);
if (results.isNotEmpty) {
WKChannel? wkChannel =
@ -468,10 +476,11 @@ class MessageDB {
Future<int> getDeletedCount(int minMessageSeq, int maxMessageSeq,
String channelID, int channelType) async {
String sql =
"select count(*) num from ${WKDBConst.tableMessage} where channel_id='$channelID' and channel_type=$channelType and message_seq>$minMessageSeq and message_seq<$maxMessageSeq and is_deleted=1";
"select count(*) num from ${WKDBConst.tableMessage} where channel_id=? and channel_type=? and message_seq>? and message_seq<? and is_deleted=1";
int num = 0;
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared
.getDB()
.rawQuery(sql, [channelID, channelType, minMessageSeq, maxMessageSeq]);
if (list.isNotEmpty) {
dynamic data = list[0];
num = WKDBConst.readInt(data, 'num');
@ -485,14 +494,15 @@ class MessageDB {
int messageSeq = 0;
if (pullMode == 1) {
sql =
"select message_seq from ${WKDBConst.tableMessage} where channel_id='$channelID' and channel_type=$channelType and order_seq>$oldestOrderSeq and message_seq<>0 order by message_seq desc limit 1";
"select message_seq from ${WKDBConst.tableMessage} where channel_id=? and channel_type=? and order_seq>? and message_seq<>0 order by message_seq desc limit 1";
} else {
sql =
"select message_seq from ${WKDBConst.tableMessage} where channel_id='$channelID' and channel_type=$channelType and order_seq<$oldestOrderSeq and message_seq<>0 order by message_seq asc limit 1";
"select message_seq from ${WKDBConst.tableMessage} where channel_id=? and channel_type=? and order_seq<? and message_seq<>0 order by message_seq asc limit 1";
}
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared
.getDB()
.rawQuery(sql, [channelID, channelType, oldestOrderSeq]);
if (list.isNotEmpty) {
dynamic data = list[0];
messageSeq = WKDBConst.readInt(data, 'message_seq');
@ -563,7 +573,8 @@ class MessageDB {
if (cvList.isNotEmpty) {
WKDBHelper.shared.getDB().transaction((txn) async {
for (int i = 0; i < cvList.length; i++) {
txn.insert(WKDBConst.tableMessage, cvList[i]);
txn.insert(WKDBConst.tableMessage, cvList[i],
conflictAlgorithm: ConflictAlgorithm.replace);
}
});
}
@ -572,8 +583,7 @@ class MessageDB {
Future<List<WKMsg>> queryWithClientMsgNos(List<String> clientMsgNos) async {
List<WKMsg> msgs = [];
StringBuffer sb = StringBuffer();
sb.write(
"select * from ${WKDBConst.tableMessage} where client_msg_no in (");
for (int i = 0, size = clientMsgNos.length; i < size; i++) {
if (i != 0) {
sb.write(",");
@ -582,10 +592,11 @@ class MessageDB {
sb.write(clientMsgNos[i]);
sb.write("'");
}
sb.write(")");
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sb.toString());
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessage,
where: "client_msg_no in (?)",
whereArgs: [sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
msgs.add(WKDBConst.serializeWKMsg(data));
@ -621,12 +632,14 @@ class MessageDB {
WKDBHelper.shared.getDB().transaction((txn) async {
if (insertCVList.isNotEmpty) {
for (int i = 0; i < insertCVList.length; i++) {
txn.insert(WKDBConst.tableMessageExtra, insertCVList[0]);
txn.insert(WKDBConst.tableMessageExtra, insertCVList[0],
conflictAlgorithm: ConflictAlgorithm.replace);
}
if (updateCVList.isNotEmpty) {
for (int i = 0; i < updateCVList.length; i++) {
txn.update(WKDBConst.tableMessageExtra, updateCVList[0],
where: "message_id='${updateCVList[i]['message_id']}'");
where: "message_id=?",
whereArgs: [updateCVList[i]['message_id']]);
}
}
}
@ -639,9 +652,9 @@ class MessageDB {
String channelID, int channelType) async {
int extraVersion = 0;
String sql =
"select max(extra_version) extra_version from ${WKDBConst.tableMessageExtra} where channel_id ='$channelID' and channel_type=$channelType";
"select max(extra_version) extra_version from ${WKDBConst.tableMessageExtra} where channel_id =? and channel_type=?";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelID, channelType]);
if (list.isNotEmpty) {
dynamic data = list[0];
extraVersion = WKDBConst.readInt(data, 'extra_version');
@ -651,10 +664,10 @@ class MessageDB {
Future<List<WKMsgExtra>> queryMsgExtraWithNeedUpload(int needUpload) async {
String sql =
"select * from ${WKDBConst.tableMessageExtra} where needUpload=$needUpload";
"select * from ${WKDBConst.tableMessageExtra} where need_upload=?";
List<WKMsgExtra> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [needUpload]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeMsgExtra(data));
@ -666,10 +679,10 @@ class MessageDB {
Future<WKMsgExtra?> queryMsgExtraWithMsgID(String messageID) async {
WKMsgExtra? msgExtra;
String sql =
"select * from ${WKDBConst.tableMessageExtra} where message_id='$messageID'";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> list = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessageExtra,
where: "message_id=?",
whereArgs: [messageID]);
if (list.isNotEmpty) {
msgExtra = WKDBConst.serializeMsgExtra(list[0]);
}
@ -678,8 +691,6 @@ class MessageDB {
Future<List<WKMsgExtra>> queryMsgExtrasWithMsgIds(List<String> msgIds) async {
StringBuffer sb = StringBuffer();
sb.write(
"select * from ${WKDBConst.tableMessageExtra} where message_id in (");
for (int i = 0, size = msgIds.length; i < size; i++) {
if (i != 0) {
sb.write(",");
@ -688,10 +699,11 @@ class MessageDB {
sb.write(msgIds[i]);
sb.write("'");
}
sb.write(")");
List<WKMsgExtra> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sb.toString());
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessageExtra,
where: "message_id in (?)",
whereArgs: [sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeMsgExtra(data));
@ -713,9 +725,9 @@ class MessageDB {
String channelID, int channelType) async {
WKMsg? wkMsg;
String sql =
"select * from ${WKDBConst.tableMessage} where channel_id='$channelID' and channel_type=$channelType and is_deleted=0 and type<>0 and type<>99 order by order_seq desc limit 1";
"select * from ${WKDBConst.tableMessage} where channel_id=? and channel_type=? and is_deleted=0 and type<>0 and type<>99 order by order_seq desc limit 1";
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelID, channelType]);
if (list.isNotEmpty) {
dynamic data = list[0];
if (data != null) {

View File

@ -1,3 +1,4 @@
import 'package:sqflite/sqflite.dart';
import 'package:wukongimfluttersdk/entity/msg.dart';
import 'const.dart';
@ -10,11 +11,11 @@ class ReactionDB {
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";
"select max(seq) seq from ${WKDBConst.tableMessageReaction} where channel_id=? and channel_type=? limit 0, 1";
int version = 0;
List<Map<String, Object?>> list =
await WKDBHelper.shared.getDB().rawQuery(sql);
await WKDBHelper.shared.getDB().rawQuery(sql, [channelID, channelType]);
if (list.isNotEmpty) {
dynamic data = list[0];
if (data != null) {
@ -25,12 +26,12 @@ class ReactionDB {
}
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);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessageReaction,
where: "message_id=? and is_deleted=0",
whereArgs: [messageId],
orderBy: "created_at desc");
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeMsgReation(data));
@ -51,11 +52,12 @@ class ReactionDB {
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);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessageReaction,
where: "message_id in (?) and is_deleted=0",
whereArgs: [sb.toString()],
orderBy: "created_at desc");
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeMsgReation(data));
@ -86,22 +88,22 @@ class ReactionDB {
map['seq'] = reaction.seq;
map['emoji'] = reaction.emoji;
WKDBHelper.shared.getDB().update(WKDBConst.tableMessageReaction, map,
where: "message_id='${reaction.messageID}' and uid='${reaction.uid}'");
where: "message_id=? and uid=?",
whereArgs: [reaction.messageID, reaction.uid]);
}
insertReaction(WKMsgReaction reaction) {
WKDBHelper.shared
.getDB()
.insert(WKDBConst.tableMessageReaction, getReactionMap(reaction));
WKDBHelper.shared.getDB().insert(
WKDBConst.tableMessageReaction, getReactionMap(reaction),
conflictAlgorithm: ConflictAlgorithm.replace);
}
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);
List<Map<String, Object?>> list = await WKDBHelper.shared.getDB().query(
WKDBConst.tableMessageReaction,
where: "message_id=? and uid=?",
whereArgs: [messageID, uid]);
if (list.isNotEmpty) {
isExist = true;
}

View File

@ -1,6 +1,7 @@
import 'dart:collection';
import 'dart:convert';
import 'package:sqflite/sqflite.dart';
import 'package:wukongimfluttersdk/db/const.dart';
import 'package:wukongimfluttersdk/db/conversation.dart';
import 'package:wukongimfluttersdk/db/wk_db_helper.dart';
@ -32,12 +33,12 @@ class ReminderDB {
Future<List<WKReminder>> queryWithChannel(
String channelID, int channelType, int done) async {
String sql =
"select * from ${WKDBConst.tableReminders} where channel_id='$channelID' and channel_type=$channelType and done=$done order by message_seq desc";
List<WKReminder> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableReminders,
where: "channel_id=? and channel_type=? and done=?",
whereArgs: [channelID, channelType, done],
orderBy: "message_seq desc");
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeReminder(data));
@ -84,7 +85,8 @@ class ReminderDB {
WKDBHelper.shared.getDB().transaction((txn) async {
if (addList.isNotEmpty) {
for (Map<String, dynamic> value in addList) {
txn.insert(WKDBConst.tableReminders, value);
txn.insert(WKDBConst.tableReminders, value,
conflictAlgorithm: ConflictAlgorithm.replace);
}
}
if (updateList.isNotEmpty) {
@ -119,16 +121,17 @@ class ReminderDB {
StringBuffer sb = StringBuffer();
for (int i = 0, size = channelIds.length; i < size; i++) {
if (i != 0) {
sb.write("'");
sb.write(",");
}
sb.write("'");
sb.write(channelIds[i]);
sb.write("'");
}
String sql =
"select * from ${WKDBConst.tableReminders} where channel_id in (${sb.toString()})";
List<WKReminder> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableReminders,
where: "channel_id in (?)",
whereArgs: [sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeReminder(data));
@ -145,11 +148,11 @@ class ReminderDB {
}
sb.write(ids[i]);
}
String sql =
"select * from ${WKDBConst.tableReminders} where reminder_id in (${sb.toString()})";
List<WKReminder> list = [];
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB().rawQuery(sql);
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB().query(
WKDBConst.tableReminders,
where: "reminder_id in (?)",
whereArgs: [sb.toString()]);
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeReminder(data));

View File

@ -16,9 +16,8 @@ class WKChannelManager {
fetchChannelInfo(String channelID, int channelType) {
if (_getChannelInfoBack != null) {
_getChannelInfoBack!(channelID, channelType, (liMChannel) {
addOrUpdateChannel(liMChannel);
ChannelDB.shared.saveOrUpdate(liMChannel);
_getChannelInfoBack!(channelID, channelType, (wkChannel) {
addOrUpdateChannel(wkChannel);
});
}
}

View File

@ -233,6 +233,7 @@ class WKConnectionManager {
_decodePacket(Uint8List data) {
var packet = WKIM.shared.options.proto.decode(data);
Logs.debug('解码出包->$packet');
Logs.debug('解码出包类型->${packet.header.packetType}');
if (packet.header.packetType == PacketType.connack) {
var connackPacket = packet as ConnackPacket;
if (connackPacket.reasonCode == 1) {
@ -276,6 +277,7 @@ class WKConnectionManager {
}
_closeAll() {
_isLogout = true;
WKIM.shared.options.uid = '';
WKIM.shared.options.token = '';
WKIM.shared.messageManager.updateSendingMsgFail();

View File

@ -131,6 +131,9 @@ class RecvPacket extends Packet {
class DisconnectPacket extends Packet {
int reasonCode = 0;
String reason = "";
DisconnectPacket() {
header.packetType = PacketType.disconnect;
}
}
class PingPacket extends Packet {

View File

@ -171,7 +171,6 @@ Uint8List encodeSend(SendPacket packet) {
Uint8List encodeRecvAck(RecvAckPacket packet) {
WriteData write = WriteData();
print("发送ack ${packet.messageID}");
write.writeUint64(packet.messageID);
write.writeUint32(packet.messageSeq);
return write.toUint8List();

View File

@ -15,7 +15,7 @@ description: wukong IM flutter sdk
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.2.0
version: 1.2.1
homepage: https://github.com/WuKongIM/WuKongIMFlutterSDK
environment: