import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { FilterSliceState, Sort, SortPropertyEnum } from './types'; const initialState: FilterSliceState = { searchValue: '', categoryId: 0, currentPage: 1, sort: { name: 'популярности', sortProperty: SortPropertyEnum.RATING_DESC, }, }; const filterSlice = createSlice({ name: 'filters', initialState, reducers: { setCategoryId(state, action: PayloadAction) { state.categoryId = action.payload; }, setSearchValue(state, action: PayloadAction) { state.searchValue = action.payload; }, setSort(state, action: PayloadAction) { state.sort = action.payload; }, setCurrentPage(state, action: PayloadAction) { state.currentPage = action.payload; }, setFilters(state, action: PayloadAction) { if (Object.keys(action.payload).length) { state.currentPage = Number(action.payload.currentPage); state.categoryId = Number(action.payload.categoryId); state.sort = action.payload.sort; } else { state.currentPage = 1; state.categoryId = 0; state.sort = { name: 'популярности', sortProperty: SortPropertyEnum.RATING_DESC, }; } }, }, }); export const { setCategoryId, setSort, setCurrentPage, setFilters, setSearchValue } = filterSlice.actions; export default filterSlice.reducer;