Page({
  data: {
    currentVisibility: '',
    selectedTags: [], // 选中的标签列表
    selectedTagsFriendsCount: 0, // 标签里的好友数量
    selectedTagsDisplayText: '', // 标签显示文本
    selectedFriends: [], // 选中的好友列表
    selectedFriendsCount: 0, // 选中的好友数量
    selectedFriendsDisplayText: '', // 选中的好友显示文本
    excludeTags: [], // 排除的标签列表
    excludeTagsFriendsCount: 0, // 排除标签里的好友数量
    excludeTagsDisplayText: '', // 排除标签显示文本
    excludeFriends: [], // 排除的好友列表
    excludeFriendsCount: 0, // 排除的好友数量
    excludeFriendsDisplayText: '' // 排除的好友显示文本
  },

  onLoad(options) {
    let visibility = options.currentVisibility || '';

    // 如果当前选中的是隐藏的选项，重置为公开
    if (visibility === 'friends_only' || visibility === 'partial_visible' || visibility === 'exclude_friends') {
      visibility = 'public';
    }

    if (visibility) {
      this.setData({
        currentVisibility: visibility
      });
    }
  },

  onShow() {
    // 从标签或好友选择页面返回时，更新数据
    // 这里可以通过全局变量或事件总线来获取更新的数据
    // TODO: 实现从选择页面返回时的数据同步
  },

  // 加载部分可见的数据
  loadPartialVisibleData() {
    // TODO: 从上一页获取已选中的标签和好友
    // 暂时使用空数据
    this.setData({
      selectedTags: [],
      selectedTagsFriendsCount: 0,
      selectedFriends: [],
      selectedFriendsCount: 0
    });
  },

  // 选择标签
  selectTags() {
    const selectedTagsStr = encodeURIComponent(JSON.stringify(this.data.selectedTags || []));
    wx.navigateTo({
      url: `/subpackages/social/tag-friends/tag-friends?selectedTags=${selectedTagsStr}&mode=partial_visible`,
      success: (res) => {
        console.log('跳转到标签选择页面成功');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 选择好友
  selectFriends() {
    const selectedFriendsStr = encodeURIComponent(JSON.stringify(this.data.selectedFriends || []));
    wx.navigateTo({
      url: `/subpackages/social/friend-selector/friend-selector?selectedFriends=${selectedFriendsStr}&mode=partial_visible`,
      success: (res) => {
        console.log('跳转到好友选择页面成功');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 更新标签数据（从标签选择页面返回时调用）
  updateSelectedTags(tags, friendsCount, displayText) {
    this.setData({
      selectedTags: tags,
      selectedTagsFriendsCount: friendsCount,
      selectedTagsDisplayText: displayText || ''
    });
  },

  // 更新好友数据（从好友选择页面返回时调用）
  updateSelectedFriends(friends, friendsCount, displayText) {
    this.setData({
      selectedFriends: friends,
      selectedFriendsCount: friendsCount,
      selectedFriendsDisplayText: displayText || ''
    });
  },

  // 加载不给谁看的数据
  loadExcludeFriendsData() {
    // TODO: 从上一页获取已选中的排除标签和好友
    // 暂时使用空数据
    this.setData({
      excludeTags: [],
      excludeTagsFriendsCount: 0,
      excludeFriends: [],
      excludeFriendsCount: 0
    });
  },

  // 选择排除标签
  selectExcludeTags() {
    const excludeTagsStr = encodeURIComponent(JSON.stringify(this.data.excludeTags || []));
    wx.navigateTo({
      url: `/subpackages/social/tag-friends/tag-friends?selectedTags=${excludeTagsStr}&mode=exclude_friends`,
      success: (res) => {
        console.log('跳转到排除标签选择页面成功');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 选择排除好友
  selectExcludeFriends() {
    const excludeFriendsStr = encodeURIComponent(JSON.stringify(this.data.excludeFriends || []));
    wx.navigateTo({
      url: `/subpackages/social/friend-selector/friend-selector?selectedFriends=${excludeFriendsStr}&mode=exclude_friends`,
      success: (res) => {
        console.log('跳转到排除好友选择页面成功');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 更新排除标签数据（从标签选择页面返回时调用）
  updateExcludeTags(tags, friendsCount, displayText) {
    this.setData({
      excludeTags: tags,
      excludeTagsFriendsCount: friendsCount,
      excludeTagsDisplayText: displayText || ''
    });
  },

  // 更新排除好友数据（从好友选择页面返回时调用）
  updateExcludeFriends(friends, friendsCount, displayText) {
    this.setData({
      excludeFriends: friends,
      excludeFriendsCount: friendsCount,
      excludeFriendsDisplayText: displayText || ''
    });
  },

  // 选择可见性选项
  selectVisibility(e) {
    const type = e.currentTarget.dataset.type;
    
    // 禁止选择隐藏的选项
    if (type === 'friends_only' || type === 'partial_visible' || type === 'exclude_friends') {
      return;
    }
    
    this.setData({
      currentVisibility: type
    });
  },

  // 完成选择
  completeSelection() {
    // 获取当前选择的可见性状态
    const { currentVisibility, selectedTags, selectedFriends, excludeTags, excludeFriends } = this.data;

    console.log('completeSelection 被调用，currentVisibility:', currentVisibility);

    // 检查是否选择了可见性
    if (!currentVisibility || currentVisibility.trim() === '') {
      wx.showToast({
        title: '请选择可见性',
        icon: 'none'
      });
      return;
    }

    const pages = getCurrentPages();
    const prevPage = pages[pages.length - 2];

    console.log('上一页是否存在:', !!prevPage);
    console.log('updateVisibility 方法是否存在:', prevPage && typeof prevPage.updateVisibility === 'function');

    if (prevPage && typeof prevPage.updateVisibility === 'function') {
      // 如果是部分可见，传递标签和好友数据
      if (currentVisibility === 'partial_visible') {
        console.log('传递部分可见数据');
        prevPage.updateVisibility(currentVisibility, {
          selectedTags: selectedTags,
          selectedFriends: selectedFriends
        });
      } else if (currentVisibility === 'exclude_friends') {
        // 如果是不给谁看，传递排除标签和好友数据
        console.log('传递排除好友数据');
        prevPage.updateVisibility(currentVisibility, {
          excludeTags: excludeTags,
          excludeFriends: excludeFriends
        });
      } else {
        console.log('传递普通可见性:', currentVisibility);
        prevPage.updateVisibility(currentVisibility);
      }
      
      // 延迟返回，确保 updateVisibility 执行完成
      setTimeout(() => {
        console.log('准备返回上一页');
        wx.navigateBack();
      }, 100);
    } else {
      console.error('无法获取上一页或 updateVisibility 方法不存在');
      // 如果无法获取上一页，直接返回
      wx.navigateBack();
    }
  },
  navigateBack() {
    wx.navigateBack();
  }
});
