From 541dd6c4b6a51e853aa0e09843aed64dda313c3f Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Thu, 23 May 2019 08:48:51 -0700 Subject: [PATCH] Moved profiling-supported subscription into ProfilerContext --- src/devtools/views/DevTools.js | 22 ++----------------- src/devtools/views/Profiler/Profiler.js | 9 +++----- .../views/Profiler/ProfilerContext.js | 12 +++++++++- 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/devtools/views/DevTools.js b/src/devtools/views/DevTools.js index 766ddd82ed..c02eef4fe1 100644 --- a/src/devtools/views/DevTools.js +++ b/src/devtools/views/DevTools.js @@ -5,7 +5,7 @@ import '@reach/menu-button/styles.css'; import '@reach/tooltip/styles.css'; -import React, { useMemo, useState } from 'react'; +import React, { useState } from 'react'; import Store from '../store'; import { BridgeContext, StoreContext } from './context'; import Components from './Components/Components'; @@ -18,7 +18,6 @@ import ViewElementSourceContext from './Components/ViewElementSourceContext'; import { ProfilerContextController } from './Profiler/ProfilerContext'; import { ModalDialogContextController } from './ModalDialog'; import ReactLogo from './ReactLogo'; -import { useSubscription } from './hooks'; import styles from './DevTools.css'; @@ -92,20 +91,6 @@ export default function DevTools({ setTab(overrideTab); } - const supportsProfilingSubscription = useMemo( - () => ({ - getCurrentValue: () => store.supportsProfiling, - subscribe: (callback: Function) => { - store.addListener('supportsProfiling', callback); - return () => store.removeListener('supportsProfiling', callback); - }, - }), - [store] - ); - const supportsProfiling = useSubscription( - supportsProfilingSubscription - ); - return ( @@ -146,10 +131,7 @@ export default function DevTools({ className={styles.TabContent} hidden={tab !== 'profiler'} > - +
- + diff --git a/src/devtools/views/Profiler/ProfilerContext.js b/src/devtools/views/Profiler/ProfilerContext.js index da5090b1b2..99650c07f2 100644 --- a/src/devtools/views/Profiler/ProfilerContext.js +++ b/src/devtools/views/Profiler/ProfilerContext.js @@ -21,6 +21,9 @@ import type { ProfilingDataFrontend } from './types'; export type TabID = 'flame-chart' | 'ranked-chart' | 'interactions'; export type Context = {| + // Does the Store support profiling? + supportsProfiling: boolean, + // Which tab is selexted in the Profiler UI? selectedTabID: TabID, selectTab(id: TabID): void, @@ -77,6 +80,7 @@ type StoreProfilingState = {| isProcessingData: boolean, isProfiling: boolean, profilingData: ProfilingDataFrontend | null, + supportsProfiling: boolean, |}; type Props = {| @@ -97,25 +101,29 @@ function ProfilerContextController({ children }: Props) { isProcessingData: profilerStore.isProcessingData, isProfiling: profilerStore.isProfiling, profilingData: profilerStore.profilingData, + supportsProfiling: store.supportsProfiling, }), subscribe: (callback: Function) => { profilerStore.addListener('profilingData', callback); profilerStore.addListener('isProcessingData', callback); profilerStore.addListener('isProfiling', callback); + store.addListener('supportsProfiling', callback); return () => { profilerStore.removeListener('profilingData', callback); profilerStore.removeListener('isProcessingData', callback); profilerStore.removeListener('isProfiling', callback); + store.removeListener('supportsProfiling', callback); }; }, }), - [profilerStore] + [profilerStore, store] ); const { didRecordCommits, isProcessingData, isProfiling, profilingData, + supportsProfiling, } = useSubscription(subscription); const [prevProfilingData, setPrevProfilingData] = useState(); @@ -221,6 +229,7 @@ function ProfilerContextController({ children }: Props) { profilingData, startProfiling, stopProfiling, + supportsProfiling, rootID, setRootID, @@ -250,6 +259,7 @@ function ProfilerContextController({ children }: Props) { profilingData, startProfiling, stopProfiling, + supportsProfiling, rootID, setRootID,