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;