Skip to content
Snippets Groups Projects
Select Git revision
  • 96dfef9c9e87c841897b6c8347e780eb59e99bdd
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

user.go

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)")
      )
    }