import envConfig from '../../env';
import Toast from 'tdesign-miniprogram/toast/index';
Component({
  data: {
    image: 'https://tdesign.gtimg.com/mobile/demos/avatar1.png',
  },
  methods: {
    async getLoginCode() {
      return new Promise((resolve, reject) => {
        wx.login({
          success: (res) => {
            if (res.code) {
              resolve(res.code); // 返回获取到的code
            } else {
              reject(new Error('获取登录凭证失败: ' + res.errMsg));
            }
          },
          fail: (err) => {
            reject(err);
          }
        });
      });
    },
    async wxPhone(e: { detail: any; }){
      console.log("授权回调结果：", e);
      
      if (e.detail.errMsg === "getPhoneNumber:ok") {
        const { encryptedData, iv} = e.detail;
        console.log("encryptedData:",encryptedData)
        const code = await this.getLoginCode();
        console.log("获得的code为：",code)
        wx.request<WechatMiniprogram.LoginUserMsg>({
          url: `${envConfig.apiBaseUrl}/user/login`,
          method: "POST",
          data: {
            encryptedData,
            iv,
            code,
          },
          success(res) {
            console.log(res)
            if (res.data.code == "20001") {
              Toast({
                selector: '#t-toast',
                message: '登录成功',
                theme: 'success',
                direction: 'column',
              });
              
              const app = getApp()
              app.setToken(res.data.token)
              if (!app || !app.globalData) {
                console.error("App 实例或 globalData 不可用。");
                return;
            }
            app.globalData.userInfo = res.data.userinfo;
            
            console.log("用户信息存储成功:", app.globalData.userInfo);
            try {
                // 存储 Token（键名建议带项目标识，避免与其他缓存冲突）
                wx.setStorageSync('ttk_token', res.data.token); 
                
                // 存储用户信息（需将对象转为字符串，缓存仅支持字符串/二进制数据）
                wx.setStorageSync('ttk_userInfo', JSON.stringify(res.data.userinfo)); 
                
                console.log("用户信息、Token 已成功存入微信本地缓存");
              } catch (e) {
                // 捕获缓存失败的异常（如存储空间不足）
                console.error("微信本地缓存存储失败:", e);
                Toast({
                  selector: '#t-toast',
                  message: '缓存用户信息失败，请稍后重试',
                  theme: 'error',
                  direction: 'column',
                });
              }
          
            

              setTimeout(() => {
                // 3.1 刷新user组件
                const pages = getCurrentPages();
                let homePage = null;
                pages.forEach(page => {
                  if (page.route === 'pages/index/index') {
                    homePage = page;
                  }
                });
            
                if (homePage) {
                  const userComponent = homePage.selectComponent('#userComp');
                  if (userComponent) {
                    userComponent.refreshUserStatus(); 
                  }
                } else {
                  // 首页不在栈中，跳转首页
                  wx.redirectTo({
                    url: '/pages/home/home'
                  });
                  // 注意：如果跳转后不需要执行下面的返回逻辑，可在此处加 return
                  // return;
                }
            
                // 3.2 页面跳转/返回
                if (pages.length > 1) {
                  // 返回上一页
                  wx.navigateBack({
                    delta: 1
                  });
                } else {
                  // 跳转到首页（tabBar页面用switchTab）
                  wx.switchTab({
                    url: '/pages/index/index'
                  });
                }
            
              }, 1500); // 延迟时间：1500毫秒（1.5秒），可根据需要调整
            }else{
              Toast({
                selector: '#t-toast',
                message: '登录失败',
                theme: 'error',
                direction: 'column',
              });
            }
          },
          fail() {
            wx.showToast({ title: "网络错误", icon: "none" });
          }
        });
      } else {
        // 用户拒绝授权
        wx.showToast({ title: "请允许授权以完成登录", icon: "none" });
      }
    },
    testSend(){
      const token = wx.getStorageSync("token");
      wx.request({
        url: `${envConfig.apiBaseUrl}/user/test`,
          method: "POST",
          data: {
            
          },
          header:{
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${token}`
          }
          ,
          success(res){
            console.log(res)
            Toast({
              selector: '#t-toast',
              message: '测试成功',
              theme: 'success',
              direction: 'column',
            });
          }
      })
    },
    onBack() {
      // 获取当前页面栈
      const pages = getCurrentPages();
      
      // 页面栈长度大于1，说明有上一个页面
      if (pages.length > 1) {
        // 调用微信API返回上一页，delta: 1 表示返回一层
        wx.navigateBack({
          delta: 1
        });
      } else {
        // 如果没有上一页（比如从首页直接进入登录页），可跳转到默认页面（如首页）
        wx.switchTab({
          url: '/pages/index/index' // 替换为你的首页路径
        });
      }
    }
  },
  
})
