diff --git a/packages/react-devtools-shared/src/devtools/store.js b/packages/react-devtools-shared/src/devtools/store.js index 3d98d0ff154e1..d05b6feedea6c 100644 --- a/packages/react-devtools-shared/src/devtools/store.js +++ b/packages/react-devtools-shared/src/devtools/store.js @@ -416,6 +416,11 @@ export default class Store extends EventEmitter<{| } getElementByID(id: number): Element | null { + if ( + this._profilerStore._dataFrontend && + this._profilerStore._dataFrontend.imported === true + ) + return null; const element = this._idToElement.get(id); if (element == null) { console.warn(`No element found with id "${id}"`); diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js b/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js index 7f14438aaa6ec..7b22e7561d924 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js @@ -16,7 +16,7 @@ import ButtonIcon from '../ButtonIcon'; import {StoreContext} from '../context'; import { prepareProfilingDataExport, - prepareProfilingDataFrontendFromExport, + prepareProfilingDataFrontendFromImport, } from './utils'; import {downloadFile} from '../utils'; @@ -77,11 +77,11 @@ export default function ProfilingImportExportButtons() { fileReader.addEventListener('load', () => { try { const raw = ((fileReader.result: any): string); - const profilingDataExport = ((JSON.parse( + const profilingDataImport = ((JSON.parse( raw, ): any): ProfilingDataExport); - profilerStore.profilingData = prepareProfilingDataFrontendFromExport( - profilingDataExport, + profilerStore.profilingData = prepareProfilingDataFrontendFromImport( + profilingDataImport, ); } catch (error) { modalDialogDispatch({ diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/types.js b/packages/react-devtools-shared/src/devtools/views/Profiler/types.js index 4156aa592c4e8..ab63f093ed205 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/types.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/types.js @@ -105,6 +105,7 @@ export type ProfilingDataForRootFrontend = {| export type ProfilingDataFrontend = {| // Profiling data per root. dataForRoots: Map, + imported: boolean, |}; export type CommitDataExport = {| diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/utils.js b/packages/react-devtools-shared/src/devtools/views/Profiler/utils.js index c453fc166cf5c..acac810ca134e 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/utils.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/utils.js @@ -99,21 +99,21 @@ export function prepareProfilingDataFrontendFromBackendAndStore( ); }); - return {dataForRoots}; + return {dataForRoots, imported: false}; } // Converts a Profiling data export into the format required by the Store. -export function prepareProfilingDataFrontendFromExport( - profilingDataExport: ProfilingDataExport, +export function prepareProfilingDataFrontendFromImport( + profilingDataImport: ProfilingDataExport, ): ProfilingDataFrontend { - const {version} = profilingDataExport; + const {version} = profilingDataImport; if (version !== PROFILER_EXPORT_VERSION) { throw Error(`Unsupported profiler export version "${version}"`); } const dataForRoots: Map = new Map(); - profilingDataExport.dataForRoots.forEach( + profilingDataImport.dataForRoots.forEach( ({ commitData, displayName, @@ -156,7 +156,7 @@ export function prepareProfilingDataFrontendFromExport( }, ); - return {dataForRoots}; + return {dataForRoots, imported: true}; } // Converts a Store Profiling data into a format that can be safely (JSON) serialized for export.