UNPKG

taro-hooks

Version:
55 lines (54 loc) 1.73 kB
"use strict"; 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;