From 8bbf1dbf5e7a24b1d617339d8f38c41302a183ca Mon Sep 17 00:00:00 2001 From: amsyarasyiq <82711525+amsyarasyiq@users.noreply.github.com> Date: Wed, 22 May 2024 14:46:57 +0800 Subject: [PATCH] fix(metro): proxies when unindexed --- src/lib/api/patcher.ts | 4 ++-- src/metro/proxy.ts | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lib/api/patcher.ts b/src/lib/api/patcher.ts index f8ed541..c804783 100644 --- a/src/lib/api/patcher.ts +++ b/src/lib/api/patcher.ts @@ -8,12 +8,12 @@ import { function shim any>(fn: T) { return function shimmed(this: any, ...args: Parameters) { const proxyInfo = getFindProxyInfo(args[1]); - if (proxyInfo && !proxyInfo.cache) { + if (proxyInfo && !proxyInfo.cache && proxyInfo.indexed) { let cancel = false; let unpatch = () => cancel = true; proxyInfo.subscribe(exp => { - args[1] = exp; if (cancel) return; + args[1] = exp; unpatch = fn.apply(this, args); }); diff --git a/src/metro/proxy.ts b/src/metro/proxy.ts index ad698e9..5a89656 100644 --- a/src/metro/proxy.ts +++ b/src/metro/proxy.ts @@ -20,7 +20,9 @@ interface FindProxyInfo { } function getIndexedSingleFind(filter: FilterFn) { - const id = Object.keys(getMetroCache().findIndex[filter.uniq]!).filter(k => k !== "_")[0]; + const modulesMap = getMetroCache().findIndex[filter.uniq]; + if (!modulesMap) return; + const id = Object.keys(modulesMap).filter(k => k !== "_")[0]; return id ? Number(id) : void 0; }