From cbae6b9c843ab7c6d90c47b48804f1474badd400 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Thu, 5 Nov 2020 14:00:06 +0100 Subject: [PATCH] fix: Better handling leave broken room on join --- lib/matrix_api/model/sync_update.dart | 2 ++ lib/src/room.dart | 14 ++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/matrix_api/model/sync_update.dart b/lib/matrix_api/model/sync_update.dart index e94a1266..c4a6310b 100644 --- a/lib/matrix_api/model/sync_update.dart +++ b/lib/matrix_api/model/sync_update.dart @@ -227,6 +227,8 @@ class LeftRoomUpdate extends SyncRoomUpdate { TimelineUpdate timeline; List accountData; + LeftRoomUpdate(); + LeftRoomUpdate.fromJson(Map json) { state = (json['state'] != null && json['state']['events'] != null) ? (json['state']['events'] as List) diff --git a/lib/src/room.dart b/lib/src/room.dart index 56a41e4f..df06f6cc 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -33,7 +33,6 @@ import 'utils/logs.dart'; import 'utils/markdown.dart'; import 'utils/matrix_file.dart'; import 'utils/matrix_localizations.dart'; -import 'utils/room_update.dart'; import 'utils/states_map.dart'; enum PushRuleState { notify, mentions_only, dont_notify } @@ -812,13 +811,12 @@ class Room { if (removeIfNotFound && [MatrixError.M_NOT_FOUND, MatrixError.M_UNKNOWN] .contains(exception.error)) { - await client.database?.forgetRoom(client.id, id); - client.onRoomUpdate.add( - RoomUpdate( - id: id, - membership: Membership.leave, - notification_count: 0, - highlight_count: 0), + await _handleFakeSync( + SyncUpdate() + ..rooms = (RoomsUpdate() + ..leave = { + '$id': (LeftRoomUpdate()), + }), ); } rethrow;