UNPKG

taro-hooks

Version:
48 lines 1.48 kB
import { vibrateLong, vibrateShort } from '@tarojs/taro'; import { useRef, useEffect } from '@taro-hooks/core'; import usePromise from '../usePromise'; export var VIBRATEINTERVAL; (function (VIBRATEINTERVAL) { VIBRATEINTERVAL[VIBRATEINTERVAL["SHORT"] = 15] = "SHORT"; VIBRATEINTERVAL[VIBRATEINTERVAL["LONG"] = 400] = "LONG"; VIBRATEINTERVAL[VIBRATEINTERVAL["DEFAULT"] = 200] = "DEFAULT"; })(VIBRATEINTERVAL || (VIBRATEINTERVAL = {})); function useVibrate(interval, gap) { if (gap === void 0) { gap = VIBRATEINTERVAL.DEFAULT; } var timer = useRef(); var clear = function clear() { if (timer.current) { clearTimeout(timer.current); timer.current = undefined; } }; var vibrateLongAsync = usePromise(vibrateLong); var vibrateShortAsync = usePromise(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; }); }; useEffect(function () { return function () { if (timer.current && interval) { clear(); } }; }, [timer, interval]); return { vibrate: vibrate, clear: clear }; } export default useVibrate;