Refactor SecureBackupControllerListener into SDKListener and use it everywhere. (#4030)

This commit is contained in:
Doug
2025-04-16 08:36:57 +01:00
committed by GitHub
parent c5bb960234
commit 8c9773e4de
11 changed files with 125 additions and 171 deletions
@@ -57,7 +57,7 @@ class TimelineProvider: TimelineProviderProtocol {
.store(in: &cancellables)
Task {
roomTimelineObservationToken = await timeline.addListener(listener: RoomTimelineListener { [weak self] timelineDiffs in
roomTimelineObservationToken = await timeline.addListener(listener: SDKListener { [weak self] timelineDiffs in
self?.serialDispatchQueue.sync {
self?.updateItemsWithDiffs(timelineDiffs)
}
@@ -215,18 +215,6 @@ private extension VirtualTimelineItem {
}
}
private final class RoomTimelineListener: TimelineListener {
private let onUpdateClosure: ([TimelineDiff]) -> Void
init(_ onUpdateClosure: @escaping ([TimelineDiff]) -> Void) {
self.onUpdateClosure = onUpdateClosure
}
func onUpdate(diff: [TimelineDiff]) {
onUpdateClosure(diff)
}
}
private extension Array where Element == TimelineDiff {
var debugDescription: String {
"[" + map(\.debugDescription).joined(separator: ",") + "]"
@@ -577,7 +577,7 @@ final class TimelineProxy: TimelineProxyProtocol {
private func subscribeToPagination() async {
switch kind {
case .live:
let backPaginationListener = RoomPaginationStatusListener { [weak self] status in
let backPaginationListener = SDKListener<RoomPaginationStatus> { [weak self] status in
guard let self else {
return
}
@@ -610,32 +610,6 @@ final class TimelineProxy: TimelineProxyProtocol {
}
}
private final class RoomPaginationStatusListener: PaginationStatusListener {
private let onUpdateClosure: (RoomPaginationStatus) -> Void
init(_ onUpdateClosure: @escaping (RoomPaginationStatus) -> Void) {
self.onUpdateClosure = onUpdateClosure
}
func onUpdate(status: RoomPaginationStatus) {
onUpdateClosure(status)
}
}
private final class UploadProgressListener: ProgressWatcher {
private let onUpdateClosure: (Double) -> Void
init(_ onUpdateClosure: @escaping (Double) -> Void) {
self.onUpdateClosure = onUpdateClosure
}
func transmissionProgress(progress: TransmissionProgress) {
DispatchQueue.main.async { [weak self] in
self?.onUpdateClosure(Double(progress.current) / Double(progress.total))
}
}
}
private extension MatrixRustSDK.PollKind {
init(pollKind: Poll.Kind) {
switch pollKind {