field_ios

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

FieldRuntimeError.swift (1389B)


      1 import Foundation
      2 
      3 enum FieldRuntimeErrorCategory: String, Sendable {
      4     case initialization
      5     case identity
      6     case secureStore
      7     case relay
      8     case runtime
      9     case unsupported
     10     case internalFailure
     11 }
     12 
     13 extension RadrootsAppError {
     14     var fieldCategory: FieldRuntimeErrorCategory {
     15         switch self {
     16         case .Initialization(_):
     17             .initialization
     18         case .Identity(_):
     19             .identity
     20         case .SecureStore(_):
     21             .secureStore
     22         case .Relay(_):
     23             .relay
     24         case .Runtime(_):
     25             .runtime
     26         case .Unsupported(_):
     27             .unsupported
     28         case .Internal(_):
     29             .internalFailure
     30         }
     31     }
     32 
     33     var fieldMessage: String {
     34         switch self {
     35         case .Initialization(let message),
     36              .Identity(let message),
     37              .SecureStore(let message),
     38              .Relay(let message),
     39              .Runtime(let message),
     40              .Unsupported(let message),
     41              .Internal(let message):
     42             message
     43         }
     44     }
     45 }
     46 
     47 extension Error {
     48     var fieldRuntimeErrorCategory: FieldRuntimeErrorCategory? {
     49         (self as? RadrootsAppError)?.fieldCategory
     50     }
     51 
     52     var fieldRuntimeMessage: String {
     53         if let fieldError = self as? RadrootsAppError {
     54             return fieldError.fieldMessage
     55         }
     56         return localizedDescription
     57     }
     58 }