Slide 27
Slide 27 text
let appReducer = Reducer { state,
action, environment in
switch action {
case .queryChanged(let text):
state.query = text
return .init(value: .load)
case .load:
return environment.apiClient
.fetchRepositories(state.query)
.receive(on: environment.mainQueue)
.catchToEffect()
.map(AppAction.repositoriesResponse)
.cancellable(id: GitHubAPIClientID(), cancelInFlight: true)
case .repositoriesResponse(.success(let repositories)):
state.repositories = repositories
case .repositoriesResponse(.failure(let e)):
assertionFailure(e.localizedDescription)
}
return .none
}
ComposableGitHubApp
ࣦഊ͠ͳ͍ Effect ʹม͢
Δ
Effect<[Repository], Error>
͔Β
Effect, Never>
ʹܕม͞ΕΔ