// // Copyright 2025 Element Creations Ltd. // Copyright 2023-2025 New Vector Ltd. // // SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. // Please see LICENSE files in the repository root for full details. // import Foundation nonisolated struct TimelineItemReply { let details: TimelineItemReplyDetails let isThreaded: Bool } nonisolated enum TimelineItemReplyDetails: Hashable { case notLoaded(eventID: String) case loading(eventID: String) case loaded(sender: TimelineItemSender, eventID: String, eventContent: TimelineEventContent) case error(eventID: String, message: String) var eventID: String { switch self { case .notLoaded(let eventID), .loading(let eventID), .loaded(_, let eventID, _), .error(let eventID, _): return eventID } } }