diff --git a/lib/modules/src/finders/wait.ts b/lib/modules/src/finders/wait.ts index 7fa204f..cfcfa1b 100644 --- a/lib/modules/src/finders/wait.ts +++ b/lib/modules/src/finders/wait.ts @@ -2,6 +2,7 @@ import { mInitialized } from '../metro/patches' import { onAnyModuleInitialized, onModuleFinishedImporting, + onModuleInitialized, } from '../metro/subscriptions' import { getInitializedModuleExports } from '../metro/utils' import { @@ -151,21 +152,16 @@ export function waitForModuleByImportedPath( callback: WaitForModulesCallback, options?: BaseWaitForModulesOptions, ): WaitForModulesUnsubscribeFunction { - const unsub = onModuleFinishedImporting( - options?.all - ? (id, cmpPath) => { - if (path === cmpPath) { - unsub() - callback(getInitializedModuleExports(id), id) - } - } - : (id, cmpPath) => { - if (mInitialized.has(id) && path === cmpPath) { - unsub() - callback(getInitializedModuleExports(id), id) - } - }, - ) + const unsub = onModuleFinishedImporting((id, cmpPath) => { + if (path === cmpPath) { + unsub() + // Module is not fully initialized yet, so we need to wait for it + onModuleInitialized(id, () => { + if (!options?.all || mInitialized.has(id)) + callback(getInitializedModuleExports(id), id) + }) + } + }) return unsub }