Use ImageManager of SDWebImageSwiftUI

This commit is contained in:
Arkadiusz Fal
2022-12-11 00:51:21 +01:00
parent 92999118fd
commit 7ba743afbc
4 changed files with 47 additions and 14 deletions

View File

@@ -0,0 +1,37 @@
import SDWebImageSwiftUI
import SwiftUI
struct ThumbnailView: View {
var url: URL?
@ObservedObject private var imageManager = ImageManager()
private var thumbnails = ThumbnailsModel.shared
init(url: URL? = nil) {
self.url = url
}
var body: some View {
Group {
if imageManager.image != nil {
#if os(macOS)
Image(nsImage: imageManager.image!)
.resizable()
#else
Image(uiImage: imageManager.image!)
.resizable()
#endif
} else {
Rectangle().fill(Color("PlaceholderColor"))
.onAppear {
self.imageManager.setOnFailure { _ in
guard let url else { return }
self.thumbnails.insertUnloadable(url)
}
self.imageManager.load(url: url)
}
.onDisappear { self.imageManager.cancel() }
}
}
}
}