You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nx-guitar-school/apps/website/store/searchSlice.ts

48 lines
979 B

import {createSlice} from "@reduxjs/toolkit";
import {HYDRATE} from "next-redux-wrapper";
import {AppState} from "./store";
export interface SearchState {
results: object[];
}
// Initial state
const initialState: SearchState = {
results: [],
};
// Actual Slice
// @ts-ignore
export const searchSlice = createSlice({
name: "search",
initialState,
reducers: {
// Action to set the authentication status
setSearchState(state, action) {
// @ts-ignore
state.results = action.payload;
},
// Special reducer for hydrating the state. Special case for next-redux-wrapper
extraReducers: {
// @ts-ignore
[HYDRATE]: (state, action) => {
return {
...state,
// @ts-ignore
...action.payload.search,
};
},
},
},
});
export const {setSearchState} = searchSlice.actions;
export const selectSearchState = (state: AppState) => state.search;
export default searchSlice.reducer;