var http = require('../../utils/request')

Page({
  data: {
    statusBarHeight: 44,
    scanning: false,
    deviceId: '',
    error: ''
  },

  onBack: function () {
    wx.navigateBack({
      fail: function () {
        wx.reLaunch({ url: '/pages/index/index' })
      }
    })
  },

  onLoad: function () {
    var app = getApp()
    this.setData({ statusBarHeight: app.globalData.statusBarHeight })
  },

  onScan: function () {
    var self = this
    self.setData({ scanning: true, error: '' })

    wx.scanCode({
      onlyFromCamera: true,
      scanType: ['qrCode'],
      success: function (res) {
        var deviceId = self.parseDeviceId(res.result)
        if (!deviceId) {
          self.setData({ scanning: false, error: '无效的设备二维码' })
          return
        }
        self.bindDevice(deviceId)
      },
      fail: function () {
        self.setData({ scanning: false })
      }
    })
  },

  parseDeviceId: function (content) {
    content = (content || '').trim()
    if (/^[0-9A-Fa-f]{16}$/.test(content)) return content
    if (/^[0-9A-Fa-f]+([ _-][0-9A-Fa-f]+)+$/.test(content)) return content
    try {
      var url = new URL(content)
      var id = url.searchParams.get('device_id') || url.searchParams.get('id')
      return id || null
    } catch (e) {
      return null
    }
  },

  bindDevice: function (deviceId) {
    var self = this
    self.setData({ scanning: true, error: '' })
    http.post('/api/v1/device/bind', { device_id: deviceId }).then(function (data) {
      self.setData({ scanning: false })
      wx.redirectTo({
        url: '/pages/ble-connect/ble-connect?device_id=' + encodeURIComponent(deviceId) + '&bind_token=' + encodeURIComponent(data.bind_token || '')
      })
    }).catch(function (err) {
      self.setData({ scanning: false })
      if (err && err.code === 2001) {
        wx.showToast({ title: '已绑定设备', icon: 'none' })
        setTimeout(function () {
          wx.navigateBack()
        }, 1500)
      } else {
        self.setData({ error: err.message || '绑定失败' })
      }
    })
  },

  onManualInput: function () {
    var self = this
    wx.showModal({
      title: '手动输入设备号',
      editable: true,
      placeholderText: '请输入设备ID，如 672B6D5A 4DCD861',
      success: function (res) {
        if (res.confirm && res.content) {
          var deviceId = self.parseDeviceId(res.content)
          if (deviceId) {
            self.bindDevice(deviceId)
          } else {
            wx.showToast({ title: '设备号格式不正确', icon: 'none' })
          }
        }
      }
    })
  }
})
