|
1 | 1 | import { createReducer, on, Action } from "@ngrx/store";
|
2 | 2 | import { BookModel } from "src/app/shared/models/book.model";
|
3 |
| -import { BooksPageActions } from "src/app/books/actions"; |
| 3 | +import { BooksPageActions, BooksApiActions } from "src/app/books/actions"; |
4 | 4 |
|
5 | 5 | const createBook = (books: BookModel[], book: BookModel) => [...books, book];
|
6 | 6 | const updateBook = (books: BookModel[], changes: BookModel) =>
|
@@ -33,6 +33,30 @@ export const booksReducer = createReducer(
|
33 | 33 | ...state,
|
34 | 34 | activeBookId: action.bookId
|
35 | 35 | };
|
| 36 | + }), |
| 37 | + on(BooksApiActions.booksLoaded, (state, action) => { |
| 38 | + return { |
| 39 | + ...state, |
| 40 | + collection: action.books |
| 41 | + }; |
| 42 | + }), |
| 43 | + on(BooksApiActions.bookCreated, (state, action) => { |
| 44 | + return { |
| 45 | + collection: createBook(state.collection, action.book), |
| 46 | + activeBookId: null |
| 47 | + }; |
| 48 | + }), |
| 49 | + on(BooksApiActions.bookUpdated, (state, action) => { |
| 50 | + return { |
| 51 | + collection: updateBook(state.collection, action.book), |
| 52 | + activeBookId: null |
| 53 | + }; |
| 54 | + }), |
| 55 | + on(BooksApiActions.bookDeleted, (state, action) => { |
| 56 | + return { |
| 57 | + ...state, |
| 58 | + collection: deleteBook(state.collection, action.bookId) |
| 59 | + }; |
36 | 60 | })
|
37 | 61 | );
|
38 | 62 |
|
|
0 commit comments