import { Component, OnInit } from '@angular/core';
import { IonAvatar, IonCardTitle, IonItem, IonLabel, IonSearchbar, NavController } from '@ionic/angular/standalone';
import { CloudUser, FearlessUser } from 'src/lib/ncloud';  // 使用 FearlessUser 类作为用户管理
import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
import { ModalController } from '@ionic/angular/standalone';
import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCol, IonContent, IonGrid, IonHeader, IonIcon, IonInput, IonRow, IonTextarea, IonTitle, IonToolbar } from '@ionic/angular/standalone';
import { CommonModule } from '@angular/common';  // 导入 CommonModule
import { PageEditComponent } from '../page-edit/page-edit.component';

@Component({
  selector: 'app-tab3',
  templateUrl: './tab3.page.html',
  styleUrls: ['./tab3.page.scss'],
  standalone: true,
  imports: [
    CommonModule,                         // 导入 CommonModule，确保 ngIf 等指令可用
    IonContent, IonHeader, IonTitle, IonToolbar, // 引入 IonicModule
    IonButton, IonTextarea, IonInput, IonCard, IonCardContent, IonGrid, IonRow, IonCol, IonIcon,
    IonCardHeader, IonItem, IonAvatar, IonSearchbar, IonLabel, IonCardTitle,
  ],
})
export class Tab3Page implements OnInit {
  currentUser: CloudUser | undefined;  // 使用 FearlessUser 类型
  constructor( private navCtrl: NavController, 
    private modalCtrl: ModalController){
      this.currentUser = new CloudUser();
  }
  userData = {
    name: '',  // 默认值
    avatar: 'assets/boqi.jpg'  // 默认头像路径
  };

  fearlessUser: FearlessUser = new FearlessUser();  // 使用 FearlessUser 管理用户信息



  async ngOnInit() {
    // 页面初始化时加载用户数据
    await this.loadUserData();
  }

  async loadUserData() {
    try {
      // 确保 fearlessUser 已正确实例化并加载当前用户信息
      const userData = await this.fearlessUser.getCurrentUserInfo();
      console.log('User Data:', userData);

      if (userData) {  // 如果用户信息存在，设置用户数据
        this.userData.name = userData.get("name") || '匿名用户';  // 如果没有名字，显示默认值
        this.userData.avatar = userData.get("avatar") || 'assets/boqi.jpg';  // 如果没有头像，显示默认头像
      } else {
        // 如果没有用户数据，设置默认值
        this.userData.name = '匿名用户';
        this.userData.avatar = 'assets/boqi.jpg';
      }
    } catch (error) {
      console.error('加载用户数据失败', error);
      // 加载失败时使用默认值
      this.userData.name = '匿名用户';
      this.userData.avatar = 'assets/boqi.jpg';
    }
  }

  async login() {
    // 弹出登录窗口
    const user = await openUserLoginModal(this.modalCtrl);
    if (user?.id) {
      this.currentUser = user;  // 登录成功后设置当前用户
      await this.loadUserData();  // 登录后加载用户数据
    }
  }

  async signup() {
    // 弹出注册窗口
    const user = await openUserLoginModal(this.modalCtrl, "signup");
    if (user?.id) {
      this.currentUser = user;  // 注册成功后设置当前用户
      await this.loadUserData();  // 注册后加载用户数据
    }
  }

  logout() {
    try {
      if (this.currentUser) {
        // 调用 FearlessUser 的登出方法
        this.fearlessUser.logOut();
        this.currentUser = undefined;  // 清空当前用户信息
        this.userData = { name: '', avatar: 'assets/boqi.jpg' };  // 恢复默认数据

        console.log('用户已成功登出');
      } else {
        console.warn('没有检测到有效的用户信息，登出失败');
      }
    } catch (error) {
      console.error('登出时发生错误', error);
      // 登出失败时清空数据，防止信息泄漏
      this.userData = { name: '', avatar: 'assets/boqi.jpg' };
    }
  }

  async goToEdit() {
    // 打开编辑模态框
    const modal = await this.modalCtrl.create({
      component: PageEditComponent,
      componentProps: {
        userData: this.userData  // 将当前用户数据传递给编辑页面
      }
    });
    modal.present();

    // 等待编辑页面关闭并获取数据
    const { data, role } = await modal.onWillDismiss();

    if (role === 'confirm') {
      // 更新用户信息
      this.userData = {
        name: data.name || '匿名用户',
        avatar: data.avatar || 'assets/boqi.jpg',
      };
      await this.loadUserData();  // 更新头像和用户名
    }
  }

  goToFavorites() {
    this.navCtrl.navigateForward('/favorites');
  }

  goToHelp() {
    this.navCtrl.navigateForward('/help');
  }

  goToSettings() {
    this.navCtrl.navigateForward('/settings');
  }
}
