@@ -6,6 +6,7 @@ import React, {
66 useContext ,
77 useCallback ,
88} from 'react'
9+ import { createLocalStorageStateHook } from 'use-local-storage-state'
910
1011// Context
1112import { MeasurementsContext } from 'src/dataExplorer/context/measurements'
@@ -15,6 +16,14 @@ import {TagsContext} from 'src/dataExplorer/context/tags'
1516// Types
1617import { Bucket } from 'src/types'
1718
19+ const useLocalStorageState = createLocalStorageStateHook (
20+ 'dataExplorer.schema' ,
21+ {
22+ bucket : null ,
23+ measurement : null ,
24+ }
25+ )
26+
1827const DEBOUNCE_TIMEOUT = 500
1928let timer
2029type NOOP = ( ) => void
@@ -57,15 +66,15 @@ export const FluxQueryBuilderProvider: FC = ({children}) => {
5766 const { getTagKeys, resetTags} = useContext ( TagsContext )
5867
5968 // States
60- const [ selectedBucket , setSelectedBucket ] = useState ( null )
61- const [ selectedMeasurement , setSelectedMeasurement ] = useState ( '' )
69+ const [ selection , setSelection ] = useLocalStorageState ( )
6270 const [ searchTerm , setSearchTerm ] = useState ( '' )
6371
6472 const handleSelectBucket = ( bucket : Bucket ) : void => {
65- setSelectedBucket ( bucket )
73+ selection . bucket = bucket
74+ selection . measurement = ''
75+ setSelection ( { ...selection } )
6676
6777 // Reset measurement, tags, and fields
68- setSelectedMeasurement ( '' )
6978 resetFields ( )
7079 resetTags ( )
7180
@@ -74,35 +83,36 @@ export const FluxQueryBuilderProvider: FC = ({children}) => {
7483 }
7584
7685 const handleSelectMeasurement = ( measurement : string ) : void => {
77- setSelectedMeasurement ( measurement )
86+ selection . measurement = measurement
87+ setSelection ( { ...selection } )
7888
7989 // Reset fields and tags
8090 resetFields ( )
8191 resetTags ( )
8292
8393 // Get fields and tags
84- getFields ( selectedBucket , measurement )
85- getTagKeys ( selectedBucket , measurement )
94+ getFields ( selection . bucket , measurement )
95+ getTagKeys ( selection . bucket , measurement )
8696 }
8797
8898 const handleSearchTerm = useCallback (
8999 ( searchTerm : string ) : void => {
90100 setSearchTerm ( searchTerm )
91101 debouncer ( ( ) => {
92- getFields ( selectedBucket , selectedMeasurement , searchTerm )
93- getTagKeys ( selectedBucket , selectedMeasurement , searchTerm )
102+ getFields ( selection . bucket , selection . measurement , searchTerm )
103+ getTagKeys ( selection . bucket , selection . measurement , searchTerm )
94104 } )
95105 } ,
96- [ getFields , getTagKeys , selectedBucket , selectedMeasurement ]
106+ [ getFields , getTagKeys , selection . bucket , selection . measurement ]
97107 )
98108
99109 return useMemo (
100110 ( ) => (
101111 < FluxQueryBuilderContext . Provider
102112 value = { {
103113 // Schema
104- selectedBucket,
105- selectedMeasurement,
114+ selectedBucket : selection . bucket ,
115+ selectedMeasurement : selection . measurement ,
106116 searchTerm,
107117 selectBucket : handleSelectBucket ,
108118 selectMeasurement : handleSelectMeasurement ,
@@ -114,8 +124,8 @@ export const FluxQueryBuilderProvider: FC = ({children}) => {
114124 ) ,
115125 [
116126 // Schema
117- selectedBucket ,
118- selectedMeasurement ,
127+ selection . bucket ,
128+ selection . measurement ,
119129 searchTerm ,
120130
121131 children ,
0 commit comments