From 4ddc0699afedae39fa27e134bec05330426f2120 Mon Sep 17 00:00:00 2001 From: Dustin Mierau Date: Fri, 22 Dec 2023 17:37:13 -0800 Subject: Some work to get banner images working. Some plumbing to get file transfers working though they don't yet. Moving some code away from async/await. --- Hotline/macOS/FileImageView.swift | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Hotline/macOS/FileImageView.swift (limited to 'Hotline/macOS/FileImageView.swift') 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() +} -- cgit