diff --git a/libs/shared-state-books/src/lib/books.reducer.ts b/libs/shared-state-books/src/lib/books.reducer.ts index f609a26..b653d33 100644 --- a/libs/shared-state-books/src/lib/books.reducer.ts +++ b/libs/shared-state-books/src/lib/books.reducer.ts @@ -10,3 +10,29 @@ const updateBook = (books: BookModel[], changes: BookModel) => }); const deleteBook = (books: BookModel[], bookId: string) => books.filter((book) => bookId !== book.id); + +export interface State { + collection: BookModel[]; + activeBookId: string | null; +} + +export const initialState: State = { + collection: [], + activeBookId: null, +}; + +export const reducer = createReducer( + initialState, + on(BooksPageActions.clearSelectedBook, BooksPageActions.enter, (state) => { + return { + ...state, + activeBookId: null, + }; + }), + on(BooksPageActions.selectBook, (state, action) => { + return { + ...state, + activeBookId: action.bookId, + }; + }) +);