diff --git a/libs/books-page/actions/src/lib/books-api.actions.ts b/libs/books-page/actions/src/lib/books-api.actions.ts index ce0277c..1f02e32 100644 --- a/libs/books-page/actions/src/lib/books-api.actions.ts +++ b/libs/books-page/actions/src/lib/books-api.actions.ts @@ -1,2 +1,22 @@ import { createAction, props } from '@ngrx/store'; import { BookModel } from '@book-co/shared-models'; + +export const booksLoaded = createAction( + '[Books API] Books Loaded Success', + props<{ books: BookModel[] }>() +); + +export const bookCreated = createAction( + '[Books API] Book Created', + props<{ book: BookModel }>() +); + +export const bookUpdated = createAction( + '[Books API] Book Updated', + props<{ book: BookModel }>() +); + +export const bookDeleted = createAction( + '[Books API] Book Deleted', + props<{ bookId: string }>() +); diff --git a/libs/books-page/src/lib/books-page/books-page.component.ts b/libs/books-page/src/lib/books-page/books-page.component.ts index f80f78b..0206bba 100644 --- a/libs/books-page/src/lib/books-page/books-page.component.ts +++ b/libs/books-page/src/lib/books-page/books-page.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { BooksPageActions } from '@book-co/books-page/actions'; +import { BooksPageActions, BooksApiActions } from '@book-co/books-page/actions'; import { BookModel, BookRequiredProps, @@ -33,6 +33,8 @@ export class BooksPageComponent implements OnInit { this.booksService.all().subscribe((books) => { this.books = books; this.updateTotals(books); + + this.store.dispatch(BooksApiActions.booksLoaded({ books })); }); } @@ -67,9 +69,11 @@ export class BooksPageComponent implements OnInit { saveBook(bookProps: BookRequiredProps) { this.store.dispatch(BooksPageActions.createBook({ book: bookProps })); - this.booksService.create(bookProps).subscribe(() => { + this.booksService.create(bookProps).subscribe((book) => { this.getBooks(); this.removeSelectedBook(); + + this.store.dispatch(BooksApiActions.bookCreated({ book })); }); } @@ -78,9 +82,11 @@ export class BooksPageComponent implements OnInit { BooksPageActions.updateBook({ bookId: book.id, changes: book }) ); - this.booksService.update(book.id, book).subscribe(() => { + this.booksService.update(book.id, book).subscribe((book) => { this.getBooks(); this.removeSelectedBook(); + + this.store.dispatch(BooksApiActions.bookUpdated({ book })); }); } @@ -90,6 +96,8 @@ export class BooksPageComponent implements OnInit { this.booksService.delete(book.id).subscribe(() => { this.getBooks(); this.removeSelectedBook(); + + this.store.dispatch(BooksApiActions.bookDeleted({ bookId: book.id })); }); } }