// pages/interest-partner/interest-partner.js - 兴趣搭子页面（Figma设计）
const api = require('../../utils/api')
const config = require('../../config/index')
const app = getApp()

Page({
  data: {
    statusBarHeight: 44,
    navBarHeight: 44,
    totalNavHeight: 88,
    
    // 二维码弹窗
    showQrcodeModal: false,
    selectedPartner: null, // 当前选中的搭子对象
    
    // 兴趣搭子列表
    partnerList: [],
    loading: false,
    
    // 固定的6个分类（与Figma设计一致）
    fixedCategories: [
      { name: '美食聚餐', icon: 'food-icon', desc: '同城美食 共享美味' },
      { name: '旅游出行', icon: 'travel-icon', desc: '结伴出游 共度美好' },
      { name: '唱歌观影', icon: 'entertainment-icon', desc: '老歌金曲 经典影视' },
      { name: '舞蹈走秀', icon: 'dance-icon', desc: '展现风采 舞动人生' },
      { name: '书画摄影', icon: 'art-icon', desc: '陶冶情操 记录生活之美' },
      { name: '运动康养', icon: 'sports-icon', desc: '多种运动 身心健康' }
    ]
  },

  onLoad() {
    // 计算导航栏高度
    const systemInfo = wx.getSystemInfoSync()
    const statusBarHeight = systemInfo.statusBarHeight || 44
    const menuButton = wx.getMenuButtonBoundingClientRect()
    const navBarHeight = menuButton.height + (menuButton.top - statusBarHeight) * 2
    const totalNavHeight = statusBarHeight + navBarHeight
    
    this.setData({
      statusBarHeight,
      navBarHeight,
      totalNavHeight
    })
    
    // 加载兴趣搭子列表
    this.loadPartnerList()
  },
  
  /**
   * 页面显示时刷新数据
   */
  onShow() {
    // 每次显示页面时重新加载数据，确保数据是最新的
    this.loadPartnerList()
  },
  
  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    console.log('下拉刷新兴趣搭子列表')
    this.loadPartnerList().then(() => {
      wx.stopPullDownRefresh()
      wx.showToast({
        title: '刷新成功',
        icon: 'success'
      })
    }).catch(() => {
      wx.stopPullDownRefresh()
    })
  },
  
  /**
   * 加载兴趣搭子列表
   */
  async loadPartnerList() {
    if (this.data.loading) return
    
    this.setData({ loading: true })
    
    try {
      // 添加时间戳参数，防止缓存
      const timestamp = Date.now()
      const res = await api.interest.getList({ _t: timestamp })
      
      console.log('[兴趣搭子] API原始响应:', JSON.stringify(res).substring(0, 500))
      
      // 线上API返回格式：{ success: true, data: [...] } 或 { success: true, data: { list: [...] } }
      if (res.success && res.data) {
        // 兼容两种返回格式
        let partnerList = Array.isArray(res.data) ? res.data : (res.data.list || [])
        
        console.log('[兴趣搭子] 解析后的列表数量:', partnerList.length)
        if (partnerList.length > 0) {
          console.log('[兴趣搭子] 第一条数据示例:', JSON.stringify(partnerList[0]))
        }
        
        // 处理图片URL - 根据API文档，icon和qr_code已经是完整的API路径
        partnerList = partnerList.map(item => {
          // 处理icon字段
          let iconUrl = '/images/icon-interest-default.png' // 默认图标
          if (item.icon && item.icon.trim()) {
            if (item.icon.startsWith('http://') || item.icon.startsWith('https://')) {
              // 已经是完整URL
              iconUrl = item.icon
            } else if (item.icon.startsWith('/')) {
              // 相对路径，需要拼接域名
              iconUrl = `https://ai-c.maimanji.com${item.icon}`
            } else {
              // 不以/开头，添加/再拼接
              iconUrl = `https://ai-c.maimanji.com/${item.icon}`
            }
          }
          
          // 处理qr_code字段
          let qrCodeUrl = ''
          if (item.qr_code && item.qr_code.trim()) {
            if (item.qr_code.startsWith('http://') || item.qr_code.startsWith('https://')) {
              qrCodeUrl = item.qr_code
            } else if (item.qr_code.startsWith('/')) {
              qrCodeUrl = `https://ai-c.maimanji.com${item.qr_code}`
            } else {
              qrCodeUrl = `https://ai-c.maimanji.com/${item.qr_code}`
            }
          }
          
          console.log(`[兴趣搭子] ${item.name} - 原始icon: ${item.icon}, 处理后: ${iconUrl}`)
          
          return {
            ...item,
            icon: iconUrl,
            qr_code: qrCodeUrl
          }
        })
        
        console.log(`[${new Date().toLocaleTimeString()}] 兴趣搭子列表加载成功，共 ${partnerList.length} 条数据`)
        this.setData({
          partnerList,
          loading: false
        })
        
        // 返回Promise以支持下拉刷新
        return Promise.resolve()
      } else {
        console.warn('兴趣搭子列表返回格式异常:', res)
        this.setData({ loading: false })
        wx.showToast({
          title: '加载失败',
          icon: 'none'
        })
        return Promise.reject()
      }
    } catch (err) {
      console.error('加载兴趣搭子列表失败:', err)
      this.setData({ loading: false })
      wx.showToast({
        title: '网络错误',
        icon: 'none'
      })
      return Promise.reject(err)
    }
  },

  /**
   * 返回上一页
   */
  onBack() {
    wx.navigateBack()
  },

  /**
   * 点击兴趣卡片
   */
  onInterestTap(e) {
    const { partner } = e.currentTarget.dataset
    
    if (!partner) {
      wx.showToast({
        title: '数据加载中',
        icon: 'none'
      })
      return
    }
    
    // 检查是否有二维码
    if (!partner.qr_code || !partner.qr_code.trim()) {
      wx.showToast({
        title: '二维码暂未配置',
        icon: 'none'
      })
      return
    }
    
    // 二维码URL已在loadPartnerList中处理过，直接使用
    this.setData({
      showQrcodeModal: true,
      selectedPartner: partner
    })
  },

  /**
   * 关闭二维码弹窗
   */
  onCloseQrcodeModal() {
    this.setData({
      showQrcodeModal: false,
      selectedPartner: null
    })
  },

  /**
   * 保存二维码
   */
  onSaveQrcode() {
    const { selectedPartner } = this.data
    
    if (!selectedPartner || !selectedPartner.qr_code) {
      wx.showToast({
        title: '二维码加载中',
        icon: 'none'
      })
      return
    }

    wx.showLoading({ title: '保存中...' })

    // 下载图片
    wx.downloadFile({
      url: selectedPartner.qr_code,
      success: (res) => {
        if (res.statusCode === 200) {
          // 保存到相册
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success: () => {
              wx.hideLoading()
              wx.showToast({
                title: '已保存到相册',
                icon: 'success'
              })
              this.onCloseQrcodeModal()
            },
            fail: (err) => {
              wx.hideLoading()
              if (err.errMsg.includes('auth deny')) {
                wx.showModal({
                  title: '需要授权',
                  content: '请允许访问相册以保存二维码',
                  confirmText: '去设置',
                  success: (modalRes) => {
                    if (modalRes.confirm) {
                      wx.openSetting()
                    }
                  }
                })
              } else {
                wx.showToast({
                  title: '保存失败',
                  icon: 'none'
                })
              }
            }
          })
        } else {
          wx.hideLoading()
          wx.showToast({
            title: '下载失败',
            icon: 'none'
          })
        }
      },
      fail: () => {
        wx.hideLoading()
        wx.showToast({
          title: '下载失败',
          icon: 'none'
        })
      }
    })
  }
})
