diff --git a/libs/books-page/actions/src/lib/books-page.actions.ts b/libs/books-page/actions/src/lib/books-page.actions.ts index e778e50..7811908 100644 --- a/libs/books-page/actions/src/lib/books-page.actions.ts +++ b/libs/books-page/actions/src/lib/books-page.actions.ts @@ -1,2 +1,28 @@ import { createAction, props } from '@ngrx/store'; import { BookRequiredProps } from '@book-co/shared-models'; + +export const enter = createAction('[Books Page] Enter'); + +export const selectBook = createAction( + '[Books Page] Select Book', + props<{ bookId: string }>() +); + +export const clearSelectedBook = createAction( + '[Books Page] Clear Selected Book' +); + +export const createBook = createAction( + '[Books Page] Create Book', + props<{ book: BookRequiredProps }>() +); + +export const updateBook = createAction( + '[Books Page] Update Book', + props<{ bookId: string; changes: BookRequiredProps }>() +); + +export const deleteBook = createAction( + '[Books Page] Delete Book', + 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 98766c2..f80f78b 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 @@ -20,9 +20,11 @@ export class BooksPageComponent implements OnInit { currentBook: BookModel | null = null; total: number = 0; - constructor(private booksService: BooksService) {} + constructor(private booksService: BooksService, private store: Store) {} ngOnInit() { + this.store.dispatch(BooksPageActions.enter()); + this.getBooks(); this.removeSelectedBook(); } @@ -39,6 +41,8 @@ export class BooksPageComponent implements OnInit { } onSelect(book: BookModel) { + this.store.dispatch(BooksPageActions.selectBook({ bookId: book.id })); + this.currentBook = book; } @@ -47,6 +51,8 @@ export class BooksPageComponent implements OnInit { } removeSelectedBook() { + this.store.dispatch(BooksPageActions.clearSelectedBook()); + this.currentBook = null; } @@ -59,6 +65,8 @@ export class BooksPageComponent implements OnInit { } saveBook(bookProps: BookRequiredProps) { + this.store.dispatch(BooksPageActions.createBook({ book: bookProps })); + this.booksService.create(bookProps).subscribe(() => { this.getBooks(); this.removeSelectedBook(); @@ -66,6 +74,10 @@ export class BooksPageComponent implements OnInit { } updateBook(book: BookModel) { + this.store.dispatch( + BooksPageActions.updateBook({ bookId: book.id, changes: book }) + ); + this.booksService.update(book.id, book).subscribe(() => { this.getBooks(); this.removeSelectedBook(); @@ -73,6 +85,8 @@ export class BooksPageComponent implements OnInit { } onDelete(book: BookModel) { + this.store.dispatch(BooksPageActions.deleteBook({ bookId: book.id })); + this.booksService.delete(book.id).subscribe(() => { this.getBooks(); this.removeSelectedBook();