Fix the WebImage.transaction should use take effect

This commit is contained in:
DreamPiggy 2024-07-01 16:41:02 +08:00
parent 02b2579a93
commit 26f75715c7
2 changed files with 16 additions and 15 deletions

View File

@ -60,6 +60,7 @@ public final class ImageManager : ObservableObject {
weak var currentOperation: SDWebImageOperation? = nil weak var currentOperation: SDWebImageOperation? = nil
var currentURL: URL? var currentURL: URL?
var transaction = Transaction()
var successBlock: ((PlatformImage, Data?, SDImageCacheType) -> Void)? var successBlock: ((PlatformImage, Data?, SDImageCacheType) -> Void)?
var failureBlock: ((Error) -> Void)? var failureBlock: ((Error) -> Void)?
var progressBlock: ((Int, Int) -> Void)? var progressBlock: ((Int, Int) -> Void)?
@ -106,6 +107,7 @@ public final class ImageManager : ObservableObject {
// So previous View struct call `onDisappear` and cancel the currentOperation // So previous View struct call `onDisappear` and cancel the currentOperation
return return
} }
withTransaction(transaction) {
self.image = image self.image = image
self.error = error self.error = error
self.isIncremental = !finished self.isIncremental = !finished
@ -122,6 +124,7 @@ public final class ImageManager : ObservableObject {
} }
} }
} }
}
/// Cancel the current url loading /// Cancel the current url loading
public func cancel() { public func cancel() {

View File

@ -81,8 +81,6 @@ final class WebImageConfiguration: ObservableObject {
/// A Image View type to load image from url. Supports static/animated image format. /// A Image View type to load image from url. Supports static/animated image format.
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
public struct WebImage<Content> : View where Content: View { public struct WebImage<Content> : View where Content: View {
var transaction: Transaction
var configurations: [(Image) -> Image] = [] var configurations: [(Image) -> Image] = []
var content: (WebImagePhase) -> Content var content: (WebImagePhase) -> Content
@ -146,10 +144,10 @@ public struct WebImage<Content> : View where Content: View {
imageModel.context = context imageModel.context = context
_imageModel = ObservedObject(wrappedValue: imageModel) _imageModel = ObservedObject(wrappedValue: imageModel)
let imageManager = ImageManager() let imageManager = ImageManager()
imageManager.transaction = transaction
_imageManager = StateObject(wrappedValue: imageManager) _imageManager = StateObject(wrappedValue: imageManager)
_indicatorStatus = ObservedObject(wrappedValue: imageManager.indicatorStatus) _indicatorStatus = ObservedObject(wrappedValue: imageManager.indicatorStatus)
self.transaction = transaction
self.content = { phase in self.content = { phase in
content(phase) content(phase)
} }