38 lines
1.1 KiB
Swift
38 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
public enum RemoteTrackDownloadStatus: String, Codable, Hashable, Sendable, CaseIterable {
|
|
case notDownloaded
|
|
case downloading
|
|
case downloaded
|
|
case failed
|
|
}
|
|
|
|
public struct RemoteTrackDownloadState: Codable, Hashable, Sendable {
|
|
public var remoteTrackId: String
|
|
public var assetId: String
|
|
public var localFilePath: String
|
|
public var downloadedAt: Date?
|
|
public var downloadStatus: RemoteTrackDownloadStatus
|
|
public var lastDownloadError: String?
|
|
|
|
public init(
|
|
remoteTrackId: String,
|
|
assetId: String,
|
|
localFilePath: String = "",
|
|
downloadedAt: Date? = nil,
|
|
downloadStatus: RemoteTrackDownloadStatus,
|
|
lastDownloadError: String? = nil
|
|
) {
|
|
self.remoteTrackId = remoteTrackId
|
|
self.assetId = assetId
|
|
self.localFilePath = localFilePath
|
|
self.downloadedAt = downloadedAt
|
|
self.downloadStatus = downloadStatus
|
|
self.lastDownloadError = lastDownloadError
|
|
}
|
|
|
|
public var hasLocalFile: Bool {
|
|
!localFilePath.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
|
|
}
|
|
}
|