field_ios

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

TeraNativeRecoveryScheduleTestStorage.swift (1357B)


      1 import Foundation
      2 @testable import TeraApp
      3 
      4 actor NativeRecoveryScheduleTestStorage {
      5   private var value = TeraNativeRecoverySchedule(author: String(repeating: "a", count: 64), revision: 0, after: nil)
      6 
      7   func load() -> TeraNativeRecoverySchedule {
      8     value
      9   }
     10 
     11   func advance(expected: TeraNativeRecoverySchedule, after: String?) throws -> TeraNativeRecoverySchedule {
     12     guard expected == value else { throw TeraComposerAcknowledgment.unconfirmed }
     13     value = .init(author: value.author, revision: value.revision + (value.after == after ? 0 : 1), after: after)
     14     return value
     15   }
     16 }
     17 
     18 extension TeraScopeBackend {
     19   func nativeRecoverySchedule() async -> TeraNativeRecoverySchedule {
     20     await recoveryScheduleStorage.load()
     21   }
     22 
     23   func advanceNativeRecoverySchedule(expected: TeraNativeRecoverySchedule, after: String?) async throws -> TeraNativeRecoverySchedule {
     24     try await recoveryScheduleStorage.advance(expected: expected, after: after)
     25   }
     26 }
     27 
     28 extension AddBackend {
     29   func nativeRecoverySchedule() async -> TeraNativeRecoverySchedule {
     30     await submissionBackend.recoveryScheduleStorage.load()
     31   }
     32 
     33   func advanceNativeRecoverySchedule(expected: TeraNativeRecoverySchedule, after: String?) async throws -> TeraNativeRecoverySchedule {
     34     try await submissionBackend.recoveryScheduleStorage.advance(expected: expected, after: after)
     35   }
     36 }