import { useAppStore } from "@/stores/app.js";
import Cache from "../utils/cache";
import { Debounce } from "@/utils/validate.js";

import {
  LOGIN_STATUS,
  USER_INFO,
  EXPIRES_TIME,
  STATE_R_KEY,
  BACK_URL,
} from "@/config/cache";

function prePage() {
  let pages = getCurrentPages();
  let prePage = pages[pages.length - 1];
  return prePage.route;
}

export const toLogin = Debounce(_toLogin, 800);

export function _toLogin(push, pathLogin) {
  const appStore = useAppStore();
  appStore.LOGOUT();
  let path = prePage();
  let login_back_url = Cache.get(BACK_URL);

  uni.navigateTo({
    url: "/pages/users/login/index",
  });
}

export function checkLogin() {
  let token = Cache.get(LOGIN_STATUS);
  let expiresTime = Cache.get(EXPIRES_TIME);
  let newTime = Math.round(new Date() / 1000);
  const appStore = useAppStore();

  // 如果没有token，清除所有登录信息
  if (!token) {
    Cache.clear(LOGIN_STATUS);
    Cache.clear(EXPIRES_TIME);
    Cache.clear(USER_INFO);
    Cache.clear(STATE_R_KEY);
    return false;
  }

  // 如果有过期时间且已过期，清除所有登录信息
  if (expiresTime && expiresTime < newTime) {
    Cache.clear(LOGIN_STATUS);
    Cache.clear(EXPIRES_TIME);
    Cache.clear(USER_INFO);
    Cache.clear(STATE_R_KEY);
    return false;
  }

  // 恢复登录状态
  appStore.UPDATE_LOGIN(token);
  let userInfo = Cache.get(USER_INFO, true);
  if (userInfo) {
    appStore.UPDATE_USERINFO(userInfo);
  }
  return true;
}
