Move message forwarding out of the flow coordinator. (#2738)

This commit is contained in:
Doug
2024-05-07 15:04:11 +01:00
committed by GitHub
parent eac2552ab5
commit e829a3ded6
13 changed files with 140 additions and 92 deletions
@@ -18,6 +18,7 @@
import Combine
import Foundation
import MatrixRustSDK
class MockRoomTimelineController: RoomTimelineControllerProtocol {
/// An array of timeline item arrays that will be inserted in order for each back pagination request.
@@ -99,6 +100,10 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol {
func redact(_ itemID: TimelineItemIdentifier) async { }
func messageEventContent(for itemID: TimelineItemIdentifier) -> RoomMessageEventContentWithoutRelation? {
.init(noPointer: .init())
}
func debugInfo(for itemID: TimelineItemIdentifier) -> TimelineItemDebugInfo {
.init(model: "Mock debug description", originalJSON: nil, latestEditJSON: nil)
}
@@ -227,6 +227,14 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
}
func messageEventContent(for itemID: TimelineItemIdentifier) async -> RoomMessageEventContentWithoutRelation? {
guard let eventID = itemID.eventID else {
MXLog.warning("The item doesn't have an event ID.")
return nil
}
return await activeTimeline.messageEventContent(for: eventID)
}
// Handle this parallel to the timeline items so we're not forced
// to bundle the Rust side objects within them
func debugInfo(for itemID: TimelineItemIdentifier) -> TimelineItemDebugInfo {
@@ -15,8 +15,8 @@
//
import Combine
import Foundation
import UIKit
import MatrixRustSDK
import SwiftUI
enum RoomTimelineControllerCallback {
case updatedTimelineItems(timelineItems: [RoomTimelineItemProtocol], isSwitchingTimelines: Bool)
@@ -68,6 +68,8 @@ protocol RoomTimelineControllerProtocol {
func redact(_ itemID: TimelineItemIdentifier) async
func messageEventContent(for itemID: TimelineItemIdentifier) async -> RoomMessageEventContentWithoutRelation?
func debugInfo(for itemID: TimelineItemIdentifier) -> TimelineItemDebugInfo
func retryDecryption(for sessionID: String) async