From c8c455bb5795701a51cfde42623a36dc9c7f08cd Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 23 Feb 2025 12:03:17 +0800 Subject: [PATCH] :bug: Make sure the send read event triggered before dispose chat message controller --- lib/controllers/chat_message_controller.dart | 29 ++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/controllers/chat_message_controller.dart b/lib/controllers/chat_message_controller.dart index d95a908..5e1fb5e 100644 --- a/lib/controllers/chat_message_controller.dart +++ b/lib/controllers/chat_message_controller.dart @@ -514,23 +514,30 @@ class ChatMessageController extends ChangeNotifier { } _readEventDebounce = Timer(const Duration(milliseconds: 500), () { - _ws.conn?.sink.add(jsonEncode( - WebSocketPackage( - method: 'events.read', - endpoint: 'im', - payload: { - 'channel_member_id': profile!.id, - 'event_id': _readEventAnchor, - }, - ).toJson(), - )); - log('[Messaging] Send read event request: $_readEventAnchor'); + _sendReadEvent(); }); } + void _sendReadEvent() { + _ws.conn?.sink.add(jsonEncode( + WebSocketPackage( + method: 'events.read', + endpoint: 'im', + payload: { + 'channel_member_id': profile!.id, + 'event_id': _readEventAnchor, + }, + ).toJson(), + )); + log('[Messaging] Send read event request: $_readEventAnchor'); + } + @override void dispose() { _wsSubscription?.cancel(); + if (_readEventDebounce?.isActive ?? false) { + _sendReadEvent(); + } _readEventDebounce?.cancel(); super.dispose(); }