field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

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 }