UNPKG

taro-hooks

Version:
80 lines (79 loc) 3.17 kB
"use strict"; var _excluded = ["errMsg"]; function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var taro_1 = require("@tarojs/taro"); var core_1 = require("@taro-hooks/core"); var shared_1 = require("@taro-hooks/shared"); var usePromise_1 = tslib_1.__importDefault(require("../usePromise")); function useBluetooth() { var adapter = (0, core_1.useRef)(); var _ref = (0, core_1.useState)([]), devices = _ref[0], setDevices = _ref[1]; var _ref2 = (0, core_1.useState)([]), connectedDevices = _ref2[0], setConnectedDevices = _ref2[1]; var getState = (0, usePromise_1["default"])(taro_1.getBluetoothAdapterState); var getDevices = (0, usePromise_1["default"])(taro_1.getBluetoothDevices); var getConnected = (0, usePromise_1["default"])(taro_1.getConnectedBluetoothDevices); var openAdapter = (0, usePromise_1["default"])(taro_1.openBluetoothAdapter); var closeAdapter = (0, usePromise_1["default"])(taro_1.closeBluetoothAdapter); var toggleAdapter = function toggleAdapter(switchOrMode) { if ((0, shared_1.isBoolean)(switchOrMode) && switchOrMode || (0, shared_1.isString)(switchOrMode)) { return openAdapter({ mode: (0, shared_1.isString)(switchOrMode) ? switchOrMode : 'central' }).then(function (res) { Promise.all([getState(), getDevices(), getConnected()]).then(function (_ref3) { var stateResult = _ref3[0], devicesResult = _ref3[1], connectResult = _ref3[2]; var errMsg = stateResult.errMsg, state = _objectWithoutPropertiesLoose(stateResult, _excluded); adapter.current = state; var devices = devicesResult.devices; setDevices(devices); var connected = connectResult.devices; setConnectedDevices(connected); }); return res; }); } return closeAdapter(); }; (0, core_1.useEffect)(function () { toggleAdapter(true); return function () { toggleAdapter(false); }; }, []); var makePair = (0, usePromise_1["default"])(taro_1.makeBluetoothPair); var isPairedAsync = (0, usePromise_1["default"])(taro_1.isBluetoothDevicePaired); var isPaired = function isPaired(deviceId) { return isPairedAsync({ deviceId: deviceId }); }; var startDiscovery = (0, usePromise_1["default"])(taro_1.startBluetoothDevicesDiscovery); var stopDiscovery = (0, usePromise_1["default"])(taro_1.stopBluetoothDevicesDiscovery); var toggleDiscovery = function toggleDiscovery(option) { return option ? startDiscovery(option) : stopDiscovery(); }; return [{ devices: devices, connectedDevices: connectedDevices, adapter: adapter.current }, { toggleAdapter: toggleAdapter, getState: getState, getDevices: getDevices, getConnected: getConnected, makePair: makePair, isPaired: isPaired, toggleDiscovery: toggleDiscovery }]; } exports["default"] = useBluetooth;