CNLiveConfigUserInfo.swift 1.46 KB
//
//  CNLiveConfigUserInfo.swift
//  metaCode
//
//  Created by open on 2023/6/6.
//

import Foundation
import SwiftyUserDefaults

extension DefaultsKeys {
    
    var userInfoKey: DefaultsKey<CNLiveLoginModel?>{
        DefaultsKey.init("userInfo")
    }
    
}

class UserInfoManager: NSObject {
    
    static let shared = UserInfoManager()
    
    public var is_login: Bool {
        get {
            return userInfo.uid.lengthOfBytes(using: .utf8) > 0
        }
    }
    
    fileprivate var _userInfo : CNLiveLoginModel?
    private(set) var userInfo: CNLiveLoginModel {
        
        set {
            _userInfo = newValue
        }
        
        get {
            if (_userInfo != nil && (_userInfo?.uid.lengthOfBytes(using: .utf8))! > 0) {
                return _userInfo!
            }
            return readUserInfo()
        }
    }
    
    private override init() {}

    /// 缓存用户数据
    /// - Parameter userInfo: 用户数据
    public func cacheUserInfo(userInfo: CNLiveLoginModel) {
        _userInfo = userInfo
        Defaults[\.userInfoKey] = userInfo
    }
    
    /// 读取用户数据
    /// - Returns: 用户数据
    public func readUserInfo() -> CNLiveLoginModel {
        if (Defaults.hasKey(\.userInfoKey)) {
            return Defaults[\.userInfoKey]!
        }else{
            return CNLiveLoginModel()
        }
    }
    
    public func clearUserInfo() {
        _userInfo = nil
        Defaults.remove(\.userInfoKey)
    }
}