Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let reducer = Reducer { state, action, env in
- switch state {
- case .onAppear:
- for link in links {
- env.downloadFromLink(link)
- .receive(on: env.mainQueue())
- .catchToEffect()
- // What's next???
- ...
- }
- case .infoDownloaded:
- // do sth from data from link
- }
- }
- func downloadFromLink(url: URL) -> Effect<SomeData, APIError> {
- return URLSession.shared.dataTaskPublisher(for: url)
- .mapError { _ in APIError.downloadError }
- .retry(3)
- .map { data, _ in data }
- .decode(type: SomeData.self, decoder: JSONDecoder())
- .mapError { _ in APIError.decodingError }
- .eraseToEffect()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement