subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
36
users/wpcarro/website/sandbox/contentful/src/store.ts
Normal file
36
users/wpcarro/website/sandbox/contentful/src/store.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import { createSlice, configureStore, PayloadAction } from "@reduxjs/toolkit";
|
||||
import { useSelector, TypedUseSelectorHook } from "react-redux";
|
||||
|
||||
export interface Book {
|
||||
title: string;
|
||||
author: string;
|
||||
// TODO(wpcarro): Prefer datetime type here.
|
||||
publicationDate: string;
|
||||
}
|
||||
|
||||
export interface State {
|
||||
isLoading: boolean;
|
||||
books: Book[];
|
||||
}
|
||||
|
||||
const initialState: State = {
|
||||
isLoading: true,
|
||||
books: [],
|
||||
};
|
||||
|
||||
export const { actions, reducer } = createSlice({
|
||||
name: "application",
|
||||
initialState,
|
||||
reducers: {
|
||||
toggleIsLoading: (state) => ({ ...state, isLoading: !state.isLoading }),
|
||||
setBooks: (state, action) => ({ ...state, books: action.payload }),
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Defining and consuming this allows us to avoid annotating State in all of our
|
||||
* selectors.
|
||||
*/
|
||||
export const useTypedSelector: TypedUseSelectorHook<State> = useSelector;
|
||||
|
||||
export default configureStore({ reducer });
|
||||
Loading…
Add table
Add a link
Reference in a new issue