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 }