Skip to content

Commit

Permalink
Fix the WebImage.transaction should use take effect
Browse files Browse the repository at this point in the history
  • Loading branch information
dreampiggy committed Jul 1, 2024
1 parent 02b2579 commit 26f7571
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
27 changes: 15 additions & 12 deletions SDWebImageSwiftUI/Classes/ImageManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public final class ImageManager : ObservableObject {
weak var currentOperation: SDWebImageOperation? = nil

var currentURL: URL?
var transaction = Transaction()
var successBlock: ((PlatformImage, Data?, SDImageCacheType) -> Void)?
var failureBlock: ((Error) -> Void)?
var progressBlock: ((Int, Int) -> Void)?
Expand Down Expand Up @@ -106,18 +107,20 @@ public final class ImageManager : ObservableObject {
// So previous View struct call `onDisappear` and cancel the currentOperation
return
}
self.image = image
self.error = error
self.isIncremental = !finished
if finished {
self.imageData = data
self.cacheType = cacheType
self.indicatorStatus.isLoading = false
self.indicatorStatus.progress = 1
if let image = image {
self.successBlock?(image, data, cacheType)
} else {
self.failureBlock?(error ?? NSError())
withTransaction(transaction) {
self.image = image
self.error = error
self.isIncremental = !finished
if finished {
self.imageData = data
self.cacheType = cacheType
self.indicatorStatus.isLoading = false
self.indicatorStatus.progress = 1
if let image = image {
self.successBlock?(image, data, cacheType)
} else {
self.failureBlock?(error ?? NSError())
}
}
}
}
Expand Down
4 changes: 1 addition & 3 deletions SDWebImageSwiftUI/Classes/WebImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@ final class WebImageConfiguration: ObservableObject {
/// 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, *)
public struct WebImage<Content> : View where Content: View {
var transaction: Transaction

var configurations: [(Image) -> Image] = []

var content: (WebImagePhase) -> Content
Expand Down Expand Up @@ -146,10 +144,10 @@ public struct WebImage<Content> : View where Content: View {
imageModel.context = context
_imageModel = ObservedObject(wrappedValue: imageModel)
let imageManager = ImageManager()
imageManager.transaction = transaction
_imageManager = StateObject(wrappedValue: imageManager)
_indicatorStatus = ObservedObject(wrappedValue: imageManager.indicatorStatus)

self.transaction = transaction
self.content = { phase in
content(phase)
}
Expand Down

0 comments on commit 26f7571

Please sign in to comment.