Browse Source

Use isLoaded for loading tracking

onevcat 5 years ago
parent
commit
d4411c3514

+ 1 - 1
Demo/Demo/Kingfisher-Demo/SwiftUIViews/SwiftUIList.swift

@@ -54,7 +54,7 @@ struct SwiftUIList : View {
         var body: some View {
             HStack(alignment: .center) {
                 Spacer()
-                KFImage(url, isLoaded: $done)
+                KFImage.url(url, isLoaded: $done)
                     .resizable()
                     .onSuccess { r in
                         print("Success: \(self.index) - \(r.cacheType)")

+ 2 - 10
Sources/SwiftUI/ImageBinder.swift

@@ -28,12 +28,6 @@
 import Combine
 import SwiftUI
 
-public enum KFImageLoadingState {
-    case notLoaded
-    case loaded(RetrieveImageResult)
-    case error(KingfisherError)
-}
-
 @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
 extension KFImage {
 
@@ -53,7 +47,6 @@ extension KFImage {
         let onProgressDelegate = Delegate<(Int64, Int64), Void>()
 
         var isLoaded: Binding<Bool>
-        var loadingState: Binding<KFImageLoadingState>?
 
         @Published var image: KFCrossPlatformImage?
 
@@ -70,13 +63,12 @@ extension KFImage {
             self.image = nil
         }
 
-        init(source: Source?, loadingState: Binding<KFImageLoadingState>? = nil) {
+        init(source: Source?, isLoaded: Binding<Bool>) {
             self.source = source
             self.options = KingfisherParsedOptionsInfo(
                 KingfisherManager.shared.defaultOptions + [.loadDiskFileSynchronously]
             )
-            self.isLoaded = .constant(false)
-            self.loadingState = loadingState
+            self.isLoaded = isLoaded
             self.image = nil
         }
 

+ 2 - 2
Sources/SwiftUI/KFImage.swift

@@ -82,8 +82,8 @@ public struct KFImage: SwiftUI.View {
         self.init(source: url?.convertToSource(), options: options, isLoaded: isLoaded)
     }
 
-    public init(source: Source?, loadingState: Binding<KFImageLoadingState>?) {
-        binder = ImageBinder(source: source, loadingState: loadingState)
+    public init(source: Source?, isLoaded: Binding<Bool> = .constant(false)) {
+        binder = ImageBinder(source: source, isLoaded: isLoaded)
         configurations = []
     }
 

+ 10 - 10
Sources/SwiftUI/KFImageOptions.swift

@@ -30,38 +30,38 @@ import SwiftUI
 @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
 extension KFImage {
     public static func source(
-        _ source: Source, loadingState: Binding<KFImageLoadingState>? = nil
+        _ source: Source, isLoaded: Binding<Bool> = .constant(false)
     ) -> KFImage
     {
-        KFImage(source: source, loadingState: loadingState)
+        KFImage(source: source, isLoaded: isLoaded)
     }
 
     public static func resource(
-        _ resource: Resource, loadingState: Binding<KFImageLoadingState>? = nil
+        _ resource: Resource, isLoaded: Binding<Bool> = .constant(false)
     ) -> KFImage
     {
-        .source(.network(resource), loadingState: loadingState)
+        .source(.network(resource), isLoaded: isLoaded)
     }
 
     public static func url(
-        _ url: URL, cacheKey: String? = nil, loadingState: Binding<KFImageLoadingState>? = nil
+        _ url: URL, cacheKey: String? = nil, isLoaded: Binding<Bool> = .constant(false)
     ) -> KFImage
     {
-        source(.network(ImageResource(downloadURL: url, cacheKey: cacheKey)), loadingState: loadingState)
+        source(.network(ImageResource(downloadURL: url, cacheKey: cacheKey)), isLoaded: isLoaded)
     }
 
     public static func dataProvider(
-        _ provider: ImageDataProvider, loadingState: Binding<KFImageLoadingState>? = nil
+        _ provider: ImageDataProvider, isLoaded: Binding<Bool> = .constant(false)
     ) -> KFImage
     {
-        source(.provider(provider), loadingState: loadingState)
+        source(.provider(provider), isLoaded: isLoaded)
     }
 
     public static func data(
-        _ data: Data, cacheKey: String, loadingState: Binding<KFImageLoadingState>? = nil
+        _ data: Data, cacheKey: String, isLoaded: Binding<Bool> = .constant(false)
     ) -> KFImage
     {
-        source(.provider(RawImageDataProvider(data: data, cacheKey: cacheKey)), loadingState: loadingState)
+        source(.provider(RawImageDataProvider(data: data, cacheKey: cacheKey)), isLoaded: isLoaded)
     }
 }