import Header from './Header';
import Taro from '@tarojs/taro';
import {useShareAppMessage} from "@tarojs/taro"
import {useEffect, useState} from "react";
import {getShopInfo} from "@/api/layout";
import Menu from "./Menu";
import Banner from "./Banner";
import {checkAndHandleInviteRelation, hasPendingInvite} from "@/utils/invite";
import './index.scss'
import GoodsList from './GoodsList';

function Home() {
  // 吸顶状态
  // const [stickyStatus, setStickyStatus] = useState<boolean>(false)
  // Tabs粘性状态
  const [_, setTabsStickyStatus] = useState<boolean>(false)

  useShareAppMessage(() => {
    // 获取当前用户ID，用于生成邀请链接
    const userId = Taro.getStorageSync('UserId');

    return {
      title: '🏠 首页 🏠',
      path: userId ? `/pages/index/index?inviter=${userId}&source=share&t=${Date.now()}` : `/pages/index/index`,
      success: function () {
        console.log('首页分享成功');
        Taro.showToast({
          title: '分享成功',
          icon: 'success',
          duration: 2000
        });
      },
      fail: function () {
        console.log('首页分享失败');
        Taro.showToast({
          title: '分享失败',
          icon: 'none',
          duration: 2000
        });
      }
    };
  });

  // const reloadMore = async () => {
  //   setPage(page + 1)
  // }

  const showAuthModal = () => {
    Taro.showModal({
      title: '授权提示',
      content: '需要获取您的用户信息',
      confirmText: '去授权',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          // 用户点击确认，打开授权设置页面
          openSetting();
        }
      }
    });
  };

  const openSetting = () => {
    // Taro.openSetting：调起客户端小程序设置界面，返回用户设置的操作结果。设置界面只会出现小程序已经向用户请求过的权限。
    Taro.openSetting({
      success: (res) => {
        if (res.authSetting['scope.userInfo']) {
          // 用户授权成功，可以获取用户信息
          reload();
        } else {
          // 用户拒绝授权，提示授权失败
          Taro.showToast({
            title: '授权失败',
            icon: 'none'
          });
        }
      }
    });
  };

  // const onSticky = (item: IArguments) => {
  //   if(item){
  //     setStickyStatus(!stickyStatus)
  //   }
  // }

  // 处理Tabs粘性状态变化
  const handleTabsStickyChange = (isSticky: boolean) => {
    setTabsStickyStatus(isSticky)
  }

  const reload = () => {

  };

  useEffect(() => {
    // 获取站点信息
    getShopInfo().then(() => {

    })

    // 检查是否有待处理的邀请关系 - 异步处理，不阻塞页面加载
    if (hasPendingInvite()) {
      console.log('检测到待处理的邀请关系')
      // 延迟处理，确保用户信息已加载，并设置超时保护
      setTimeout(async () => {
        try {
          // 设置超时保护，避免长时间等待
          const timeoutPromise = new Promise((_, reject) =>
            setTimeout(() => reject(new Error('邀请关系处理超时')), 8000)
          );

          const invitePromise = checkAndHandleInviteRelation();

          const success = await Promise.race([invitePromise, timeoutPromise]);
          if (success) {
            console.log('首页邀请关系处理成功')
          }
        } catch (error) {
          console.error('首页邀请关系处理失败:', error)
          // 邀请关系处理失败不应该影响页面正常显示
          // 可以选择清除邀请参数，避免重复尝试
          const errorMessage = error instanceof Error ? error.message : String(error)
          if (errorMessage?.includes('超时')) {
            console.log('邀请关系处理超时，清除邀请参数')
            // 可以选择清除邀请参数或稍后重试
          }
        }
      }, 2000)
    }

    // Taro.getSetting：获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
    Taro.getSetting({
      success: (res) => {
        if (res.authSetting['scope.userInfo']) {
          // 用户已经授权过，可以直接获取用户信息
          console.log('用户已经授权过，可以直接获取用户信息')
          reload();
        } else {
          // 用户未授权，需要弹出授权窗口
          console.log('用户未授权，需要弹出授权窗口')
          showAuthModal();
        }
      }
    });
    // 获取用户信息
    Taro.getUserInfo({
      success: (res) => {
        const avatar = res.userInfo.avatarUrl;
        console.log(avatar, 'avatarUrl')
      }
    });
  }, []);

  return (
    <>
      {/* Header区域 - 现在由Header组件内部处理吸顶逻辑 */}
      <Header />

      <div className={'flex flex-col mt-12'}>
        <Menu/>
        <Banner/>
        <GoodsList onStickyChange={handleTabsStickyChange}/>
      </div>
    </>
  )
}

export default Home
