@@ -52,14 +52,12 @@ final class ImageLoader: ObservableObject {
5252 func fetchImage( from url: String ) {
5353 if case . loading = state { return }
5454
55- let url = URL ( string: url)
56-
57- if let url = url, let cachedImage = imageCache [ url] {
55+ if let url = URL ( string: url) , let cachedImage = imageCache [ url] {
5856 state = . loaded( cachedImage)
5957 return
6058 }
6159
62- let ( progress, data) = networkManager. fetchImage ( from: url)
60+ let ( progress, data) = networkManager. fetchImage ( from: URL ( string : url) )
6361
6462 progress?
6563 . publisher ( for: \. fractionCompleted)
@@ -71,15 +69,13 @@ final class ImageLoader: ObservableObject {
7169
7270 data
7371 . map { CPImage ( data: $0) }
74- . catch { error -> AnyPublisher < CPImage ? , Never > in
72+ . catch { [ weak self ] error -> AnyPublisher < CPImage ? , Never > in
7573 if let error = error as? NetworkError {
7674 Task { @MainActor [ weak self] in
7775 self ? . state = . failed( error. rawValue)
7876 }
7977
80- #if DEBUG
81- print ( " **** CachedAsyncImage error: \( error. rawValue) " )
82- #endif
78+ self ? . log ( error. rawValue, url: url)
8379 }
8480
8581 return Just ( nil ) . eraseToAnyPublisher ( )
@@ -91,7 +87,7 @@ final class ImageLoader: ObservableObject {
9187 }
9288 } ,
9389 receiveOutput: { [ weak self] in
94- self ? . cache ( url: url, image: $0)
90+ self ? . cache ( url: URL ( string : url) , image: $0)
9591 }
9692 )
9793 . subscribe ( on: Self . imageProcessing)
@@ -113,4 +109,15 @@ final class ImageLoader: ObservableObject {
113109 private func cancel( ) {
114110 cancellables. forEach { $0. cancel ( ) }
115111 }
112+
113+ private func log( _ error: String , url: String ) {
114+ guard let emoji = Emoji . getEmoji ( from: . hammer) else { return }
115+
116+ let errorMessage = " Error: \( error) "
117+ let urlMessage = " URL: \( url) "
118+
119+ Log . failure. error (
120+ " \( emoji) CachedAsyncImage \n \( errorMessage) \n \( urlMessage) "
121+ )
122+ }
116123}
0 commit comments