Skip to content

Commit c77bb3c

Browse files
committed
La til mellomlagring av søk
1 parent 8af7d73 commit c77bb3c

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

src/stores/sok-store.tsx

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import { useEffect, useMemo, useState } from 'react';
12
import constate from 'constate';
2-
import { useMemo, useState } from 'react';
33
import { Enhet } from '../rest/data/innlogget-veileder';
44
import { UtkastStatus } from '../rest/data/bruker';
55
import { OrNothing } from '../utils/types/ornothing';
@@ -13,22 +13,36 @@ export interface Filters {
1313
visMineBrukere: boolean;
1414
}
1515

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+
1629
export const [SokStoreProvider, useSokStore] = constate(() => {
30+
1731
// Paginering
1832
const [totalPages, setTotalPages] = useState(1);
19-
const [currentPage, setCurrentPage] = useState(1);
33+
const [currentPage, setCurrentPage] = useState(storedSearch.currentPage || 1);
2034
const [seeAll, setSeeAll] = useState(false);
2135
const [pageSize, setPageSize] = useState(DEFAULT_PAGINATION_SIZE);
2236

2337
// 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);
2640

2741
// Filtrering
2842
const [fnrOrNameFilter, setFnrOrNameFilter] = useState<string>('');
2943
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);
3246

3347
const filters: Filters = useMemo(() => {
3448
return {
@@ -39,6 +53,17 @@ export const [SokStoreProvider, useSokStore] = constate(() => {
3953
};
4054
}, [fnrOrNameFilter, enheterFilter, statusFilter, visMineBrukere]);
4155

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+
4267
return {
4368
totalPages, setTotalPages,
4469
currentPage, setCurrentPage,

0 commit comments

Comments
 (0)