Files
ClashX-Dashboard/ClashX Dashboard/Views/ContentTabs/Proxies/ProxyItemData.swift
2023-04-25 14:51:23 +08:00

76 lines
1.3 KiB
Swift

//
// ProxyItemData.swift
// ClashX Dashboard
//
//
import Cocoa
import SwiftUI
class ProxyItemData: NSObject, ObservableObject {
let id: String
@objc let name: ClashProxyName
let type: ClashProxyType
let udpString: String
let tfo: Bool
let all: [ClashProxyName]
var delay: Int {
didSet {
switch delay {
case 0:
delayString = NSLocalizedString("fail", comment: "")
default:
delayString = "\(delay) ms"
}
let httpsTest = true
switch delay {
case 0:
delayColor = .gray
case ..<200 where !httpsTest:
delayColor = .green
case ..<800 where httpsTest:
delayColor = .green
case 200..<500 where !httpsTest:
delayColor = .yellow
case 800..<1500 where httpsTest:
delayColor = .yellow
default:
delayColor = .orange
}
}
}
@Published var delayString = ""
@Published var delayColor = Color.clear
init(clashProxy: ClashProxy) {
id = clashProxy.id
name = clashProxy.name
type = clashProxy.type
tfo = clashProxy.tfo
all = clashProxy.all ?? []
udpString = {
if clashProxy.udp {
return "UDP"
} else if clashProxy.xudp {
return "XUDP"
} else {
return ""
}
}()
delay = 0
super.init()
defer {
delay = clashProxy.history.last?.meanDelay ?? clashProxy.history.last?.delay ?? 0
}
}
}