diff --git a/Signal/src/ViewControllers/HomeView/HomeViewController.m b/Signal/src/ViewControllers/HomeView/HomeViewController.m index 47d14ae88e..b597720847 100644 --- a/Signal/src/ViewControllers/HomeView/HomeViewController.m +++ b/Signal/src/ViewControllers/HomeView/HomeViewController.m @@ -749,7 +749,7 @@ NSString *const kArchiveButtonPseudoGroup = @"kArchiveButtonPseudoGroup"; if (self.viewState.multiSelectState.isActive) { [self.tableView setEditing:YES animated:NO]; - [self.tableView reloadData]; + [self reloadTableData]; [self willEnterMultiselectMode]; } else { [self applyDefaultBackButton]; diff --git a/Signal/src/ViewControllers/HomeView/HomeViewController.swift b/Signal/src/ViewControllers/HomeView/HomeViewController.swift index f7e3ba57d4..619f02856d 100644 --- a/Signal/src/ViewControllers/HomeView/HomeViewController.swift +++ b/Signal/src/ViewControllers/HomeView/HomeViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2021 Open Whisper Systems. All rights reserved. +// Copyright (c) 2022 Open Whisper Systems. All rights reserved. // import Foundation @@ -22,7 +22,30 @@ public extension HomeViewController { func reloadTableData() { AssertIsOnMainThread() + var selectedThreadIds: Set = [] + for indexPath in tableView.indexPathsForSelectedRows ?? [] { + if let key = tableDataSource.threadViewModel(forIndexPath: indexPath, expectsSuccess: false)?.threadRecord.uniqueId { + selectedThreadIds.insert(key) + } + } + tableView.reloadData() + + if !selectedThreadIds.isEmpty { + var threadIdsToBeSelected = selectedThreadIds + for section in 0..