Refactor theTimelineItemIdentifier handling; stop relying on optional EventOrTransactionIds and be explicit when setting composer modes from the draft service.

This commit is contained in:
Stefan Ceriu
2024-10-16 14:07:54 +03:00
parent 3d797ccabb
commit 35d49c4d85
56 changed files with 313 additions and 298 deletions
@@ -6,6 +6,7 @@
//
import Compound
import MatrixRustSDK
import SwiftUI
import WysiwygComposer
@@ -283,9 +284,14 @@ extension FormatType {
}
enum ComposerMode: Equatable {
enum EditSource {
case timeline
case draftService
}
case `default`
case reply(itemID: TimelineItemIdentifier, replyDetails: TimelineItemReplyDetails, isThread: Bool)
case edit(originalItemId: TimelineItemIdentifier)
case reply(eventID: String, replyDetails: TimelineItemReplyDetails, isThread: Bool)
case edit(originalEventOrTransactionID: EventOrTransactionId, source: EditSource)
case recordVoiceMessage(state: AudioRecorderState)
case previewVoiceMessage(state: AudioPlayerState, waveform: WaveformSource, isUploading: Bool)
@@ -323,8 +329,8 @@ enum ComposerMode: Equatable {
var replyEventID: String? {
switch self {
case .reply(let itemID, _, _):
return itemID.eventID
case .reply(let eventID, _, _):
return eventID
default:
return nil
}