From 117afdb67fa3f7f9b5dc4af6a8c35b2ceb9c2601 Mon Sep 17 00:00:00 2001 From: rahulramesha <71900764+rahulramesha@users.noreply.github.com> Date: Tue, 24 Sep 2024 19:37:12 +0530 Subject: [PATCH] add requestIdleCallback polyfill to fix Safari crash (#5689) --- web/app/provider.tsx | 2 ++ web/core/lib/polyfills/index.ts | 1 + web/core/lib/polyfills/requestIdleCallback.ts | 24 +++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 web/core/lib/polyfills/index.ts create mode 100644 web/core/lib/polyfills/requestIdleCallback.ts diff --git a/web/app/provider.tsx b/web/app/provider.tsx index 12b6a09f8..dba975a63 100644 --- a/web/app/provider.tsx +++ b/web/app/provider.tsx @@ -12,6 +12,8 @@ import { SWR_CONFIG } from "@/constants/swr-config"; import { resolveGeneralTheme } from "@/helpers/theme.helper"; // nprogress import { AppProgressBar } from "@/lib/n-progress"; +// polyfills +import "@/lib/polyfills"; // mobx store provider import { StoreProvider } from "@/lib/store-context"; // wrappers diff --git a/web/core/lib/polyfills/index.ts b/web/core/lib/polyfills/index.ts new file mode 100644 index 000000000..20b3b476c --- /dev/null +++ b/web/core/lib/polyfills/index.ts @@ -0,0 +1 @@ +export * from "./requestIdleCallback"; diff --git a/web/core/lib/polyfills/requestIdleCallback.ts b/web/core/lib/polyfills/requestIdleCallback.ts new file mode 100644 index 000000000..76dd4c29e --- /dev/null +++ b/web/core/lib/polyfills/requestIdleCallback.ts @@ -0,0 +1,24 @@ +if (typeof window !== "undefined" && window) { + // Add request callback polyfill to browser incase it does not exist + window.requestIdleCallback = + window.requestIdleCallback ?? + function (cb) { + var start = Date.now(); + return setTimeout(function () { + cb({ + didTimeout: false, + timeRemaining: function () { + return Math.max(0, 50 - (Date.now() - start)); + }, + }); + }, 1); + }; + + window.cancelIdleCallback = + window.cancelIdleCallback ?? + function (id) { + clearTimeout(id); + }; +} + +export {};