
// 标签好友页面
const app = getApp();

Page({
  data: {
    // 标签列表
    tags: [],
    // 选中的标签（单选，所以只有一个）
    selectedTag: null,
    // 搜索关键词
    searchKeyword: '',
    // 加载状态
    loading: false,
    // 模式：partial_visible 或 exclude_friends
    mode: 'partial_visible'
  },

  onLoad(options) {
    // 获取传递的参数
    let selectedTagsStr = options.selectedTags || '[]';
    const mode = options.mode || 'partial_visible';
    
    // 如果参数被编码了，需要解码
    try {
      selectedTagsStr = decodeURIComponent(selectedTagsStr);
    } catch (e) {
      // 如果解码失败，使用原始值
      console.log('参数未编码，使用原始值');
    }
    
    try {
      const selectedTags = JSON.parse(selectedTagsStr);
      // 单选，只取第一个
      this.setData({
        selectedTag: selectedTags && selectedTags.length > 0 ? selectedTags[0] : null,
        mode: mode
      });
    } catch (e) {
      console.error('解析选中的标签失败:', e);
      this.setData({
        selectedTag: null,
        mode: mode
      });
    }

    // 加载标签列表
    this.loadTags();
  },

  // 加载标签列表
  loadTags() {
    // TODO: 调用API加载标签列表
    this.setData({ loading: true });
    
    // 示例数据
    const tags = [
      { 
        id: 1, 
        name: '家人', 
        friends: [
          { id: 1, nickname: '爸爸', avatar: '' },
          { id: 2, nickname: '妈妈', avatar: '' },
          { id: 3, nickname: '哥哥', avatar: '' },
          { id: 4, nickname: '姐姐', avatar: '' }
        ]
      },
      { 
        id: 2, 
        name: '挚友', 
        friends: [
          { id: 5, nickname: '张三', avatar: '' },
          { id: 6, nickname: '李四', avatar: '' },
          { id: 7, nickname: '王五', avatar: '' }
        ]
      },
      { 
        id: 3, 
        name: '同事', 
        friends: [
          { id: 8, nickname: '张海', avatar: '' },
          { id: 9, nickname: '李三', avatar: '' }
        ]
      },
      { 
        id: 4, 
        name: '骑手', 
        friends: [
          { id: 10, nickname: '骑手1', avatar: '' }
        ]
      },
      { 
        id: 5, 
        name: '游戏', 
        friends: [
          { id: 11, nickname: '游戏好友1', avatar: '' },
          { id: 12, nickname: '游戏好友2', avatar: '' }
        ]
      },
      { 
        id: 6, 
        name: '同学', 
        friends: [
          { id: 13, nickname: '同学1', avatar: '' },
          { id: 14, nickname: '同学2', avatar: '' },
          { id: 15, nickname: '同学3', avatar: '' }
        ]
      }
    ];
    
    // 立即设置数据，不使用 setTimeout
    this.setData({
      tags: tags,
      loading: false
    });
    
    console.log('标签列表已加载:', tags);
  },

  // 选择标签（单选）
  selectTag(e) {
    const tagId = e.currentTarget.dataset.tagId;
    const tag = this.data.tags.find(t => t.id === tagId);
    
    if (!tag) return;

    // 单选：如果已选中则取消，否则选中
    if (this.data.selectedTag && this.data.selectedTag.id === tagId) {
      this.setData({
        selectedTag: null
      });
    } else {
      this.setData({
        selectedTag: tag
      });
    }
  },


  // 搜索输入
  onSearchInput(e) {
    this.setData({
      searchKeyword: e.detail.value
    });
  },

  // 确认选择
  confirmSelection() {
    const { selectedTag, mode } = this.data;
    
    // 检查是否选择了标签
    if (!selectedTag) {
      wx.showToast({
        title: '请选择标签',
        icon: 'none',
        duration: 2000
      });
      return;
    }

    // 计算好友总数
    const friendsCount = selectedTag.friends ? selectedTag.friends.length : 0;
    const selectedTags = [selectedTag]; // 转换为数组格式

    // 生成显示文本：标签名称 + 好友名字列表
    let displayText = '';
    if (selectedTag.friends && selectedTag.friends.length > 0) {
      const friendNames = selectedTag.friends.map(friend => friend.nickname).join('，');
      displayText = `${selectedTag.name}：${friendNames}`;
    } else {
      displayText = `${selectedTag.name}`;
    }

    // 返回上一页并传递选中的标签
    const pages = getCurrentPages();
    const prevPage = pages[pages.length - 2];
    
    if (prevPage) {
      if (mode === 'exclude_friends') {
        // 排除模式
        if (typeof prevPage.updateExcludeTags === 'function') {
          prevPage.updateExcludeTags(selectedTags, friendsCount, displayText);
        }
      } else {
        // 部分可见模式
        if (typeof prevPage.updateSelectedTags === 'function') {
          prevPage.updateSelectedTags(selectedTags, friendsCount, displayText);
        }
      }
    }

    wx.navigateBack();
  },

  // 获取过滤后的标签列表
  getFilteredTags() {
    const { tags, searchKeyword } = this.data;
    if (!searchKeyword) {
      return tags;
    }
    return tags.filter(tag => {
      return tag.name.toLowerCase().includes(searchKeyword.toLowerCase()) ||
             (tag.friends && tag.friends.some(friend => 
               friend.nickname.toLowerCase().includes(searchKeyword.toLowerCase())
             ));
    });
  },

  // 返回
  navigateBack() {
    wx.navigateBack();
  }
});

