import { Component, OnInit } from '@angular/core';
import { ToastController, LoadingController, AlertController } from '@ionic/angular';

@Component({
  selector: 'app-invite-friends',
  templateUrl: './invite-friends.page.html',
  styleUrls: ['./invite-friends.page.scss'],
})
export class InviteFriendsPage implements OnInit {
  inviteLink = ''; // 从后端或其他来源动态获取
  showInviteLink = false;
  userAchievements: string[] = ['已邀请1位好友']; // 初始化成就列表

  constructor(
    public toastController: ToastController,
    public loadingController: LoadingController,
    public alertController: AlertController // 添加 AlertController
  ) {}

  ngOnInit() {
    // 假设这里是获取邀请链接的地方
    this.fetchInviteLink();
  }

  private async fetchInviteLink() {
    try {
      // 这里应该是调用API来获取真实的邀请链接
      this.inviteLink = await this.getInviteLinkFromApi(); // 替换为实际的API调用
    } catch (error) {
      console.error('获取邀请链接失败', error);
      this.showErrorAlert('获取邀请链接失败，请重试');
    }
  }

  private async getInviteLinkFromApi(): Promise<string> {
    // 模拟API请求
    return new Promise((resolve) => setTimeout(() => resolve('https://example.com/invite'), 1000));
  }

  async inviteFriends() {
    const loading = await this.loadingController.create({
      message: '正在生成邀请链接...',
    });
    await loading.present();

    try {
      // 如果有需要，可以在这里调用API以生成新的邀请链接
      this.showInviteLink = true;
    } catch (error) {
      console.error('生成邀请链接失败', error);
      this.showErrorAlert('生成邀请链接失败，请重试');
    } finally {
      loading.dismiss();
    }
  }

  async copyToClipboard() {
    try {
      // 使用原生JavaScript方法复制文本到剪贴板
      await navigator.clipboard.writeText(this.inviteLink);
      this.showToast('邀请链接已复制到剪贴板！');
    } catch (err) {
      console.error('复制失败', err);
      this.showErrorAlert('复制失败，请重试');
    }
  }

  private async showToast(message: string) {
    const toast = await this.toastController.create({
      message,
      duration: 2000,
    });
    await toast.present();
  }

  private async showErrorAlert(message: string) {
    const alert = await this.alertController.create({
      header: '操作失败',
      message,
      buttons: ['确定']
    });
    await alert.present();
  }

  // 添加查看成就详情的方法
async viewAchievementDetail(achievement: string) {
  const alert = await this.alertController.create({
    header: '成就详情',
    message: `您已经完成了：${achievement}`,
    buttons: ['关闭']
  });

  await alert.present();
}

  async shareOnSocialMedia(platform?: string) {
    if (navigator.share) {
      try {
        await navigator.share({
          title: '我正在使用这个超棒的应用，快来加入吧！',
          text: '我正在使用这个超棒的应用，快来加入吧！',
          url: this.inviteLink,
        });
        this.showToast(`已分享`);
      } catch (err) {
        console.error('分享失败', err);
        this.showErrorAlert('分享失败，请重试');
      }
    } else {
      this.showErrorAlert('当前浏览器不支持分享功能，请手动复制链接分享。');
    }
  }
}