ClashX.Meta/ClashX/Models/SavedProxyModel.swift

50 lines
1.4 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
static let key = "SavedProxyModels"
2019-11-02 11:55:18 +08:00
static func migrate() -> [SavedProxyModel]? {
if let mapping = UserDefaults.standard.dictionary(forKey: "selectedProxyMap") as? [ClashProxyName: ClashProxyName] {
var models = [SavedProxyModel]()
for (group, selected) in mapping {
models.append(SavedProxyModel(group: group, selected: selected, config: ConfigManager.selectConfigName))
}
UserDefaults.standard.removeObject(forKey: "selectedProxyMap")
return models
}
return nil
}
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) {
return models
}
if let models = migrate() {
save(models)
return models
}
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 {}