Improve handling of missing cell data in call members list

This commit is contained in:
Elaine 2024-10-11 10:20:15 -06:00 committed by GitHub
parent 114afd8fe8
commit f83637ec07
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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<Bool>.Publisher, showing view: UIView) {
publisher
.removeDuplicates()