TeraDraftStatus.swift (1294B)
1 import Foundation 2 3 struct TeraDraftStatus: Sendable, Equatable, Hashable, Identifiable { 4 let id: String 5 let revision: UInt64 6 let authorPublicKey: String 7 let kind: TeraDraftKind 8 let commandType: TeraAddCommandType 9 let form: TeraAddForm? 10 let state: TeraOutboxState 11 let cardID: String 12 let operationID: String? 13 let createdAtUnixMilliseconds: UInt64 14 let updatedAtUnixMilliseconds: UInt64 15 let media: [TeraDraftMediaStatus] 16 let settlement: TeraOperationSettlement? 17 let isRevision: Bool 18 var revisionParentID: String? 19 var coordinateWritable = true 20 var coordinateCaptured = false 21 22 var canAdvance: Bool { 23 coordinateWritable && state.canAdvance 24 } 25 26 var canQueue: Bool { 27 coordinateWritable && (state.isEditable || state == .readyToSign) 28 } 29 30 var isEditable: Bool { 31 !coordinateCaptured && state.isEditable 32 } 33 34 var honestSummary: String { 35 if !coordinateWritable, ![.complete, .cancelled, .terminal].contains(state) { 36 return TeraPublicationActionReason.coordinateChanged.explanation 37 } 38 if isRevision { 39 return "Saved revision; open Drafts & outbox for current relay outcomes." 40 } 41 if revisionParentID != nil { 42 return "Retraction belongs to a saved revision." 43 } 44 return state.summary(settlement: settlement) 45 } 46 }