ClashX.Meta/ClashX/Models/SavedProxyModel.swift

43 lines
1.1 KiB
Swift
Raw Normal View History

//
// SavedProxyModel.swift
// ClashX
//
// Created by yicheng on 2019/11/1.
// Copyright © 2019 west2online. All rights reserved.
//
import Cocoa
struct SavedProxyModel: Codable {
let group: ClashProxyName
let selected: ClashProxyName
let config: String
2019-12-11 20:27:17 +08:00
var key:String {
return "\(group)_\(config)"
}
2019-12-11 20:27:17 +08:00
static let key = "SavedProxyModels"
2019-11-02 11:55:18 +08:00
static func loadsFromUserDefault() -> [SavedProxyModel] {
if let data = UserDefaults.standard.object(forKey: key) as? Data,
let models = try? JSONDecoder().decode([SavedProxyModel].self, from: data) {
2019-12-11 20:27:17 +08:00
var set = Set<String>()
return models.filter({ model in
let pass = !set.contains(model.key)
set.insert(model.key)
return pass
})
}
return []
}
2019-11-02 11:55:18 +08:00
static func save(_ models: [SavedProxyModel]) {
if let data = try? JSONEncoder().encode(models) {
UserDefaults.standard.set(data, forKey: key)
}
}
}
2019-11-02 11:55:18 +08:00
extension SavedProxyModel: Equatable {}