Skip to content

Instantly share code, notes, and snippets.

@atimca
Last active June 19, 2020 09:02
Show Gist options
  • Save atimca/dbbf0ade0d845350cb7254efb4d130e2 to your computer and use it in GitHub Desktop.
Save atimca/dbbf0ade0d845350cb7254efb4d130e2 to your computer and use it in GitHub Desktop.
struct User {
let id: AnyHashable
}
struct NewsState {
var user: User
var step: Step
}
extension NewsState {
enum Step {
case initial
case loading
case loaded(data: [String])
}
}
enum NewsEvent {
case dataLoaded(data: [String])
case loadData
}
extension NewsState {
static func reduce(state: NewsState, event: NewsEvent) -> NewsState {
var state = state
switch event {
case .dataLoaded(let data):
state.step = .loaded(data: data)
case .loadData:
state.step = .loading
}
return state
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment