2022-12-10 02:01:59 +00:00
|
|
|
import Cache
|
2022-11-10 17:11:28 +00:00
|
|
|
import Foundation
|
2022-12-10 00:23:13 +00:00
|
|
|
import Logging
|
2022-12-10 02:01:59 +00:00
|
|
|
import SwiftyJSON
|
2022-11-10 17:11:28 +00:00
|
|
|
|
|
|
|
struct CacheModel {
|
|
|
|
static var shared = CacheModel()
|
|
|
|
|
2022-12-10 02:01:59 +00:00
|
|
|
static let jsonToDataTransformer: (JSON) -> Data = { try! $0.rawData() }
|
|
|
|
static let jsonFromDataTransformer: (Data) -> JSON = { try! JSON(data: $0) }
|
|
|
|
static let jsonTransformer = Transformer(toData: jsonToDataTransformer, fromData: jsonFromDataTransformer)
|
|
|
|
|
|
|
|
func clear() {
|
|
|
|
FeedCacheModel.shared.clear()
|
|
|
|
VideosCacheModel.shared.clear()
|
2022-12-11 17:04:39 +00:00
|
|
|
PlaylistsCacheModel.shared.clear()
|
2022-12-10 02:01:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
var totalSize: Int {
|
|
|
|
(FeedCacheModel.shared.storage.totalDiskStorageSize ?? 0) +
|
2022-12-11 17:04:39 +00:00
|
|
|
(VideosCacheModel.shared.storage.totalDiskStorageSize ?? 0) +
|
|
|
|
(PlaylistsCacheModel.shared.storage.totalDiskStorageSize ?? 0)
|
2022-12-10 02:01:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
var totalSizeFormatted: String {
|
2022-12-11 17:04:39 +00:00
|
|
|
byteCountFormatter.string(fromByteCount: Int64(totalSize))
|
2022-12-10 02:01:59 +00:00
|
|
|
}
|
|
|
|
|
2022-12-11 17:04:39 +00:00
|
|
|
var dateFormatter: DateFormatter {
|
|
|
|
let formatter = DateFormatter()
|
|
|
|
formatter.dateStyle = .short
|
|
|
|
formatter.timeStyle = .medium
|
|
|
|
|
|
|
|
return formatter
|
|
|
|
}
|
|
|
|
|
|
|
|
var dateFormatterForTimeOnly: DateFormatter {
|
|
|
|
let formatter = DateFormatter()
|
|
|
|
formatter.dateStyle = .none
|
|
|
|
formatter.timeStyle = .medium
|
|
|
|
|
|
|
|
return formatter
|
2022-12-10 02:01:59 +00:00
|
|
|
}
|
2022-12-11 17:04:39 +00:00
|
|
|
|
|
|
|
var iso8601DateFormatter: ISO8601DateFormatter { .init() }
|
|
|
|
|
|
|
|
private var byteCountFormatter: ByteCountFormatter { .init() }
|
2022-11-10 17:11:28 +00:00
|
|
|
}
|