import {
  storeBindingsBehavior
} from 'mobx-miniprogram-bindings'
import {
  store
} from '~/store/index'
import {
  publishWorks,
  postWorksScore,
  publishRankWorks
} from '~/api/works'
Component({
  behaviors: [storeBindingsBehavior],
  storeBindings: {
    store,
    fields: {
      readDetail: 'readDetail'
    },
    actions: {
      setReadDetail: 'setReadDetail'
    }
  },
  /**
   * 组件的属性列表
   */
  properties: {
    readingType: ''
  },
  /**
   * 组件的初始数据
   */
  data: {
    tempFilePath: '',
    uploadSuccess: false,
    uploadFlag: false,
    // 是否上传过
    uploadState: false,
    percent: 0,
  },
  /**
   * 组件的方法列表
   */
  methods: {
    upload() {
      if (this.data.uploadState) {
        return
      }
      this.setData({
        uploadFlag: true
      })
      const uploadTask = wx.uploadFile({
        url: 'https://reader-api.ai160.com//file/upload',
        filePath: this.data.readDetail.tempFilePath,
        name: '朗读录音',
        header: {
          uid: wx.getStorageSync('uid')
        },
        success: (res) => {
          const formateRes = JSON.parse(res.data);
          let audioPath = formateRes.data;
          this.uploadWorks(audioPath);
          this.setData({
            uploadState: true,
            uploadSuccess: true,
          })
        },
        complete: () => {
          this.setData({
            uploadFlag: false
          })
        }
      })
      uploadTask.onProgressUpdate((res) => {
        this.setData({
          percent: res.progress
        })
      })
    },
    cancelMask() {
      this.setData({
        uploadSuccess: false
      })
    },
    async uploadWorks(audio) {
      const data = {
        "exampleId": this.data.readDetail.id,
        "audioPath": audio,
        "originVideo": this.data.readDetail.originVideo,
      };
      let res
      if (!this.properties.readingType) {
        res = await publishWorks(data)
      } else {
        res = await publishRankWorks(data)
      }
      wx.setStorageSync('shareVideoId', res.id)
      let _data = this.data.readDetail
      await postWorksScore({
        "userReadId": res.id,
        "complete": _data.integrity,
        "accuracy": _data.accuracy,
        "speed": _data.fluency,
        "intonation": _data.tone,
        "score": _data.myOverall
      })
    },
  },
})