diff options
Diffstat (limited to 'Hotline/macOS/FileImageView.swift')
| -rw-r--r-- | Hotline/macOS/FileImageView.swift | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Hotline/macOS/FileImageView.swift b/Hotline/macOS/FileImageView.swift new file mode 100644 index 0000000..867fb45 --- /dev/null +++ b/Hotline/macOS/FileImageView.swift @@ -0,0 +1,56 @@ +import SwiftUI + +enum FileImageViewStatus { + case notloaded + case loading + case loaded +} + +enum FileImageType { + case banner + case file +} + +struct FileImageView: View { + @Environment(Hotline.self) private var model: Hotline + @State var status: FileImageViewStatus = .notloaded + + @MainActor func startLoading() { + if self.status != .notloaded { + return + } + + self.status = .loading + self.model.downloadBanner { success in + if success { + self.status = .loaded + } + else { + self.status = .notloaded + } + } + } + + var body: some View { + HStack(spacing: 0) { + if let img = self.model.bannerImage { + #if os(macOS) + Image(nsImage: img) + .resizable() + .scaledToFit() + #elseif os(iOS) + Image(uiImage: img) + .resizable() + .scaledToFit() + #endif + } + } + .task { + self.startLoading() + } + } +} + +#Preview { + FileImageView() +} |