diff options
| author | Dustin Mierau <dustin@mierau.me> | 2023-12-22 17:37:13 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2023-12-22 17:37:13 -0800 |
| commit | 4ddc0699afedae39fa27e134bec05330426f2120 (patch) | |
| tree | ce0936e7c537ef527c6472b746b8ef16e471c912 /Hotline/macOS/FileImageView.swift | |
| parent | 3d26737cccd57fcbb5289874363f030ecef77573 (diff) | |
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.
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() +} |