@@ -5,28 +5,34 @@ import PeriodList from "../PeriodList";
5
5
import {
6
6
getWorkPeriodsError ,
7
7
getWorkPeriodsIsLoading ,
8
+ getWorkPeriodsPagination ,
8
9
getWorkPeriodsSorting ,
9
- getWorkPeriodsTotalCount ,
10
10
} from "store/selectors/workPeriods" ;
11
11
import { loadWorkPeriodsPage } from "store/thunks/workPeriods" ;
12
+ import { useUpdateEffect } from "utils/hooks" ;
12
13
13
14
/**
14
15
* Displays working periods' list or a "Loading..." message or an error message.
15
16
*
16
17
* @returns {JSX.Element }
17
18
*/
18
19
const Periods = ( ) => {
20
+ const pagination = useSelector ( getWorkPeriodsPagination ) ;
19
21
const sorting = useSelector ( getWorkPeriodsSorting ) ;
20
- const count = useSelector ( getWorkPeriodsTotalCount ) ;
21
22
const error = useSelector ( getWorkPeriodsError ) ;
22
23
const isLoading = useSelector ( getWorkPeriodsIsLoading ) ;
23
24
const dispatch = useDispatch ( ) ;
24
25
25
26
// Load working periods' first page once when page loads and then
26
- // only if sorting changes.
27
+ // only if page size or sorting changes.
27
28
useEffect ( ( ) => {
28
29
dispatch ( loadWorkPeriodsPage ( 1 ) ) ;
29
- } , [ sorting , dispatch ] ) ;
30
+ } , [ dispatch , pagination . pageSize , sorting ] ) ;
31
+
32
+ // Load working periods' new page if page number changes.
33
+ useUpdateEffect ( ( ) => {
34
+ dispatch ( loadWorkPeriodsPage ( ) ) ;
35
+ } , [ dispatch , pagination . pageNumber ] ) ;
30
36
31
37
return (
32
38
< >
@@ -35,7 +41,7 @@ const Periods = () => {
35
41
{ ! isLoading && error && (
36
42
< ContentMessage type = "error" > { error } </ ContentMessage >
37
43
) }
38
- { ! isLoading && ! error && ! count && (
44
+ { ! isLoading && ! error && ! pagination . totalCount && (
39
45
< ContentMessage > No resource bookings found.</ ContentMessage >
40
46
) }
41
47
</ >
0 commit comments