import {
  getCategoryWorks,
  searchWorks
} from '~/api/works'
import reachBottom from '~/mixins/reachBottom'
import {
  createStoreBindings
} from 'mobx-miniprogram-bindings'
import {
  store
} from '~/store/index'
let storeBindings
Page({
  behaviors: [reachBottom],
  data: {
    // class为二级,search为搜索
    type: 'class',
    categoryList: [],
    childType: '',
    currentIndex: 0,
    scrollTop: 0,
    text: '',
    currentId: ''
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 没有二级分类
    if (options.id) {
      this.setData({
        childType: options.id
      })
      this.resetData()
    } else if (options.list) {
      let categoryList = JSON.parse(decodeURIComponent(options.list))
      this.setData({
        categoryList
      })
      this.resetData()
    }
    wx.setNavigationBarTitle({
      title: options.title || '搜索'
    })
    this.setData({
      type: options.type,
    })
    this.storeBindings = createStoreBindings(this, {
      store,
      fields: {
        userInfo: 'userInfo'
      },
    })
    // 立刻更新
    this.storeBindings.updateStoreBindings()
  },
  // 获取分类的内容
  loadMore() {
    if (this.data.type == 'search') {
      return
    }
    let columnId = this.data.childType ? this.data.childType : this.data.categoryList[this.data.currentIndex].id
    this.getData(getCategoryWorks, {
      columnId
    })
  },
  setClass({
    currentTarget
  }) {
    this.setData({
      scrollTop: 0,
      currentIndex: currentTarget.dataset.index,
      currentId: `class${currentTarget.dataset.index}`
    })
    this.resetData()
  },
  setSearch({
    detail
  }) {
    this.setData({
      text: detail.value
    })
  },
  async search() {
    if (!this.data.text) {
      return
    }
    let list = await searchWorks({
      title: this.data.text,
      grade: this.data.userInfo.grade
    })
    this.setData({
      list
    })
  },
  goRead({
    currentTarget
  }) {
    wx.navigateTo({
      url: `/pages/reading/index?videoId=${currentTarget.dataset.id}`
    })
  },
  onUnload() {
    this.storeBindings.destroyStoreBindings()
  },
})