import Taro from "@tarojs/taro";

/**
 * 检查用户是否已完善头像和昵称的高阶函数
 * @param user
 * @param onFinish 原始完成函数
 * @returns 包装后的完成函数
 */
export function withUserInfoCheck(user: AuthAPI.UserVO, onFinish: () => void) {
  const currentPath = Taro.getCurrentInstance().router?.path;

  // 检查用户是否已完善头像和昵称
  if (!user.avatar || !user.nickname) {
    Taro.eventCenter.trigger("userInfoUpdate", {
      pagePath: currentPath,
      onSuccess: () => {
        onFinish();
      },
    });
    return;
  }

  // 如果已完善信息或已跳过，则直接执行原始函数
  onFinish();
}

/**
 * 检查用户是否已经绑定手机号码的高阶函数
 * @param user - 用户信息
 * @param onFinish - 原始函数，在检查通过时执行
 * @returns - 检查结果
 */
export function withUserPhoneCheck(user: AuthAPI.UserVO, onFinish: () => void) {
  const currentPath = Taro.getCurrentInstance().router?.path;

  // 检查用户是否已绑定手机号码
  if (!user.phone) {
    Taro.eventCenter.trigger("userLogin", {
      visible: true,
      pagePath: currentPath,
      onSuccess: () => {
        withUserInfoCheck(user, onFinish);
      },
    });
    return;
  }

  // 如果绑定手机号码已跳过，则直接执行原始函数
  withUserInfoCheck(user, onFinish);
}
