1
+ import { useEffect , useMemo , useState } from 'react' ;
1
2
import constate from 'constate' ;
2
- import { useMemo , useState } from 'react' ;
3
3
import { Enhet } from '../rest/data/innlogget-veileder' ;
4
4
import { UtkastStatus } from '../rest/data/bruker' ;
5
5
import { OrNothing } from '../utils/types/ornothing' ;
@@ -13,22 +13,36 @@ export interface Filters {
13
13
visMineBrukere : boolean ;
14
14
}
15
15
16
+ interface StoredSearch {
17
+ status : OrNothing < UtkastStatus > ;
18
+ visMineBrukere : OrNothing < boolean > ;
19
+ orderByField : OrNothing < OrderByField > ;
20
+ orderByDirection : OrNothing < OrderByDirection > ;
21
+ currentPage : OrNothing < number > ;
22
+ }
23
+
24
+ const SOK_STORAGE_NAME = 'beslutteroversikt_sok' ;
25
+
26
+ const storedSearchJson = window . sessionStorage . getItem ( SOK_STORAGE_NAME ) ;
27
+ const storedSearch : StoredSearch = storedSearchJson ? JSON . parse ( storedSearchJson ) : { } ;
28
+
16
29
export const [ SokStoreProvider , useSokStore ] = constate ( ( ) => {
30
+
17
31
// Paginering
18
32
const [ totalPages , setTotalPages ] = useState ( 1 ) ;
19
- const [ currentPage , setCurrentPage ] = useState ( 1 ) ;
33
+ const [ currentPage , setCurrentPage ] = useState ( storedSearch . currentPage || 1 ) ;
20
34
const [ seeAll , setSeeAll ] = useState ( false ) ;
21
35
const [ pageSize , setPageSize ] = useState ( DEFAULT_PAGINATION_SIZE ) ;
22
36
23
37
// Sortering
24
- const [ orderByField , setOrderByField ] = useState < OrNothing < OrderByField > > ( ) ;
25
- const [ orderByDirection , setOrderByDirection ] = useState < OrNothing < OrderByDirection > > ( ) ;
38
+ const [ orderByField , setOrderByField ] = useState < OrNothing < OrderByField > > ( storedSearch . orderByField ) ;
39
+ const [ orderByDirection , setOrderByDirection ] = useState < OrNothing < OrderByDirection > > ( storedSearch . orderByDirection ) ;
26
40
27
41
// Filtrering
28
42
const [ fnrOrNameFilter , setFnrOrNameFilter ] = useState < string > ( '' ) ;
29
43
const [ enheterFilter , setEnheterFilter ] = useState < Enhet [ ] > ( [ ] ) ;
30
- const [ statusFilter , setStatusFilter ] = useState < UtkastStatus > ( ) ;
31
- const [ visMineBrukere , setVisMineBrukere ] = useState < boolean > ( false ) ;
44
+ const [ statusFilter , setStatusFilter ] = useState < UtkastStatus | undefined > ( storedSearch . status || undefined ) ;
45
+ const [ visMineBrukere , setVisMineBrukere ] = useState < boolean > ( storedSearch . visMineBrukere || false ) ;
32
46
33
47
const filters : Filters = useMemo ( ( ) => {
34
48
return {
@@ -39,6 +53,17 @@ export const [SokStoreProvider, useSokStore] = constate(() => {
39
53
} ;
40
54
} , [ fnrOrNameFilter , enheterFilter , statusFilter , visMineBrukere ] ) ;
41
55
56
+ useEffect ( ( ) => {
57
+ const updatedSearch : StoredSearch = {
58
+ ...filters ,
59
+ orderByDirection,
60
+ orderByField,
61
+ currentPage
62
+ } ;
63
+
64
+ window . sessionStorage . setItem ( SOK_STORAGE_NAME , JSON . stringify ( updatedSearch ) ) ;
65
+ } , [ filters , orderByDirection , orderByField , currentPage ] ) ;
66
+
42
67
return {
43
68
totalPages, setTotalPages,
44
69
currentPage, setCurrentPage,
0 commit comments