import Taro from '@tarojs/taro'
import { memo, useCallback, useState } from 'react'
import { alert } from '@/common/common'

type Scope =
  | 'scope.userLocation'
  | 'scope.userLocation'
  | 'scope.record'
  | 'scope.camera'
  | 'scope.bluetooth'
  | 'scope.writePhotosAlbum'
  | 'scope.addPhoneContact'
  | 'scope.addPhoneCalendar'
  | 'scope.werun'
  | 'scope.address'
  | 'scope.invoiceTitle'
  | 'scope.invoice'
  | 'scope.userInfo'
interface Param {
  scope: Scope
  msg: string // 检查不通过时警告
}
export default ({ scope, msg }: Param) => {
  // 这个hook微信授权检查授权
  const check = useCallback(() => {
    return new Promise((resolve, reject) => {
      Taro.getSetting({
        success: (res) => {
          if (res.authSetting[scope]) {
            resolve(true)
          }
          else if (res.authSetting[scope] === undefined) {
            Taro.authorize({
              scope,
              success() {
                resolve(true)
              },
              fail() {
                alert.none(msg)
                // eslint-disable-next-line prefer-promise-reject-errors
                reject(false)
              },
            })
          }
          else {
            Taro.openSetting({
              success(res) {
                if (res.authSetting[scope]) {
                  resolve(true)
                }
                else {
                  alert.none(msg)
                  // eslint-disable-next-line prefer-promise-reject-errors
                  reject(false)
                }
              },
            })
          }
        },
      })
    })
  }, [scope])

  return {
    check,
  }
}
