Parcourir la source

Add watchOS support in KingfisherHasImageComponent

onevcat il y a 1 an
Parent
commit
4298e26ecd
1 fichiers modifiés avec 18 ajouts et 7 suppressions
  1. 18 7
      Sources/Extensions/HasImageComponent+Kingfisher.swift

+ 18 - 7
Sources/Extensions/HasImageComponent+Kingfisher.swift

@@ -50,7 +50,6 @@ extension NSTabViewItem: KingfisherHasImageComponent {}
 extension NSStatusItem: KingfisherHasImageComponent {}
 
 extension NSCell: KingfisherHasImageComponent {}
-
 #endif
 
 #if canImport(UIKit) && !os(watchOS)
@@ -66,7 +65,16 @@ extension UIBarItem: KingfisherHasImageComponent {}
 
 #endif
 
-#if !os(watchOS)
+#if canImport(WatchKit)
+import WatchKit
+extension WKInterfaceImage: KingfisherHasImageComponent {
+    @MainActor public var image: KFCrossPlatformImage? {
+        get { nil }
+        set { setImage(newValue) }
+    }
+}
+#endif
+
 @MainActor
 extension KingfisherWrapper where Base: KingfisherHasImageComponent {
 
@@ -340,9 +348,14 @@ extension KingfisherWrapper where Base: KingfisherHasImageComponent {
 
         var options = parsedOptions
 
-        if !options.keepCurrentImageWhileLoading || base.image == nil {
-            // Always set placeholder while there is no image/placeholder yet.
-            mutatingSelf.base.image = placeholder
+        // Always set placeholder while there is no image/placeholder yet.
+#if os(watchOS)
+        let usePlaceholderDuringLoading = !options.keepCurrentImageWhileLoading
+#else
+        let usePlaceholderDuringLoading = !options.keepCurrentImageWhileLoading || base.image == nil
+#endif
+        if usePlaceholderDuringLoading {
+            base.image = placeholder
         }
 
         let issuedIdentifier = Source.Identifier.next()
@@ -428,5 +441,3 @@ extension KingfisherWrapper where Base: KingfisherHasImageComponent {
         set { setRetainedAssociatedObject(base, &imageTaskKey, newValue)}
     }
 }
-
-#endif