@samitouri / QOS-React-2 / commits / e2e598c824

Remember last preferences tab via local storage

Brian Vaughn committed Jun 10, 2019 at 15:03 UTC e2e598c8245169c8875dcfdc70cde2bfdb5e4074
3 files changed +14 -15
src/devtools/views/Components/Components.js
+1 -1
@@ -28,7 +28,7 @@ function Components(_: {||}) {
28 </Suspense>
29 </div>
30 <ModalDialog />
31 - <SettingsModal defaultTabID="components" />
31 + <SettingsModal />
32 </div>
33 </InspectedElementContextController>
34 </OwnersListContextController>
src/devtools/views/Profiler/Profiler.js
+1 -1
@@ -111,7 +111,7 @@ function Profiler(_: {||}) {
111 </div>
112 </div>
113 <div className={styles.RightColumn}>{sidebar}</div>
114 - <SettingsModal defaultTabID="profiler" />
114 + <SettingsModal />
115 </div>
116 </SettingsModalContextController>
117 );
src/devtools/views/Settings/SettingsModal.js
+12 -13
@@ -6,7 +6,6 @@ import React, {
6 useEffect,
7 useMemo,
8 useRef,
9 - useState,
9 } from 'react';
10 import { SettingsModalContext } from './SettingsModalContext';
11 import Store from 'src/devtools/store';
@@ -14,7 +13,11 @@ import Button from '../Button';
13 import ButtonIcon from '../ButtonIcon';
14 import TabBar from '../TabBar';
15 import { StoreContext } from '../context';
17 -import { useModalDismissSignal, useSubscription } from '../hooks';
16 +import {
17 + useLocalStorage,
18 + useModalDismissSignal,
19 + useSubscription,
20 +} from '../hooks';
21 import ComponentsSettings from './ComponentsSettings';
22 import GeneralSettings from './GeneralSettings';
23 import ProfilerSettings from './ProfilerSettings';
@@ -23,11 +26,7 @@ import styles from './SettingsModal.css';
26
27 type TabID = 'general' | 'components' | 'profiler';
28
26 -type Props = {|
27 - defaultTabID: TabID,
28 -|};
29 -
30 -export default function SettingsModal({ defaultTabID = 'general' }: Props) {
29 +export default function SettingsModal(_: {||}) {
30 const { isModalShowing, setIsModalShowing } = useContext(
31 SettingsModalContext
32 );
@@ -55,16 +54,19 @@ export default function SettingsModal({ defaultTabID = 'general' }: Props) {
54 return null;
55 }
56
58 - return <SettingsModalImpl defaultTabID={defaultTabID} />;
57 + return <SettingsModalImpl />;
58 }
59
61 -function SettingsModalImpl({ defaultTabID }: Props) {
60 +function SettingsModalImpl(_: {||}) {
61 const { setIsModalShowing } = useContext(SettingsModalContext);
62 const dismissModal = useCallback(() => setIsModalShowing(false), [
63 setIsModalShowing,
64 ]);
65
67 - const [selectedTabID, selectTab] = useState<TabID>(defaultTabID);
66 + const [selectedTabID, selectTab] = useLocalStorage<TabID>(
67 + 'React::DevTools::selectedSettingsTabID',
68 + 'general'
69 + );
70
71 const modalRef = useRef<HTMLDivElement | null>(null);
72 useModalDismissSignal(modalRef, dismissModal);
@@ -117,18 +119,15 @@ const tabs = [
119 id: 'general',
120 icon: 'settings',
121 label: 'General',
120 - title: 'General preferences',
122 },
123 {
124 id: 'components',
125 icon: 'components',
126 label: 'Components',
126 - title: 'Components preferences',
127 },
128 {
129 id: 'profiler',
130 icon: 'profiler',
131 label: 'Profiler',
132 - title: 'Profiler preferences',
132 },
133 ];