Skip to content
Snippets Groups Projects
UserSearchResultFeature.swift 1.25 KiB
Newer Older
import ComposableArchitecture
import Foundation
import XCTestDynamicOverlay
import XXClient

public struct UserSearchResultState: Equatable, Identifiable {
  public init(
    id: Data,
    xxContact: XXClient.Contact,
    username: String? = nil,
    email: String? = nil,
    phone: String? = nil
  ) {
    self.id = id
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    self.xxContact = xxContact
    self.username = username
    self.email = email
    self.phone = phone
  }

  public var id: Data
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var xxContact: XXClient.Contact
  public var username: String?
  public var email: String?
  public var phone: String?
}

public enum UserSearchResultAction: Equatable {
  case start
  case tapped
}

public struct UserSearchResultEnvironment {
  public init() {}
}

#if DEBUG
extension UserSearchResultEnvironment {
  public static let unimplemented = UserSearchResultEnvironment()
}
#endif

public let userSearchResultReducer = Reducer<UserSearchResultState, UserSearchResultAction, UserSearchResultEnvironment>
{ state, action, env in
  switch action {
  case .start:
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    state.username = try? state.xxContact.getFact(.username)?.fact
    state.email = try? state.xxContact.getFact(.email)?.fact
    state.phone = try? state.xxContact.getFact(.phone)?.fact
    return .none

  case .tapped:
    return .none
  }
}