/**
 * storage封装
 */

// 存储方式 'localStorage' | 'sessionStorage'
const storageType = "localStorage"

//  重写调用本地存储的方法,统一项目的调用方式
// getDesDecrypt 调用的解密方法
// getDesEncrypt 调用的加密方法
class Storage {
  constructor(type) {
    this.type = type
  }
  get(key) {
    // 解密
    if (window[this.type].getItem(key)) {
      return getDesDecrypt(window[this.type].getItem(key))
    }
  }
  set(key, value) {
    // 加密
    if (value !== undefined && value !== null && value !== "") {
      try {
        window[this.type].setItem(key,getDesEncrypt(value.toString()))
      } catch (error) {
        console.log(error)
      }
    }
  }
  deal(key = "version") {
    Object.keys(window[this.type]).forEach(item => {
      if (item !== key) {
        window[this.type].removeItem(item)
      }
    })
  }
  remove(key) {
    window[this.type].removeItem(key)
  }
  clear() {
    window[this.type].clear()
  }
}
export default new Storage(storageType)