From 4ac8be74eb3b98e01f26174a5e9f4b4c738ebedf Mon Sep 17 00:00:00 2001 From: kmmiio99o Date: Fri, 24 Jul 2026 14:33:44 +0200 Subject: [PATCH] fix: Cannot read property 'call' of null --- .../src/patches/createElementIntercept.ts | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/plugins/ServerDrawer/src/patches/createElementIntercept.ts b/plugins/ServerDrawer/src/patches/createElementIntercept.ts index 23a14e9..c803c2d 100644 --- a/plugins/ServerDrawer/src/patches/createElementIntercept.ts +++ b/plugins/ServerDrawer/src/patches/createElementIntercept.ts @@ -7,6 +7,7 @@ interface Intercept { const intercepts = new Map, Intercept>(); let origCreateElement: typeof React.createElement | null = null; +let isPatched = false; export function registerIntercept( original: React.ComponentType, @@ -17,28 +18,38 @@ export function registerIntercept( } export function patchCreateElement(cleanups: (() => void)[]) { - if (origCreateElement) return; + if (isPatched) return; + // Guard against React.createElement being null in some environments origCreateElement = React.createElement; + if (!origCreateElement) { + console.warn("[ServerDrawer] React.createElement is null, skipping patch"); + return; + } const patched = function (type: any, props: any, ...rest: any[]) { + if (!origCreateElement) { + // Fallback to original createElement if somehow null (should not happen) + return React.createElement(type, props, ...rest); + } const entry = intercepts.get(type); if (entry) { const newProps = entry.extraProps ? { ...props, ...entry.extraProps } : props; - return origCreateElement!.call(React, entry.replacement, newProps, ...rest); + return origCreateElement.call(React, entry.replacement, newProps, ...rest); } - return origCreateElement!.call(React, type, props, ...rest); + return origCreateElement.call(React, type, props, ...rest); }; Object.assign(patched, origCreateElement); React.createElement = patched as typeof React.createElement; + isPatched = true; cleanups.push(() => { - if (origCreateElement) { + if (isPatched && origCreateElement) { React.createElement = origCreateElement; - origCreateElement = null; + isPatched = false; } intercepts.clear(); });