taro-hooks
Version:
为 Taro 而设计的 Hooks Library
55 lines (54 loc) • 1.73 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.VIBRATEINTERVAL = void 0;
var tslib_1 = require("tslib");
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var usePromise_1 = tslib_1.__importDefault(require("../usePromise"));
var VIBRATEINTERVAL;
(function (VIBRATEINTERVAL) {
VIBRATEINTERVAL[VIBRATEINTERVAL["SHORT"] = 15] = "SHORT";
VIBRATEINTERVAL[VIBRATEINTERVAL["LONG"] = 400] = "LONG";
VIBRATEINTERVAL[VIBRATEINTERVAL["DEFAULT"] = 200] = "DEFAULT";
})(VIBRATEINTERVAL = exports.VIBRATEINTERVAL || (exports.VIBRATEINTERVAL = {}));
function useVibrate(interval, gap) {
if (gap === void 0) {
gap = VIBRATEINTERVAL.DEFAULT;
}
var timer = (0, core_1.useRef)();
var clear = function clear() {
if (timer.current) {
clearTimeout(timer.current);
timer.current = undefined;
}
};
var vibrateLongAsync = (0, usePromise_1["default"])(taro_1.vibrateLong);
var vibrateShortAsync = (0, usePromise_1["default"])(taro_1.vibrateShort);
var vibrate = function vibrate(useLong) {
var implementMethod = useLong ? vibrateLongAsync : vibrateShortAsync;
return implementMethod().then(function (res) {
if (interval) {
var vibrateInterval = gap + (useLong ? VIBRATEINTERVAL.LONG : VIBRATEINTERVAL.SHORT);
clear();
timer.current = setTimeout(function () {
vibrate(useLong);
}, vibrateInterval);
}
return res;
});
};
(0, core_1.useEffect)(function () {
return function () {
if (timer.current && interval) {
clear();
}
};
}, [timer, interval]);
return {
vibrate: vibrate,
clear: clear
};
}
exports["default"] = useVibrate;
;