UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

31 lines 1.27 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.usePortalSettledCallback = void 0; var _react = require("react"); var _reactNative = require("react-native"); var _useStableCallback = require("./useStableCallback"); var SETTLE_FRAMES = _reactNative.Platform.OS === 'android' ? 2 : 0; var scheduleAfterFrames = (callback, frames, rafIds) => { if (frames <= 0) { callback(); return; } var rafId = requestAnimationFrame(() => scheduleAfterFrames(callback, frames - 1, rafIds)); rafIds.push(rafId); }; var usePortalSettledCallback = callback => { var rafIdsRef = (0, _react.useRef)([]); var stableCallback = (0, _useStableCallback.useStableCallback)(callback); var clearScheduledFrames = (0, _useStableCallback.useStableCallback)(() => { rafIdsRef.current.forEach(rafId => cancelAnimationFrame(rafId)); rafIdsRef.current = []; }); (0, _react.useEffect)(() => clearScheduledFrames, [clearScheduledFrames]); return (0, _useStableCallback.useStableCallback)((...args) => { clearScheduledFrames(); scheduleAfterFrames(() => stableCallback(...args), SETTLE_FRAMES, rafIdsRef.current); }); }; exports.usePortalSettledCallback = usePortalSettledCallback; //# sourceMappingURL=usePortalSettledCallback.js.map