import { defineAppConfig, defineDataLoader } from "ice";
import { defineStoreConfig } from "@ice/plugin-store/types";
import { defineRequestConfig } from "@ice/plugin-request/types";
import { registerValidateRules } from "@formily/core";

registerValidateRules({
  phoneWhenWrite(value, _rule, ctx) {
    const field = ctx.field;
    // 在只读模式
    if (
      field.readPretty ||
      !value ||
      /^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(value)
    ) {
      return "";
    }
    return "手机号码格式不正确";
  },
  emailWhenWrite(value, _rule, ctx) {
    const field = ctx.field;
    if (
      field.readPretty ||
      !value ||
      /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
        value
      )
    ) {
      return "";
    }
    return "邮箱格式不正确";
  },
});

// App config, see https://v3.ice.work/docs/guide/basic/app
export default defineAppConfig(() => ({
  app: {
    rootId: "ddzhushou",
  },
  router: {
    type: "hash",
  },
}));

export const storeConfig = defineStoreConfig(async (appData) => {
  const { userInfo = {} } = appData;
  return {
    initialStates: {
      user: {
        currentUser: userInfo,
      },
    },
  };
});

export const request = defineRequestConfig(() => ({
  baseURL: "/api",
}));

export const dataLoader = defineDataLoader(async () => {
  const userInfo = await getUserInfo();
  return {
    userInfo,
  };
});

async function getUserInfo() {
  try {
    // 获取用户登录信息
    return {};
  } catch (error) {
    return;
  }
}
