diff --git a/lib/pages/settings_ignore_list/settings_ignore_list.dart b/lib/pages/settings_ignore_list/settings_ignore_list.dart index 1d0cc742f..c55987e34 100644 --- a/lib/pages/settings_ignore_list/settings_ignore_list.dart +++ b/lib/pages/settings_ignore_list/settings_ignore_list.dart @@ -43,9 +43,25 @@ class SettingsIgnoreListController extends State { errorText = null; }); + final client = Matrix.of(context).client; showFutureLoadingDialog( context: context, - future: () => Matrix.of(context).client.ignoreUser(userId), + future: () async { + for (final room in client.rooms) { + final isInviteFromUser = room.membership == Membership.invite && + room.getState(EventTypes.RoomMember, client.userID!)?.senderId == + userId; + + if (room.directChatMatrixID == userId || isInviteFromUser) { + try { + await room.leave(); + } catch (e, s) { + Logs().w('Unable to leave room with blocked user $userId', e, s); + } + } + } + await client.ignoreUser(userId); + }, ); setState(() {}); controller.clear();