@@ -3,7 +3,7 @@ import Nuke
33@objc ( TurboImageViewManager)
44class TurboImageViewManager : RCTViewManager {
55
6- private var prefetcher : ImagePrefetcher ?
6+ private var prefetchers : [ String : ImagePrefetcher ] = [ : ]
77
88 override func view( ) -> ( TurboImageView ) {
99 return TurboImageView ( )
@@ -23,6 +23,7 @@ extension TurboImageViewManager {
2323 with cachePolicy: String ,
2424 resolve: @escaping RCTPromiseResolveBlock ,
2525 reject: @escaping RCTPromiseRejectBlock ) {
26+
2627 let imageRequests : [ ImageRequest ] = sources. map {
2728 guard let uri = $0 [ " uri " ] as? String ,
2829 let url = URL ( string: uri)
@@ -34,37 +35,22 @@ extension TurboImageViewManager {
3435 }
3536 return ImageRequest ( urlRequest: urlRequest)
3637 } . compactMap { $0 }
38+
39+ let key = UUID ( ) . uuidString
40+ var prefetcher : ImagePrefetcher ?
3741 if ( cachePolicy == " dataCache " ) {
3842 prefetcher = ImagePrefetcher ( pipeline: ImagePipeline ( configuration: . withDataCache) )
3943 } else {
4044 prefetcher = ImagePrefetcher ( )
4145 }
46+ prefetchers [ key] = prefetcher
4247 prefetcher? . startPrefetching ( with: imageRequests)
4348 prefetcher? . didComplete = {
4449 resolve ( true )
50+ self . prefetchers [ key] = nil
4551 }
4652 }
4753
48- @objc
49- func dispose( _ sources: [ Source ] ,
50- resolve: @escaping RCTPromiseResolveBlock ,
51- reject: @escaping RCTPromiseRejectBlock ) {
52- let imageRequests : [ ImageRequest ] = sources. map {
53- guard let uri = $0 [ " uri " ] as? String ,
54- let url = URL ( string: uri)
55- else { return nil }
56-
57- var urlRequest = URLRequest ( url: url)
58- if let headers = $0 [ " headers " ] as? [ String : String ] {
59- urlRequest. allHTTPHeaderFields = headers
60- }
61- return ImageRequest ( urlRequest: urlRequest)
62- } . compactMap { $0 }
63-
64- prefetcher? . stopPrefetching ( with: imageRequests)
65- resolve ( " Success " )
66- }
67-
6854 @objc
6955 func clearMemoryCache( _ resolve: @escaping RCTPromiseResolveBlock ,
7056 reject: @escaping RCTPromiseRejectBlock ) {
0 commit comments