From d74eeff8dfc4a75059c994f425b684ef80c082a3 Mon Sep 17 00:00:00 2001 From: Edmond Chui Date: Wed, 16 Oct 2024 07:20:55 -0700 Subject: [PATCH] Fusebox reload-to-profile refactor Summary: Changelog: [internal] Follow up on feedback from D64077813 oliver_clean Differential Revision: D64469842 --- .../Libraries/Core/setUpReactDevTools.js | 107 ++++++++---------- 1 file changed, 49 insertions(+), 58 deletions(-) diff --git a/packages/react-native/Libraries/Core/setUpReactDevTools.js b/packages/react-native/Libraries/Core/setUpReactDevTools.js index cdfc33df66d717..f05a89692331e5 100644 --- a/packages/react-native/Libraries/Core/setUpReactDevTools.js +++ b/packages/react-native/Libraries/Core/setUpReactDevTools.js @@ -43,22 +43,16 @@ if (__DEV__) { } } - const reloadAndProfileConfigPersistence = - makeReloadAndProfileConfigPersistence( - maybeReactDevToolsRuntimeSettingsModuleModule, - ); + const { + isReloadAndProfileSupported, + isProfiling, + profilingSettings, + onReloadAndProfile, + onReloadAndProfileFlagsReset, + } = readReloadAndProfileConfig(maybeReactDevToolsRuntimeSettingsModuleModule); - const shouldStartProfilingNow = - reloadAndProfileConfigPersistence?.getReloadAndProfileConfig() - ?.shouldReloadAndProfile === true; - const profilingSettings = { - recordChangeDescriptions: - reloadAndProfileConfigPersistence?.getReloadAndProfileConfig() - ?.recordChangeDescriptions === true, - recordTimeline: false, - }; // Install hook before React is loaded. - initialize(hookSettings, shouldStartProfilingNow, profilingSettings); + initialize(hookSettings, isProfiling, profilingSettings); // This should be defined in DEV, otherwise error is expected. const fuseboxReactDevToolsDispatcher = @@ -97,23 +91,10 @@ if (__DEV__) { nativeStyleEditorValidAttributes: Object.keys(ReactNativeStyleAttributes), resolveRNStyle, onSettingsUpdated: handleReactDevToolsSettingsUpdate, - isReloadAndProfileSupported: - maybeReactDevToolsRuntimeSettingsModuleModule != null, - isProfiling: - reloadAndProfileConfigPersistence?.getReloadAndProfileConfig() - ?.shouldReloadAndProfile === true, - onReloadAndProfile: (recordChangeDescriptions: boolean) => { - reloadAndProfileConfigPersistence?.setReloadAndProfileConfig({ - shouldReloadAndProfile: true, - recordChangeDescriptions, - }); - }, - onReloadAndProfileFlagsReset: () => { - reloadAndProfileConfigPersistence?.setReloadAndProfileConfig({ - shouldReloadAndProfile: false, - recordChangeDescriptions: false, - }); - }, + isReloadAndProfileSupported, + isProfiling, + onReloadAndProfile, + onReloadAndProfileFlagsReset, }); } @@ -173,23 +154,10 @@ if (__DEV__) { ), websocket: ws, onSettingsUpdated: handleReactDevToolsSettingsUpdate, - isReloadAndProfileSupported: - maybeReactDevToolsRuntimeSettingsModuleModule != null, - isProfiling: - reloadAndProfileConfigPersistence?.getReloadAndProfileConfig() - ?.shouldReloadAndProfile === true, - onReloadAndProfile: (recordChangeDescriptions: boolean) => { - reloadAndProfileConfigPersistence?.setReloadAndProfileConfig({ - shouldReloadAndProfile: true, - recordChangeDescriptions, - }); - }, - onReloadAndProfileFlagsReset: () => { - reloadAndProfileConfigPersistence?.setReloadAndProfileConfig({ - shouldReloadAndProfile: false, - recordChangeDescriptions: false, - }); - }, + isReloadAndProfileSupported, + isProfiling, + onReloadAndProfile, + onReloadAndProfileFlagsReset, }); } } @@ -222,19 +190,42 @@ if (__DEV__) { connectToWSBasedReactDevToolsFrontend(); // Try connecting once on load } -function makeReloadAndProfileConfigPersistence( +function readReloadAndProfileConfig( maybeModule: ?NativeReactDevToolsRuntimeSettingsModuleSpec, ) { - if (maybeModule == null) { - return; - } + const isReloadAndProfileSupported = maybeModule != null; + const config = maybeModule?.getReloadAndProfileConfig(); + const isProfiling = config?.shouldReloadAndProfile === true; + const profilingSettings = { + recordChangeDescriptions: config?.recordChangeDescriptions === true, + recordTimeline: false, + }; + const onReloadAndProfile = (recordChangeDescriptions: boolean) => { + if (maybeModule == null) { + return; + } + + maybeModule.setReloadAndProfileConfig({ + shouldReloadAndProfile: true, + recordChangeDescriptions, + }); + }; + const onReloadAndProfileFlagsReset = () => { + if (maybeModule == null) { + return; + } + + maybeModule.setReloadAndProfileConfig({ + shouldReloadAndProfile: false, + recordChangeDescriptions: false, + }); + }; return { - setReloadAndProfileConfig(config: PartialReloadAndProfileConfig): void { - maybeModule.setReloadAndProfileConfig(config); - }, - getReloadAndProfileConfig() { - return maybeModule.getReloadAndProfileConfig(); - }, + isReloadAndProfileSupported, + isProfiling, + profilingSettings, + onReloadAndProfile, + onReloadAndProfileFlagsReset, }; }