Add back verbose logging for the timeline provider to help debug the event cache and lazy loading.

This commit is contained in:
Stefan Ceriu
2025-02-04 09:04:24 +02:00
parent 61ca5c35f7
commit 437d16792d

View File

@@ -85,6 +85,8 @@ class TimelineProvider: TimelineProviderProtocol {
span.exit()
}
MXLog.verbose("Received diffs: \(diffs)")
itemProxies = diffs.reduce(itemProxies) { currentItems, diff in
guard let collectionDiff = buildDiff(from: diff, on: currentItems) else {
MXLog.error("Failed building CollectionDifference from \(diff)")
@@ -222,3 +224,53 @@ private final class RoomTimelineListener: TimelineListener {
onUpdateClosure(diff)
}
}
private extension Array where Element == TimelineDiff {
var debugDescription: String {
"[" + map(\.debugDescription).joined(separator: ",") + "]"
}
}
extension TimelineDiff: @retroactive CustomDebugStringConvertible {
public var debugDescription: String {
switch change() {
case .append:
guard let update = append() else {
fatalError()
}
return "Append(\(update.count))"
case .clear:
return "Clear"
case .insert:
return "Insert"
case .set:
guard let update = set() else {
fatalError()
}
return "Set(\(update.index))"
case .remove:
guard let update = remove() else {
fatalError()
}
return "Remove(\(update)"
case .pushBack:
return "PushBack"
case .pushFront:
return "PushFront"
case .popBack:
return "PopBack"
case .popFront:
return "PopFront"
case .truncate:
guard let update = truncate() else {
fatalError()
}
return "Truncate(\(update))"
case .reset:
guard let update = reset() else {
fatalError()
}
return "Reset(\(update.count)@\(update.startIndex)-\(update.endIndex))"
}
}
}