mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
451736b557
## Summary This pull request aims to improve the maintainability of the codebase by consolidating types and constants that are shared between the backend and frontend. This consolidation will allow us to maintain backwards compatibility in the frontend in the future. To achieve this, we have moved the shared types and constants to the following blessed files: - react-devtools-shared/src/constants - react-devtools-shared/src/types - react-devtools-shared/src/backend/types - react-devtools-shared/src/backend/NativeStyleEditor/types Please note that the inclusion of NativeStyleEditor in this list is temporary, and we plan to remove it once we have a better plugin system in place. ## How did you test this change? I have tested it by running `yarn flow dom-node`, which reports no errors.
77 lines
2.5 KiB
JavaScript
77 lines
2.5 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
*/
|
|
|
|
import type {ConsolePatchSettings} from 'react-devtools-shared/src/backend/types';
|
|
import {writeConsolePatchSettingsToWindow} from 'react-devtools-shared/src/backend/console';
|
|
import {castBool, castBrowserTheme} from 'react-devtools-shared/src/utils';
|
|
|
|
// Note: all keys should be optional in this type, because users can use newer
|
|
// versions of React DevTools with older versions of React Native, and the object
|
|
// provided by React Native may not include all of this type's fields.
|
|
export type DevToolsSettingsManager = {
|
|
getConsolePatchSettings: ?() => string,
|
|
setConsolePatchSettings: ?(key: string) => void,
|
|
};
|
|
|
|
export function initializeUsingCachedSettings(
|
|
devToolsSettingsManager: DevToolsSettingsManager,
|
|
) {
|
|
initializeConsolePatchSettings(devToolsSettingsManager);
|
|
}
|
|
|
|
function initializeConsolePatchSettings(
|
|
devToolsSettingsManager: DevToolsSettingsManager,
|
|
) {
|
|
if (devToolsSettingsManager.getConsolePatchSettings == null) {
|
|
return;
|
|
}
|
|
const consolePatchSettingsString =
|
|
devToolsSettingsManager.getConsolePatchSettings();
|
|
if (consolePatchSettingsString == null) {
|
|
return;
|
|
}
|
|
const parsedConsolePatchSettings = parseConsolePatchSettings(
|
|
consolePatchSettingsString,
|
|
);
|
|
if (parsedConsolePatchSettings == null) {
|
|
return;
|
|
}
|
|
writeConsolePatchSettingsToWindow(parsedConsolePatchSettings);
|
|
}
|
|
|
|
function parseConsolePatchSettings(
|
|
consolePatchSettingsString: string,
|
|
): ?ConsolePatchSettings {
|
|
const parsedValue = JSON.parse(consolePatchSettingsString ?? '{}');
|
|
const {
|
|
appendComponentStack,
|
|
breakOnConsoleErrors,
|
|
showInlineWarningsAndErrors,
|
|
hideConsoleLogsInStrictMode,
|
|
browserTheme,
|
|
} = parsedValue;
|
|
return {
|
|
appendComponentStack: castBool(appendComponentStack) ?? true,
|
|
breakOnConsoleErrors: castBool(breakOnConsoleErrors) ?? false,
|
|
showInlineWarningsAndErrors: castBool(showInlineWarningsAndErrors) ?? true,
|
|
hideConsoleLogsInStrictMode: castBool(hideConsoleLogsInStrictMode) ?? false,
|
|
browserTheme: castBrowserTheme(browserTheme) ?? 'dark',
|
|
};
|
|
}
|
|
|
|
export function cacheConsolePatchSettings(
|
|
devToolsSettingsManager: DevToolsSettingsManager,
|
|
value: ConsolePatchSettings,
|
|
): void {
|
|
if (devToolsSettingsManager.setConsolePatchSettings == null) {
|
|
return;
|
|
}
|
|
devToolsSettingsManager.setConsolePatchSettings(JSON.stringify(value));
|
|
}
|