field_ios

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

TeraTodayRelayPresentation.swift (1370B)


      1 import Foundation
      2 
      3 extension TeraTodayPresentation {
      4   var relayMessages: [String] {
      5     guard let receipt = relayReceipt else { return [] }
      6     let message: String
      7     switch receipt.relayState {
      8     case .complete: return []
      9     case .partial: message = "Refresh incomplete. Showing available posts."
     10     case .offline: message = "Network refresh unavailable. Showing saved posts."
     11     }
     12     return [message] + receipt.targets.enumerated().map { index, target in
     13       "Relay \(index + 1): \(target.statusMessage)"
     14     }
     15   }
     16 }
     17 
     18 extension TeraTodayTargetSyncReceipt {
     19   var statusMessage: String {
     20     guard let summary, summary.pagesObserved > 0 else { return "Response unconfirmed." }
     21     if summary.missingOutcomePages > 0 {
     22       return "Some responses unconfirmed."
     23     }
     24     if let state = summary.lastIncomplete {
     25       switch state {
     26       case .complete: return "Response unconfirmed."
     27       case .partial: return "Some requested posts were unavailable."
     28       case .unavailable: return "A response was unavailable."
     29       case .failedRetryable: return "A response failed. Try again."
     30       case .failedTerminal: return "A response failed."
     31       case .cancelled: return "A request was cancelled."
     32       }
     33     }
     34     guard summary.incompletePages == 0, finalState == .complete else { return "Response unconfirmed." }
     35     return "Returned pages finished."
     36   }
     37 }