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
];