Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1x 1x 1x 1x 1x 1x 1x | import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "../../index.ts";
export const PaginationKeys = {
PAGE: "page",
LIMIT: "limit",
} as const;
type PaginationKeyType = (typeof PaginationKeys)[keyof typeof PaginationKeys];
type PaginationType = {
[PaginationKeys.PAGE]: number;
[PaginationKeys.LIMIT]: number;
};
const initialState: PaginationType = {
[PaginationKeys.PAGE]: 0,
[PaginationKeys.LIMIT]: 10,
};
type PaginationKeyAction = {
key: PaginationKeyType;
value: number;
};
const paginationSlice = createSlice({
name: "pagination",
initialState,
reducers: {
setPaginationKey: (state, action: PayloadAction<PaginationKeyAction>) => {
state[action.payload.key] = action.payload.value;
},
resetPagination: (state) => {
Object.values(PaginationKeys).forEach(
(key) => (state[key] = initialState[key]),
);
},
},
});
export const { setPaginationKey, resetPagination } = paginationSlice.actions;
export default paginationSlice.reducer;
export const paginationSelector = (state: RootState) => state.pagination;
|