aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models/TransferInfo.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Models/TransferInfo.swift')
-rw-r--r--Hotline/Models/TransferInfo.swift33
1 files changed, 33 insertions, 0 deletions
diff --git a/Hotline/Models/TransferInfo.swift b/Hotline/Models/TransferInfo.swift
new file mode 100644
index 0000000..546efd3
--- /dev/null
+++ b/Hotline/Models/TransferInfo.swift
@@ -0,0 +1,33 @@
+import SwiftUI
+
+@Observable
+class TransferInfo: Identifiable, Equatable, Hashable {
+ var id: UInt32
+
+ var title: String
+ var size: UInt
+ var progress: Double = 0.0
+ var timeRemaining: TimeInterval = 0.0
+ var completed: Bool = false
+ var failed: Bool = false
+
+ // For file based transfers (i.e. not previews)
+ var fileURL: URL? = nil
+
+ var downloadCallback: ((TransferInfo, URL) -> Void)? = nil
+ var previewCallback: ((TransferInfo, Data) -> Void)? = nil
+
+ init(id: UInt32, title: String, size: UInt) {
+ self.id = id
+ self.title = title
+ self.size = size
+ }
+
+ static func == (lhs: TransferInfo, rhs: TransferInfo) -> Bool {
+ return lhs.id == rhs.id
+ }
+
+ func hash(into hasher: inout Hasher) {
+ hasher.combine(self.id)
+ }
+}