From f83637ec07ff84d68986bb100c37e8c448107eaf Mon Sep 17 00:00:00 2001 From: Elaine <138257830+elaine-signal@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:20:15 -0600 Subject: [PATCH] Improve handling of missing cell data in call members list --- Signal/Calls/UserInterface/CallDrawerSheet.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Signal/Calls/UserInterface/CallDrawerSheet.swift b/Signal/Calls/UserInterface/CallDrawerSheet.swift index c8a208d500..2c380ba093 100644 --- a/Signal/Calls/UserInterface/CallDrawerSheet.swift +++ b/Signal/Calls/UserInterface/CallDrawerSheet.swift @@ -195,6 +195,7 @@ class CallDrawerSheet: InteractiveSheetViewController { guard let viewModel = self?.viewModelsByID[memberID] else { owsFailDebug("missing view model") + cell.hideContent() return cell } @@ -376,6 +377,9 @@ class CallDrawerSheet: InteractiveSheetViewController { let oldMemberIDs = viewModelsByID.keys let newMemberIDs = sortedMembers.map(\.id) let viewModelsToRemove = Set(oldMemberIDs).subtracting(newMemberIDs) + if !viewModelsToRemove.isEmpty { + Logger.info("Removing \(viewModelsToRemove.count) view models") + } viewModelsToRemove.forEach { viewModelsByID.removeValue(forKey: $0) } viewModelsByID = sortedMembers.reduce(into: viewModelsByID) { partialResult, member in @@ -389,6 +393,7 @@ class CallDrawerSheet: InteractiveSheetViewController { } func updateMembers() { + Logger.info("") let unsortedMembers: [JoinedMember] = databaseStorage.read { callSheetDataSource.unsortedMembers(tx: $0.asV2Read) } @@ -476,9 +481,11 @@ class CallDrawerSheet: InteractiveSheetViewController { } // Apply snapshot + Logger.info("Applying snapshot") if self.previousSnapshotItems != snapshot.itemIdentifiers { self.previousSnapshotItems = snapshot.itemIdentifiers dataSource.apply(snapshot, animatingDifferences: true) { [weak self] in + Logger.info("Snapshot applied") self?.refreshMaxHeight() } } @@ -1023,6 +1030,14 @@ private class GroupCallMemberCell: UITableViewCell, ReusableTableViewCell { } } + func hideContent() { + self.raisedHandIndicator.isHidden = true + self.lowerHandButton.isHiddenInStackView = true + self.audioMutedIndicator.isHidden = true + self.leadingWrapper.isHiddenInStackView = true + self.removeUserButton.isHiddenInStackView = true + } + private func subscribe(to publisher: Published.Publisher, showing view: UIView) { publisher .removeDuplicates()