Skip to content

Commit dfa3e07

Browse files
committed
localStorage implementation
1 parent 34e39f8 commit dfa3e07

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

components/notifications-filter.js

+19-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,23 @@ import { Checkbox, Form, SubmitButton } from './form'
66
import FilterIcon from '@/svgs/equalizer-line.svg'
77
import styles from './notifications-filter.module.css'
88

9+
export const getFiltersFromInc = (inc) => {
10+
const filters = new Set(inc?.split(',') || [])
11+
filters.delete('')
12+
return filters
13+
}
14+
15+
export const getSavedFilters = () => {
16+
const savedFilters = JSON.parse(window.localStorage.getItem('notificationFilters'))
17+
return savedFilters ? new Set(savedFilters) : new Set()
18+
}
19+
920
export function NotificationsFilter ({ onClose }) {
1021
const router = useRouter()
1122

1223
const appliedFilters = useMemo(() => {
13-
const filters = new Set(router.query.inc?.split(',') || []) // get filters from URL
14-
filters.delete('') // avoid empty category
15-
return filters
24+
const incFilters = getFiltersFromInc(router.query.inc)
25+
return incFilters.size ? incFilters : getSavedFilters()
1626
}, [router.query.inc])
1727

1828
const [filters, setFilters] = useState(appliedFilters)
@@ -26,6 +36,7 @@ export function NotificationsFilter ({ onClose }) {
2636
}, [])
2737

2838
const filterRoutePush = useCallback(() => {
39+
window.localStorage.setItem('notificationFilters', JSON.stringify([...filters]))
2940
const incstr = [...filters].join(',')
3041
router.replace( // replace is necessary as lastChecked needs to stay to avoid re-refreshes
3142
{
@@ -78,7 +89,11 @@ export function NotificationsFilter ({ onClose }) {
7889
export default function NotificationsHeader () {
7990
const showModal = useShowModal()
8091
const router = useRouter()
81-
const hasActiveFilters = router.query.inc?.length
92+
93+
const hasActiveFilters = useMemo(() => {
94+
const incFilters = getFiltersFromInc(router.query.inc)
95+
return incFilters.size > 0
96+
})
8297

8398
return (
8499
<div className='d-flex align-items-center gap-2'>

0 commit comments

Comments
 (0)