@@ -6,13 +6,23 @@ import { Checkbox, Form, SubmitButton } from './form'
6
6
import FilterIcon from '@/svgs/equalizer-line.svg'
7
7
import styles from './notifications-filter.module.css'
8
8
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
+
9
20
export function NotificationsFilter ( { onClose } ) {
10
21
const router = useRouter ( )
11
22
12
23
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 ( )
16
26
} , [ router . query . inc ] )
17
27
18
28
const [ filters , setFilters ] = useState ( appliedFilters )
@@ -26,6 +36,7 @@ export function NotificationsFilter ({ onClose }) {
26
36
} , [ ] )
27
37
28
38
const filterRoutePush = useCallback ( ( ) => {
39
+ window . localStorage . setItem ( 'notificationFilters' , JSON . stringify ( [ ...filters ] ) )
29
40
const incstr = [ ...filters ] . join ( ',' )
30
41
router . replace ( // replace is necessary as lastChecked needs to stay to avoid re-refreshes
31
42
{
@@ -78,7 +89,11 @@ export function NotificationsFilter ({ onClose }) {
78
89
export default function NotificationsHeader ( ) {
79
90
const showModal = useShowModal ( )
80
91
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
+ } )
82
97
83
98
return (
84
99
< div className = 'd-flex align-items-center gap-2' >
0 commit comments