Skip to content
Snippets Groups Projects
Select Git revision
  • c381331529de5fd3b3ca357d3482223be78fcac5
  • main default protected
  • development
  • integration
  • v1.1.5
  • v1.1.4
  • v1.1.3
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.0
11 results

MessengerStartBackup.swift

Blame
  • MessengerMyContact.swift 1.21 KiB
    import XCTestDynamicOverlay
    import XXClient
    
    public struct MessengerMyContact {
      public enum IncludeFacts: Equatable {
        case all
        case types(Set<FactType>)
      }
    
      public enum Error: Swift.Error {
        case notConnected
        case notLoggedIn
      }
    
      public var run: (IncludeFacts?) throws -> XXClient.Contact
    
      public func callAsFunction(includeFacts: IncludeFacts? = .all) throws -> XXClient.Contact {
        try run(includeFacts)
      }
    }
    
    extension MessengerMyContact {
      public static func live(_ env: MessengerEnvironment) -> MessengerMyContact {
        MessengerMyContact { includeFacts in
          guard let e2e = env.e2e() else {
            throw Error.notConnected
          }
          var contact = e2e.getContact()
          if let includeFacts {
            guard let ud = env.ud() else {
              throw Error.notLoggedIn
            }
            let udFacts = try ud.getFacts()
            switch includeFacts {
            case .all:
              try contact.setFacts(udFacts)
    
            case .types(let types):
              try contact.setFacts(udFacts.filter { types.contains($0.type) })
            }
          }
          return contact
        }
      }
    }
    
    extension MessengerMyContact {
      public static let unimplemented = MessengerMyContact(
        run: XCTUnimplemented("\(Self.self)")
      )
    }