mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 21:33:47 -05:00
2ca6d2dadb
[ReactFileTree] Use Local Storage for Open/Closed state of folders and selected doc GitOrigin-RevId: 55073c92fef6c6e1d538a42b22d60d8657b92153
25 lines
638 B
JavaScript
25 lines
638 B
JavaScript
import { useState, useCallback } from 'react'
|
|
import localStorage from './local-storage'
|
|
|
|
function usePersistedState(key, defaultValue) {
|
|
const [value, setValue] = useState(() => {
|
|
const keyExists = localStorage.getItem(key) != null
|
|
return keyExists ? localStorage.getItem(key) : defaultValue
|
|
})
|
|
|
|
const updateFunction = useCallback(
|
|
newValue => {
|
|
if (newValue === defaultValue) {
|
|
localStorage.removeItem(key)
|
|
} else {
|
|
localStorage.setItem(key, newValue)
|
|
}
|
|
setValue(newValue)
|
|
},
|
|
[key, defaultValue]
|
|
)
|
|
|
|
return [value, updateFunction]
|
|
}
|
|
|
|
export default usePersistedState
|