@@ -49,7 +49,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
4949
5050 private lazy var navigationController = UINavigationController (
5151 rootViewController: FeedUIComposer . feedComposedWith (
52- feedLoader: makeRemoteFeedLoaderWithLocalFallback ,
52+ feedLoader: loadRemoteFeedWithLocalFallback ,
5353 imageLoader: loadLocalImageWithRemoteFallback,
5454 selection: showComments) )
5555
@@ -127,22 +127,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
127127 let ( data, response) = try await httpClient. get ( from: url)
128128 return try FeedItemsMapper . map ( data, from: response)
129129 }
130-
131- private func makeRemoteFeedLoaderWithLocalFallback( ) -> AnyPublisher < Paginated < FeedImage > , Error > {
132- Deferred {
133- Future { completion in
134- Task . immediate {
135- do {
136- let feed = try await self . loadRemoteFeedWithLocalFallback ( )
137- completion ( . success( feed) )
138- } catch {
139- completion ( . failure( error) )
140- }
141- }
142- }
143- }
144- . eraseToAnyPublisher ( )
145- }
146130
147131 private func loadMoreRemoteFeed( last: FeedImage ? ) async throws -> Paginated < FeedImage > {
148132 async let cachedItems = try await loadLocalFeed ( )
@@ -158,38 +142,13 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
158142 return try await makePage ( items: items, last: newItems. last)
159143 }
160144
161- private func makeRemoteLoadMoreLoader( last: FeedImage ? ) -> AnyPublisher < Paginated < FeedImage > , Error > {
162- Deferred {
163- Future { completion in
164- Task . immediate {
165- do {
166- let feed = try await self . loadMoreRemoteFeed ( last: last)
167- completion ( . success( feed) )
168- } catch {
169- completion ( . failure( error) )
170- }
171- }
172- }
173- }
174- . eraseToAnyPublisher ( )
175- }
176-
177- private func makeRemoteFeedLoader( after: FeedImage ? = nil ) -> AnyPublisher < [ FeedImage ] , Error > {
178- let url = FeedEndpoint . get ( after: after) . url ( baseURL: baseURL)
179-
180- return httpClient
181- . getPublisher ( url: url)
182- . tryMap ( FeedItemsMapper . map)
183- . eraseToAnyPublisher ( )
184- }
185-
186145 private func makeFirstPage( items: [ FeedImage ] ) -> Paginated < FeedImage > {
187146 makePage ( items: items, last: items. last)
188147 }
189148
190149 private func makePage( items: [ FeedImage ] , last: FeedImage ? ) -> Paginated < FeedImage > {
191- Paginated ( items: items, loadMorePublisher : last. map { last in
192- { self . makeRemoteLoadMoreLoader ( last: last) }
150+ Paginated ( items: items, loadMore : last. map { last in
151+ { @ MainActor @ Sendable in try await self . loadMoreRemoteFeed ( last: last) }
193152 } )
194153 }
195154
0 commit comments