field_ios

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

TeraPublicationActions.swift (1823B)


      1 import Foundation
      2 
      3 extension TeraSubmissionStore {
      4   var canContinue: Bool {
      5     hasAction && !isWorking && status?.canOfferContinuation != false
      6   }
      7 
      8   var actionLabel: String {
      9     if isWorking {
     10       return "Submitting captured form…"
     11     }
     12     if status?.canOfferContinuation != false {
     13       return "Continue original submission"
     14     }
     15     switch status?.retry {
     16     case .complete: return "Delivery policy complete"
     17     case .stopped: return "Publication stopped"
     18     case .deferredUntil, .inFlightUntil: return "Publication waiting"
     19     case .needsAction: return "Publication needs attention"
     20     default: return "Review saved submission"
     21     }
     22   }
     23 
     24   var actionExplanation: String {
     25     [status?.summary, status?.retry.explanation, message]
     26       .compactMap(\.self).joined(separator: " ")
     27   }
     28 }
     29 
     30 extension TeraAddStore {
     31   var submitAccessibilityValue: String {
     32     if activeDraft == nil, submissions.usesCurrentAction {
     33       let message = submissions.actionExplanation
     34       if let code = submissions.failureCode {
     35         return "\(message) Error code \(code)"
     36       }
     37       return message
     38     }
     39     if isWorking {
     40       return "Working"
     41     }
     42     if let message {
     43       if let code = lastFailureCode {
     44         return "\(message) Error code \(code)"
     45       }
     46       return message
     47     }
     48     if let activeDraft {
     49       return activeDraft.honestSummary
     50     }
     51     return canSubmit ? "Ready" : "Unavailable"
     52   }
     53 
     54   var submitLabel: String {
     55     if activeDraft == nil, submissions.usesCurrentAction {
     56       return submissions.actionLabel
     57     }
     58     if activeDraft?.kind == .retraction {
     59       return "Retry retraction"
     60     }
     61     if activeDraft?.coordinateWritable == false {
     62       return "Publication held"
     63     }
     64     if activeDraft?.canAdvance == true {
     65       return "Retry delivery"
     66     }
     67     return "Submit"
     68   }
     69 }