Files
iTorrent/ProgressWidget/ProgressWidgetAttributes.swift

80 lines
2.2 KiB
Swift

//
// ProgressWidgetAttributes.swift
// iTorrent
//
// Created by Даниил Виноградов on 06.04.2024.
//
#if canImport(ActivityKit)
import ActivityKit
import Foundation
extension ProgressWidgetAttributes {
enum State: UInt, Codable {
case checkingFiles
case downloadingMetadata
case downloading
case finished
case seeding
case checkingResumeData
case paused
case storageError
}
}
extension ProgressWidgetAttributes.State {
var name: String {
switch self {
case .checkingFiles:
return %"torrent.state.checkingFiles"
case .downloadingMetadata:
return %"torrent.state.fetchingMetadata"
case .downloading:
return %"torrent.state.downloading"
case .finished:
return %"torrent.state.done"
case .seeding:
return %"torrent.state.seeding"
case .checkingResumeData:
return %"torrent.state.resuming"
case .paused:
return %"torrent.state.paused"
case .storageError:
return %"torrent.state.storageError"
}
}
}
struct ProgressWidgetAttributes: ActivityAttributes {
public init(hash: String) {
self.hash = hash
}
public struct ContentState: Codable, Hashable {
public init(name: String, state: State, progress: Double, downSpeed: UInt64, upSpeed: UInt64, timeRemainig: String, timeStamp: Date, color: Data?) {
self.name = name
self.state = state
self.progress = progress
self.downSpeed = downSpeed
self.upSpeed = upSpeed
self.timeRemainig = timeRemainig
self.timeStamp = timeStamp
self.color = color
}
// Dynamic stateful properties about your activity go here!
public var name: String
public var state: State
public var progress: Double
public var downSpeed: UInt64
public var upSpeed: UInt64
public var timeRemainig: String
public var timeStamp: Date
public var color: Data?
}
// Fixed non-changing properties about your activity go here!
public var hash: String
}
#endif