UNPKG

@bacons/expo-metro-runtime

Version:

Tools for making experimental Metro bundler features work

46 lines 1.91 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useRejectionHandler = void 0; const react_1 = __importDefault(require("react")); const ExceptionsManager_1 = __importDefault(require("./modules/ExceptionsManager")); function useRejectionHandler() { const hasError = react_1.default.useRef(false); react_1.default.useEffect(() => { function onUnhandledError(ev) { hasError.current = true; const error = ev === null || ev === void 0 ? void 0 : ev.error; if (!error || !(error instanceof Error) || typeof error.stack !== "string") { return; } ExceptionsManager_1.default.handleException(error, // TODO(EvanBacon): Are these actually "fatal"? false); } function onUnhandledRejection(ev) { hasError.current = true; const reason = ev === null || ev === void 0 ? void 0 : ev.reason; if (!reason || !(reason instanceof Error) || typeof reason.stack !== "string") { return; } ExceptionsManager_1.default.handleException(reason, // TODO(EvanBacon): Are these actually "fatal"? false); } window.addEventListener("unhandledrejection", onUnhandledRejection); window.addEventListener("error", onUnhandledError); return () => { window.removeEventListener("error", onUnhandledError); window.removeEventListener("unhandledrejection", onUnhandledRejection); }; }, []); return hasError; } exports.useRejectionHandler = useRejectionHandler; //# sourceMappingURL=useRejectionHandler.js.map