UNPKG

react-native-xenon

Version:

A powerful in-app debugging tool for React Native.

47 lines (46 loc) 1.43 kB
"use strict"; import { useCallback, useEffect, useState } from 'react'; import { useImmer } from 'use-immer'; import { ConsoleInterceptor } from "../interceptors/index.js"; const consoleInterceptor = new ConsoleInterceptor(); export default function useConsoleInterceptor({ autoEnabled }) { const [isInterceptorEnabled, setIsInterceptorEnabled] = useState(autoEnabled); const [logMessages, setLogMessages] = useImmer([]); const clearAllLogMessages = () => { setLogMessages([]); }; const isEnabled = () => consoleInterceptor.isInterceptorEnabled; const enableInterception = useCallback(() => { if (isEnabled()) return; consoleInterceptor.set('callback', (type, args) => { setLogMessages(draft => { draft.push({ type, values: args }); }); }).enableInterception(); setIsInterceptorEnabled(true); }, [setLogMessages]); const disableInterception = useCallback(() => { if (!isEnabled()) return; consoleInterceptor.disableInterception(); setIsInterceptorEnabled(false); }, []); useEffect(() => { if (autoEnabled) { enableInterception(); return disableInterception; } }, [autoEnabled, disableInterception, enableInterception]); return { isInterceptorEnabled, enableInterception, disableInterception, clearAllLogMessages, logMessages }; } //# sourceMappingURL=useConsoleInterceptor.js.map