Advertisement
FOx3S

Untitled

May 16th, 2022
1,132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.75 KB | None | 0 0
  1. let reducer = Reducer { state, action, env in
  2.     switch state {
  3.         case .onAppear:
  4.             for link in links {
  5.                 env.downloadFromLink(link)
  6.                     .receive(on: env.mainQueue())
  7.                     .catchToEffect()
  8.                     // What's next???
  9.                     ...
  10.             }
  11.         case .infoDownloaded:
  12.             // do sth from data from link
  13.     }
  14. }
  15.  
  16. func downloadFromLink(url: URL) -> Effect<SomeData, APIError> {
  17.     return URLSession.shared.dataTaskPublisher(for: url)
  18.         .mapError { _ in APIError.downloadError }
  19.         .retry(3)
  20.         .map { data, _ in data }
  21.         .decode(type: SomeData.self, decoder: JSONDecoder())
  22.         .mapError { _ in APIError.decodingError }
  23.         .eraseToEffect()
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement