import React, { useState, useEffect } from 'react';
import { View, Text, Image, ScrollView } from '@tarojs/components';
import Taro from '@tarojs/taro';
import './index.scss';
import GuideBar from '@/components/GuideBar'
import { UserInfoCard, UserInfo } from '@/components/UserInfo/index'
import { UserService } from '@/services/userService'
import ListContainer from '@/container/listContainer'
import { TennisMatch } from '../../../../types/list/types'

const MyselfPage: React.FC = () => {
  // 获取页面参数
  const instance = Taro.getCurrentInstance();
  const user_id = instance.router?.params?.userid;

  // 判断是否为当前用户
  const is_current_user = !user_id;

  // 用户信息状态
  const [user_info, set_user_info] = useState<UserInfo>({
    id: '1',
    nickname: '加载中...',
    avatar: require('../../../static/userInfo/default_avatar.svg'),
    join_date: '加载中...',
    stats: {
      following: 0,
      friends: 0,
      hosted: 0,
      participated: 0
    },
    tags: ['加载中...'],
    bio: '加载中...',
    location: '加载中...',
    occupation: '加载中...',
    ntrp_level: 'NTRP 3.0'
  });

  // 球局记录状态
  const [game_records, set_game_records] = useState<TennisMatch[]>([]);
  const [loading, set_loading] = useState(true);

  // 关注状态
  const [is_following, setIsFollowing] = useState(false);

  // 当前激活的标签页
  const [active_tab, setActiveTab] = useState<'hosted' | 'participated'>('hosted');

  // 加载用户数据
  const load_user_data = async () => {
    try {
      set_loading(true);

      // 获取用户信息（包含统计数据）
      const user_data = await UserService.get_user_info(user_id);
      set_user_info(user_data);

      // 获取球局记录
      let games_data;
      if (active_tab === 'hosted') {
        games_data = await UserService.get_hosted_games(user_id || '1');
      } else {
        games_data = await UserService.get_participated_games(user_id || '1');
      }
      set_game_records(games_data);

    } catch (error) {
      console.error('加载用户数据失败:', error);
      Taro.showToast({
        title: '加载失败，请重试',
        icon: 'error',
        duration: 2000
      });
    } finally {
      set_loading(false);
    }
  };

  // 页面加载时获取数据
  useEffect(() => {
    load_user_data();
  }, [user_id]);

  // 切换标签页时重新加载球局数据
  useEffect(() => {
    if (!loading) {
      load_game_data();
    }
  }, [active_tab]);

  // 加载球局数据
  const load_game_data = async () => {
    try {
      let games_data;
      if (active_tab === 'hosted') {
        games_data = await UserService.get_hosted_games(user_id || '1');
      } else {
        games_data = await UserService.get_participated_games(user_id || '1');
      }
      set_game_records(games_data);
    } catch (error) {
      console.error('加载球局数据失败:', error);
    }
  };

  // 处理关注/取消关注
  const handle_follow = async () => {
    try {
      const new_following_state = await UserService.toggle_follow(user_id || '1', is_following);
      setIsFollowing(new_following_state);

      Taro.showToast({
        title: new_following_state ? '关注成功' : '已取消关注',
        icon: 'success',
        duration: 1500
      });
    } catch (error) {
      console.error('关注操作失败:', error);
      Taro.showToast({
        title: '操作失败，请重试',
        icon: 'error',
        duration: 2000
      });
    }
  };



  // 处理球局订单
  const handle_game_orders = () => {
    Taro.navigateTo({
      url: '/pages/userInfo/orders/index'
    });
  };

  // 处理收藏
  const handle_favorites = () => {
    Taro.navigateTo({
      url: '/pages/userInfo/favorites/index'
    });
  };



  return (
    <View className="myself_page">
      {/* 主要内容 */}
      <View className='main_content'>
        {/* 用户信息区域 */}
        <View className="user_info_section">
          {loading ? (
            <View className="loading_container">
              <Text className="loading_text">加载中...</Text>
            </View>
          ) : (
            <UserInfoCard
              user_info={user_info}
              is_current_user={is_current_user}
              is_following={is_following}
              on_follow={handle_follow}
           
            />
          )}
          {/* 球局订单和收藏功能 */}
          <View className="quick_actions_section">
            <View className="action_card">
              <View className="action_content" onClick={handle_game_orders}>
                <Image
                  className="action_icon"
                  src={require('../../../static/userInfo/order_btn.svg')}
                />
                <Text className="action_text">我的订单</Text>
              </View>
              <View className="action_divider"></View>
              <View className="action_content" onClick={handle_favorites}>
                <Image
                  className="action_icon"
                  src={require('../../../static/userInfo/sc.svg')}
                />
                <Text className="action_text">收藏</Text>
              </View>
            </View>
          </View>
        </View>

        {/* 球局类型标签页 */}
        <View className="game_tabs_section">
          <View className="tab_container">
            <View className={`tab_item ${active_tab === 'hosted' ? 'active' : ''}`} onClick={() => setActiveTab('hosted')}>
              <Text className="tab_text">我主办的</Text>
            </View>
            <View className={`tab_item ${active_tab === 'participated' ? 'active' : ''}`} onClick={() => setActiveTab('participated')}>
              <Text className="tab_text">我参与的</Text>
            </View>
          </View>
        </View>

        {/* 球局列表 */}
        <View className="game_list_section">
          <ScrollView scrollY>
            <ListContainer
              data={game_records}
              recommendList={[]}
              loading={loading}
              error={null}
              reload={load_game_data}
            />
          </ScrollView>
        </View>
      </View>
      <GuideBar currentPage='personal' />
    </View>
  );
};

export default MyselfPage;
