import Cookies from "js-cookie";

/**
 * window.localStorage 浏览器永久缓存
 * @method set 设置永久缓存
 * @method get 获取永久缓存
 * @method remove 移除永久缓存
 * @method clear 移除全部永久缓存
 */
export const Local = {
  // 设置永久缓存
  set(key, val) {
    window.localStorage.setItem(key, JSON.stringify(val));
  },
  // 获取永久缓存
  get(key) {
    let json = window.localStorage.getItem(key);
    return JSON.parse(json);
  },
  // 移除永久缓存
  remove(key) {
    window.localStorage.removeItem(key);
  },
  // 移除全部永久缓存
  clear() {
    window.localStorage.clear();
  },
};

/**
 * window.sessionStorage 浏览器临时缓存
 * @method set 设置临时缓存
 * @method get 获取临时缓存
 * @method remove 移除临时缓存
 * @method clear 移除全部临时缓存
 */
export const Session = {
  // 设置临时缓存
  set(key, val) {
    if (key === "token") return Cookies.set(key, val);
    try {
      window.sessionStorage.setItem(key, JSON.stringify(val));
    } catch (error) {
      window.sessionStorage.setItem(key, val);
    }
  },
  // 获取临时缓存
  get(key) {
    if (key === "token") return Cookies.get(key);
    let json = window.sessionStorage.getItem(key);
    try {
      if (json) {
        return JSON.parse(json);
      } else {
        return json;
      }
    } catch (error) {
      return json;
    }
  },
  // 移除临时缓存
  remove(key) {
    if (key === "token") return Cookies.remove(key);
    window.sessionStorage.removeItem(key);
  },
  // 移除全部临时缓存
  clear() {
    Cookies.remove("token");
    window.sessionStorage.clear();
  },
};
export function setSessionStorage(key, value) {
  const str = window.JSON.stringify(value);
  window.sessionStorage.setItem(key, str);
}

export function getSessionStorage(key) {
  let json;
  json = window.sessionStorage.getItem(key);
  if (json) {
    try {
        json = window.JSON.parse(json);
        return json
    } catch (error) {
      return json;
    }
  }
  return json;
}

export function setLocalStorage(key, value) {
   try {
      const str = window.JSON.stringify(value);
      window.localStorage.setItem(key, str);
   } catch (error) {
      window.localStorage.setItem(key, value);
   }
}

export function getLocalStorage(key) {
  let json;
  json = window.localStorage.getItem(key);
  if (json) {
    try {
      json = window.JSON.parse(json);
    } catch (error) {
      json = json;
    }
  }
  return json;
}
