From 14718c34e02b7bbe34d24f9fd56819701bd96183 Mon Sep 17 00:00:00 2001 From: Mike Ryan Date: Fri, 6 Sep 2019 07:23:15 -0700 Subject: [PATCH] 05-reduce-api-actions --- src/app/shared/state/books.reducer.ts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/app/shared/state/books.reducer.ts b/src/app/shared/state/books.reducer.ts index fbd7925..116ef05 100644 --- a/src/app/shared/state/books.reducer.ts +++ b/src/app/shared/state/books.reducer.ts @@ -1,6 +1,6 @@ import { createReducer, on, Action } from "@ngrx/store"; import { BookModel } from "src/app/shared/models/book.model"; -import { BooksPageActions } from "src/app/books/actions"; +import { BooksPageActions, BooksApiActions } from "src/app/books/actions"; const createBook = (books: BookModel[], book: BookModel) => [...books, book]; const updateBook = (books: BookModel[], changes: BookModel) => @@ -33,6 +33,30 @@ export const booksReducer = createReducer( ...state, activeBookId: action.bookId }; + }), + on(BooksApiActions.booksLoaded, (state, action) => { + return { + ...state, + collection: action.books + }; + }), + on(BooksApiActions.bookCreated, (state, action) => { + return { + collection: createBook(state.collection, action.book), + activeBookId: null + }; + }), + on(BooksApiActions.bookUpdated, (state, action) => { + return { + collection: updateBook(state.collection, action.book), + activeBookId: null + }; + }), + on(BooksApiActions.bookDeleted, (state, action) => { + return { + ...state, + collection: deleteBook(state.collection, action.bookId) + }; }) );