// subPage/chat/index.js
var plugin = requirePlugin("WechatSI")
let manager = plugin.getRecordRecognitionManager()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    eventType:'input',// 底部事件类型 input 键盘输入，voice 语音输入
    sendText:'',// 发送的输入框内容 
    voiceBtnText:'按住 说话',
    screenHeight:'0',
    list:[
      {
        id:-1,
        type:'text',
        isUp:false,
        isDown:false,
        loading:false,
      },
    ],
    voiceSpeed:-1,
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    const res = wx.getSystemInfoSync();
    console.log('设备数据',res);
    this.setData({
      screenHeight: (res.screenHeight - 92) + 'px',
    });
  },
  handleEvent(e) {
    let that = this;
    that.animate();
    that.setData({
      eventType: e.currentTarget.dataset.type == 'input' ? 'voice' : 'input',
      voiceSpeed:-1
    });
    if (that.data.eventType == 'voice') {
      // 检查是否有录音权限
      wx.getSetting({
        success(res) {
          if (!res.authSetting['scope.record']) {
            that.setData({
              voiceSpeed:4
            });
            wx.authorize({
              scope: 'scope.record',
              success() {
                console.log('录音权限已授权');
                // 继续执行其他逻辑
                that.setData({
                  voiceSpeed:2
                });
              },
              fail() {
                console.log('录音权限未授权');
                that.setData({
                  voiceSpeed:4
                });
                wx.showModal({
                  title: '提示',
                  content: '需要录音权限才能使用语音输入功能，请在设置中授权。',
                  confirmText: '去设置',
                  cancelText: '取消',
                  success(res) {
                    if (res.confirm) {
                      wx.openSetting({
                        success(res) {
                          console.log('用户打开设置', res.authSetting);
                          if (res.authSetting['scope.record']) {
                            console.log('用户已授权录音权限');
                            // 用户授权后可以继续执行其他逻辑
                            that.setData({
                              voiceSpeed:2
                            });
                          } else {
                            console.log('用户未授权录音权限');
                            // 用户未授权录音权限后的逻辑
                            that.setData({
                              voiceSpeed:3
                            });
                          }
                        }
                      });
                    } else if (res.cancel) {
                      console.log('用户取消授权');
                      // 用户取消授权后的逻辑
                      that.setData({
                        voiceSpeed:3
                      });
                    }
                  }
                });
              }
            });
          } else {
            console.log('录音权限已授权');
            // 继续执行其他逻辑
            that.setData({
              voiceSpeed:2
            });
          }
        }
      });
    }
  },
  handleUp(e){
    let that = this;
    that.animate();
    const list = [...that.data.list]; 
    const index = e.currentTarget.dataset.index;
    list[index].isUp = !list[index].isUp; 
    that.setData({
      list: list 
    });
  },
  handleDown(e){
    let that = this;
    that.animate();
    const list = [...that.data.list]; 
    const index = e.currentTarget.dataset.index;
    list[index].isDown = !list[index].isDown; 
    that.setData({
      list: list 
    });
  },
  handleCopy(e){
    let that = this;
    that.animate();
    const index = e.currentTarget.dataset.index;
    let content = that.data.list[index].content; // 获取要复制的内容
    if(index == 0){
      content = "Hi，我是大鹏，你的智能工作助理。以后找工作不用跟老板谈了，直接来跟大鹏谈。来说说你的要求，我们开始吧…"
    }
    wx.setClipboardData({
      data: content,
      success: function (res) {
        wx.showToast({
          title: '复制成功',
          icon: 'success',
          duration: 2000
        });
      },
      fail: function (res) {
        wx.showToast({
          title: '复制失败',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },
  handleShare(){
    let that = this;
    that.animate();
  },
  handleInput(e){
    let that = this;
    that.setData({
      sendText:e.detail.value
    });
  },
  animate($type='light') {
    wx.vibrateShort({
      type:$type
    });
  },


  // 文本消息发送
  handleSend(){
    let that = this;
    if(that.data.sendText == ''){
      wx.showToast({
        title: '请输入内容',
        icon: 'none',
      });
      return false;
    }
    that.animate();
    that.setData({
      list:[
        ...that.data.list,
        {
          id:that.data.list.length,
          type:'text',
          isUp:false,
          isDown:false,
          content:that.data.sendText,
          loading:false,
        },
        {
          id:that.data.list.length + 1,
          type:'html',
          isUp:false,
          isDown:false,
          content:`【北京奔驰连接器日结工】<br /><br />🚻 男女 18-48， 18-48周岁， 男女不限， 要求26个英文字母， 纹身烟疤拍照确认， 黑户，明显纹身，临时身份证不予接收，两班倒，站班<br /><br />💰 员工250元/天，支付60天；60天以后员工220元/天；每月10号发薪。培训工资100元/天，员工 16 元/时以上部分含税6个点的，打卡不满七天无工资；60天以后员工缴纳社保`,
          loading:true,
        },
      ],
      sendText:''
    });
    setTimeout(()=>{
      that.data.list.forEach(item=>{
        item.loading = false;
      })
      that.setData({
        list:[
          ...that.data.list,
        ],
      });
    },300)
  },
  /**
   * 语音消息发送
   */
  handleTouchStart: function(event) {
    console.log('手指按下事件触发');
    let that = this;
    that.setData({
      voiceSpeed: 0 // 假设 0 表示按下
    });
  },
  handleLongPress: function(event) {
    let that = this;
    console.log('长按事件触发');
    that.setData({
      voiceSpeed:1
    });
    manager.start({duration:30000, lang: "zh_CN"})
    // 处理长按事件的逻辑
    manager.onStart = function(res) {
      that.setData({
        voiceSpeed:5
      });
      console.log("成功开始录音识别", res)
    }
  },
  handleTouchEnd: function(event) {
    console.log('手指抬起事件触发',this.data.voiceSpeed);
    let that = this;
    if(that.data.voiceSpeed >= 1){
      that.animate();
      that.data.sendText = '模拟语音转文本';
      that.setData({
        list:[
          ...that.data.list,
          {
            id:that.data.list.length,
            type:'text',
            isUp:false,
            isDown:false,
            content:that.data.sendText,
            loading:false,
          },
          {
            id:that.data.list.length + 1,
            type:'html',
            isUp:false,
            isDown:false,
            content:`【北京奔驰连接器日结工】<br /><br />🚻 男女 18-48， 18-48周岁， 男女不限， 要求26个英文字母， 纹身烟疤拍照确认， 黑户，明显纹身，临时身份证不予接收，两班倒，站班<br /><br />💰 员工250元/天，支付60天；60天以后员工220元/天；每月10号发薪。培训工资100元/天，员工 16 元/时以上部分含税6个点的，打卡不满七天无工资；60天以后员工缴纳社保`,
            loading:true,
          },
        ],
        sendText:''
      });
      setTimeout(()=>{
        that.data.list.forEach(item => {
          item.loading = false;
        })
        that.setData({
          list:[
            ...that.data.list,
          ],
          sendText:''
        });
      },300)
    }
    that.setData({
      voiceSpeed:9
    });
    // 处理手指抬起事件的逻辑
    manager.stop();
    manager.onStop = function(res) {
      that.setData({
        voiceSpeed:6
      });
      console.log("监听录音结束 ；临时路径record file path", res.tempFilePath)
      console.log("监听录音结束 结果result", res.result)
    }
    // manager.onError = function(res) {
    //   that.setData({
    //     voiceSpeed:8
    //   });
    //   console.error("监听录音异常 error msg", res.msg)
    // }
  },
})