//
//  ServerProfileManager.swift
//  ShadowsocksX-NG
//
//  Created by 邱宇舟 on 16/6/6.
//  Copyright © 2016年 qiuyuzhou. All rights reserved.
//

import Cocoa

class ServerProfileManager: NSObject {
    
    var profiles:[ServerProfile]
    var activeProfileId: String?
    
    override init() {
        profiles = [ServerProfile]()
        
        let defaults = NSUserDefaults.standardUserDefaults()
        if let _profiles = defaults.arrayForKey("ServerProfiles") {
            for _profile in _profiles {
                let profile = ServerProfile.fromDictionary(_profile as! [String : AnyObject])
                profiles.append(profile)
            }
        }
        activeProfileId = defaults.stringForKey("ActiveServerProfileId")
    }
    
    func setActiveProfiledId(id: String) {
        activeProfileId = id
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(id, forKey: "ActiveServerProfileId")
    }
    
    func save() {
        let defaults = NSUserDefaults.standardUserDefaults()
        var _profiles = [AnyObject]()
        for profile in profiles {
            if profile.isValid() {
                let _profile = profile.toDictionary()
                _profiles.append(_profile)
            }
        }
        defaults.setObject(_profiles, forKey: "ServerProfiles")
        
        if getActiveProfile() == nil {
            activeProfileId = nil
        }
        
        if activeProfileId != nil {
            defaults.setObject(activeProfileId, forKey: "ActiveServerProfileId")
            writeSSLocalConfFile((getActiveProfile()?.toJsonConfig())!)
        } else {
            defaults.removeObjectForKey("ActiveServerProfileId")
            removeSSLocalConfFile()
        }
    }
    
    func getActiveProfile() -> ServerProfile? {
        if let id = activeProfileId {
            for p in profiles {
                if p.uuid == id {
                    return p
                }
            }
            return nil
        } else {
            return nil
        }
    }
}
