import {
  storeBindingsBehavior
} from 'mobx-miniprogram-bindings'
import {
  store
} from '~/store/index'
import {
  userEvent
} from '~/api/global'
import {
  publishWorks,
  postWorksScore,
  publishRankWorks
} from '~/api/works'

Component({
  behaviors: [storeBindingsBehavior],
  storeBindings: {
    store,
    fields: {
      readDetail: 'readDetail'
    },
  },
  /**
   * 组件的属性列表
   */
  properties: {
    readingType: {
      type: String,
      value: ""
    },
    activityId: ''
  },
  /**
   * 组件的初始数据
   */
  data: {
    tempFilePath: '',
    uploadSuccess: false,
    uploadFlag: false,
    // 是否上传过
    uploadState: false,
    percent: 0,
    userReadId: '',
    tips: false
  },
  /**
   * 组件的方法列表
   */
  methods: {
    async 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);
        },
        fail: () => {
          wx.showToast({
            title: '上传失败请重试',
            icon: 'error',
            duration: 2000
          })
          this.setData({
            uploadFlag: false
          })
        }
      })
      uploadTask.onProgressUpdate((res) => {
        console.log(res.progress, 'ppppp');
        this.setData({
          percent: res.progress - 1
        })
      })
      await userEvent({
        action: 'WXUPLOAD',
      })
    },
    cancelMask() {
      this.setData({
        uploadSuccess: false
      })
    },
    async uploadWorks(audio) {
      const data = {
        exampleId: this.data.readDetail.id,
        audioPath: audio,
        originVideo: this.data.readDetail.originVideo,
        activityId: this.properties.activityId
      };
      let res
      if (this.properties.readingType == 'readMatch') {
        res = await publishRankWorks(data)
      } else {
        res = await publishWorks(data)
      }
      wx.setStorageSync('shareVideoId', res.id)
      let _data = this.data.readDetail
      let scoreRes = await postWorksScore({
        userReadId: res.id,
        complete: _data.integrity,
        accuracy: _data.accuracy,
        speed: _data.fluency,
        intonation: _data.tone,
        score: _data.myOverall,
      })
      console.log(scoreRes, 'scoreRes');
      this.setData({
        uploadFlag: false,
        uploadState: true,
        uploadSuccess: true,
        userReadId: res.id,
      })
    },
    beforeleave() {
      if (this.data.uploadFlag) {
        this.setData({
          uploadFlag: false
        })
        wx.showModal({
          title: '上传作品中',
          content: '小朋友请耐心等待哦~',
          showCancel: false,
          success: (res) => {
            if (res.confirm) {
              this.setData({
                uploadFlag: true
              })
            }
          }
        })
      }
    },
    jumpWork() {
      wx.redirectTo({
        url: '/pages/userWorks/index'
      })
    }
  },
})