diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d46ec9..2a9521b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -118,5 +118,7 @@ * fix: Add query total unread quantity and query followed channels ### 1.5.9 * fix: Modify network monitoring + ### 1.6.0 + * fix: Error in modifying the channel extension data synchronized to the most recent session ### 1.6.1 * fix: 修复网络切换时有时无法连接问题 \ No newline at end of file diff --git a/example/lib/ui_conversation.dart b/example/lib/ui_conversation.dart index 0db5495..2a9bd24 100644 --- a/example/lib/ui_conversation.dart +++ b/example/lib/ui_conversation.dart @@ -319,7 +319,7 @@ class ListViewShowDataState extends State { Navigator.push( context, MaterialPageRoute( - builder: (_) => const ChatPage(), + builder: (context) => const ChatPage(), settings: RouteSettings( arguments: ChatChannel( msgList[pos].msg.channelID, @@ -371,15 +371,15 @@ class ListViewShowDataState extends State { _showDialog(BuildContext context) { showDialog( context: context, - builder: (BuildContext _context) => InputDialog( + builder: (BuildContext ctx) => InputDialog( title: const Text("创建新的聊天"), back: (channelID, channelType) async { bool isSuccess = await HttpUtils.createGroup(channelID); if (isSuccess) { Navigator.push( - context, + ctx, MaterialPageRoute( - builder: (context) => ChatPage(), + builder: (context) => const ChatPage(), settings: RouteSettings( arguments: ChatChannel( channelID, diff --git a/example/lib/ui_main.dart b/example/lib/ui_main.dart index 0dc3ab8..a0427ac 100644 --- a/example/lib/ui_main.dart +++ b/example/lib/ui_main.dart @@ -43,7 +43,6 @@ class MyApp extends StatelessWidget { class LoginDemo extends StatefulWidget { const LoginDemo({super.key}); - @override LoginDemoState createState() => LoginDemoState(); } @@ -52,7 +51,9 @@ class LoginDemoState extends State { var apiStr = ''; var uidStr = ''; var tokenStr = ''; - + LoginDemoState() { + WKIM.shared.connectionManager.disconnect(false); + } @override Widget build(BuildContext context) { return Scaffold( @@ -156,10 +157,10 @@ class LoginDemoState extends State { UserInfo.uid = uidStr; IMUtils.initIM().then((result) { if (result) { - Navigator.push( + Navigator.pushAndRemoveUntil( context, - MaterialPageRoute( - builder: (_) => const HomePage())); + MaterialPageRoute(builder: (_) => const HomePage()), + (Route route) => false); } }); } diff --git a/lib/db/channel.dart b/lib/db/channel.dart index a0459bd..fd5e1ca 100644 --- a/lib/db/channel.dart +++ b/lib/db/channel.dart @@ -160,8 +160,11 @@ class ChannelDB { Future> queryWithMuted() async { List list = []; var sql = "select * from ${WKDBConst.tableChannel} where mute=1"; - List> results = - await WKDBHelper.shared.getDB()!.rawQuery(sql); + List>? results = + await WKDBHelper.shared.getDB()?.rawQuery(sql); + if (results == null || results.isEmpty) { + return list; + } for (Map data in results) { var channel = WKDBConst.serializeChannel(data); list.add(channel); diff --git a/lib/db/conversation.dart b/lib/db/conversation.dart index efdb91b..61da354 100644 --- a/lib/db/conversation.dart +++ b/lib/db/conversation.dart @@ -32,6 +32,9 @@ class ConversationDB { for (Map data in results) { WKConversationMsg msg = WKDBConst.serializeCoversation(data); WKChannel wkChannel = WKDBConst.serializeChannel(data); + wkChannel.remoteExtraMap = + WKDBConst.readDynamic(data, 'channel_remote_extra'); + wkChannel.localExtra = WKDBConst.readDynamic(data, 'channel_extra'); WKUIConversationMsg uiMsg = getUIMsg(msg); uiMsg.setWkChannel(wkChannel); list.add(uiMsg); @@ -102,7 +105,7 @@ class ConversationDB { var channels = await ChannelDB.shared.queryWithMuted(); var channelIds = []; var sql = ""; - List> list; + List>? list; if (channels.isNotEmpty) { for (var channel in channels) { channelIds.add(channel.channelID); @@ -113,13 +116,14 @@ class ConversationDB { } else { sql = "select SUM(unread_count) count from ${WKDBConst.tableConversation}"; - list = await WKDBHelper.shared.getDB()!.rawQuery(sql); + list = await WKDBHelper.shared.getDB()?.rawQuery(sql); } - if (list.isNotEmpty) { - dynamic data = list[0]; - count = WKDBConst.readInt(data, 'count'); - Logs.error('总数量$count'); + if (list == null || list.isEmpty) { + return count; } + dynamic data = list[0]; + count = WKDBConst.readInt(data, 'count'); + Logs.error('总数量$count'); return count; } diff --git a/lib/db/reminder.dart b/lib/db/reminder.dart index f318df8..a597c62 100644 --- a/lib/db/reminder.dart +++ b/lib/db/reminder.dart @@ -34,15 +34,17 @@ class ReminderDB { Future> queryWithChannel( String channelID, int channelType, int done) async { List list = []; - List> 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 data in results) { - list.add(WKDBConst.serializeReminder(data)); - } + List>? 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 == null || results.isEmpty) { + return list; + } + for (Map data in results) { + list.add(WKDBConst.serializeReminder(data)); } return list; }