taro-hooks
Version:
为 Taro 而设计的 Hooks Library
80 lines (79 loc) • 3.17 kB
JavaScript
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;
;