// pages/articleList/index.js
import request from '~/api/request';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    title: '',
    articles: [],
    page: 1,
    page_size: 10,
    hasMore: true,
    loading: false,
    searchKeyword: ''
  },

  // Helper function to strip HTML tags and convert to plain text
  stripHtml(html) {
    if (!html) return '';
    return html.replace(/<[^>]*>/g, '');
  },

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

  // 执行搜索
  async onSearch() {
    this.setData({
      page: 1,
      articles: [],
      hasMore: true
    });
    await this.getList();
  },

  // 获取文章列表
  async getList(){
    if (this.data.loading || !this.data.hasMore) return;
    
    this.setData({ loading: true });
    
    try {
      const res = await request('patient/articles', 'get', { 
        title: this.data.searchKeyword, 
        page: this.data.page, 
        page_size: this.data.page_size 
      });
      
      // Convert rich text content to plain text for each article
      const articlesWithPlainText = res.list.map(article => ({
        ...article,
        contentText: this.stripHtml(article.content)
      }));
      
      // 如果是第一页，直接替换；否则追加
      const newArticles = this.data.page === 1 ? articlesWithPlainText : [...this.data.articles, ...articlesWithPlainText];
      
      this.setData({
        articles: newArticles,
        hasMore: res.list.length === this.data.page_size,
        loading: false
      });
    } catch (error) {
      console.error('获取文章列表失败:', error);
      this.setData({ loading: false });
      wx.showToast({
        title: '获取数据失败',
        icon: 'none'
      });
    }
  },

  // 加载更多数据
  async loadMore() {
    if (this.data.hasMore && !this.data.loading) {
      this.setData({
        page: this.data.page + 1
      });
      await this.getList();
    }
  },

  async preview(e){
    console.log(e.currentTarget.dataset.index)
    const index = e.currentTarget.dataset.index
    await wx.setStorageSync('article',JSON.stringify(this.data.articles[index]));
    wx.navigateTo({
      url: '/pages/article/index',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getList()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      page: 1,
      articles: [],
      hasMore: true
    });
    this.getList().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.loadMore();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})