UNPKG

react-native-xenon

Version:

A powerful in-app debugging tool for React Native.

51 lines (50 loc) 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useConsoleInterceptor; var _react = require("react"); var _useImmer = require("use-immer"); var _interceptors = require("../interceptors"); const consoleInterceptor = new _interceptors.ConsoleInterceptor(); function useConsoleInterceptor({ autoEnabled }) { const [isInterceptorEnabled, setIsInterceptorEnabled] = (0, _react.useState)(autoEnabled); const [logMessages, setLogMessages] = (0, _useImmer.useImmer)([]); const clearAllLogMessages = () => { setLogMessages([]); }; const isEnabled = () => consoleInterceptor.isInterceptorEnabled; const enableInterception = (0, _react.useCallback)(() => { if (isEnabled()) return; consoleInterceptor.set('callback', (type, args) => { setLogMessages(draft => { draft.push({ type, values: args }); }); }).enableInterception(); setIsInterceptorEnabled(true); }, [setLogMessages]); const disableInterception = (0, _react.useCallback)(() => { if (!isEnabled()) return; consoleInterceptor.disableInterception(); setIsInterceptorEnabled(false); }, []); (0, _react.useEffect)(() => { if (autoEnabled) { enableInterception(); return disableInterception; } }, [autoEnabled, disableInterception, enableInterception]); return { isInterceptorEnabled, enableInterception, disableInterception, clearAllLogMessages, logMessages }; } //# sourceMappingURL=useConsoleInterceptor.js.map