velody/packages/apple/VelodyDomain/Sources/VelodyDomain/RemoteLibraryDownloadModels.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
}
}