diff options
Diffstat (limited to 'Hotline/Models/TransferInfo.swift')
| -rw-r--r-- | Hotline/Models/TransferInfo.swift | 33 |
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) + } +} |