Implement Milestone 7.2 offline audio downloads
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user