aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/FileImageView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2023-12-22 17:37:13 -0800
committerDustin Mierau <dustin@mierau.me>2023-12-22 17:37:13 -0800
commit4ddc0699afedae39fa27e134bec05330426f2120 (patch)
treece0936e7c537ef527c6472b746b8ef16e471c912 /Hotline/macOS/FileImageView.swift
parent3d26737cccd57fcbb5289874363f030ecef77573 (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.swift56
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()
+}