@@ -12,17 +12,24 @@ type Props = {
12
12
user : SessionUser ;
13
13
transfers : ITransfer [ ] ;
14
14
total : number ;
15
+ pageSize : number ;
15
16
} ;
16
17
17
- const AdminPage : NextPage < Props > = ( { user, transfers, total } ) => {
18
- const { refresh } = useRouter ( ) ;
18
+ const AdminPage : NextPage < Props > = ( { user, transfers, total, pageSize } ) => {
19
+ const { refresh, push } = useRouter ( ) ;
19
20
20
21
const onLogout = ( ) => {
21
22
fetch ( "/api/admin/logout" ) . then ( ( res ) => {
22
23
res . ok && refresh ( ) ;
23
24
} ) ;
24
25
} ;
25
26
27
+ const onPageChange = ( page : number ) => {
28
+ const query = new URLSearchParams ( window . location . search ) ;
29
+ query . set ( "page" , page . toString ( ) ) ;
30
+ push ( `/admin?${ query . toString ( ) } ` ) ;
31
+ } ;
32
+
26
33
return (
27
34
< Container
28
35
sx = { { py : 4 , height : "100vh" , display : "flex" , flexDirection : "column" } }
@@ -42,7 +49,12 @@ const AdminPage: NextPage<Props> = ({ user, transfers, total }) => {
42
49
border : "px solid #000" ,
43
50
} }
44
51
>
45
- < AdminTransferList transfers = { transfers } total = { total } />
52
+ < AdminTransferList
53
+ transfers = { transfers }
54
+ total = { total }
55
+ onPageChange = { onPageChange }
56
+ pageSize = { pageSize }
57
+ />
46
58
</ Box >
47
59
</ Container >
48
60
) ;
@@ -65,14 +77,16 @@ export const getServerSideProps: GetServerSideProps = withSessionSsr(
65
77
await dbConnect ( ) ;
66
78
67
79
// Get query params
68
- const { id } = query ;
80
+ const { id, page } = query ;
69
81
const filters : FilterQuery < ITransfer > = { } ;
70
82
if ( id ) {
71
83
filters . id = id as string ;
72
84
}
85
+ const pageSize = 10 ;
73
86
const transfers = await TransferModel . find ( filters )
74
87
. sort ( { createdAt : - 1 } )
75
- . limit ( 10 ) ;
88
+ . skip ( ( Number ( page ) || 0 ) * pageSize )
89
+ . limit ( pageSize ) ;
76
90
77
91
const total = await TransferModel . countDocuments ( ) ;
78
92
@@ -82,6 +96,7 @@ export const getServerSideProps: GetServerSideProps = withSessionSsr(
82
96
JSON . parse ( JSON . stringify ( transfer ) )
83
97
) ,
84
98
total,
99
+ pageSize,
85
100
} ;
86
101
87
102
return {
0 commit comments