From 2e31a6d0f972e982412dd50111a7cd174fd92476 Mon Sep 17 00:00:00 2001 From: Mike Ryan Date: Sat, 28 Mar 2020 20:00:28 -0500 Subject: [PATCH] 08-reading-state --- .../books-page/books-page.component.html | 6 +-- .../books-page/books-page.component.ts | 44 +++++++------------ 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/app/books/components/books-page/books-page.component.html b/src/app/books/components/books-page/books-page.component.html index 69c54a0..8adac94 100755 --- a/src/app/books/components/books-page/books-page.component.html +++ b/src/app/books/components/books-page/books-page.component.html @@ -1,9 +1,9 @@
- + @@ -12,7 +12,7 @@ diff --git a/src/app/books/components/books-page/books-page.component.ts b/src/app/books/components/books-page/books-page.component.ts index c19e14d..683a762 100755 --- a/src/app/books/components/books-page/books-page.component.ts +++ b/src/app/books/components/books-page/books-page.component.ts @@ -1,11 +1,13 @@ import { Component, OnInit } from "@angular/core"; import { Store } from "@ngrx/store"; -import { State } from "src/app/shared/state"; +import { Observable } from "rxjs"; import { - BookModel, - calculateBooksGrossEarnings, - BookRequiredProps -} from "src/app/shared/models"; + State, + selectAllBooks, + selectActiveBook, + selectBooksEarningsTotals +} from "src/app/shared/state"; +import { BookModel, BookRequiredProps } from "src/app/shared/models"; import { BooksService } from "src/app/shared/services"; import { BooksPageActions, BooksApiActions } from "../../actions"; @@ -15,39 +17,30 @@ import { BooksPageActions, BooksApiActions } from "../../actions"; styleUrls: ["./books-page.component.css"] }) export class BooksPageComponent implements OnInit { - books: BookModel[] = []; - currentBook: BookModel | null = null; - total: number = 0; - - constructor( - private booksService: BooksService, - private store: Store - ) {} + books$: Observable; + currentBook$: Observable; + total$: Observable; + + constructor(private booksService: BooksService, private store: Store) { + this.books$ = store.select(selectAllBooks); + this.currentBook$ = store.select(selectActiveBook); + this.total$ = store.select(selectBooksEarningsTotals); + } ngOnInit() { this.store.dispatch(BooksPageActions.enter()); this.getBooks(); - this.removeSelectedBook(); } getBooks() { this.booksService.all().subscribe(books => { - this.books = books; - this.updateTotals(books); - this.store.dispatch(BooksApiActions.booksLoaded({ books })); }); } - updateTotals(books: BookModel[]) { - this.total = calculateBooksGrossEarnings(books); - } - onSelect(book: BookModel) { this.store.dispatch(BooksPageActions.selectBook({ bookId: book.id })); - - this.currentBook = book; } onCancel() { @@ -56,8 +49,6 @@ export class BooksPageComponent implements OnInit { removeSelectedBook() { this.store.dispatch(BooksPageActions.clearSelectedBook()); - - this.currentBook = null; } onSave(book: BookRequiredProps | BookModel) { @@ -85,9 +76,6 @@ export class BooksPageComponent implements OnInit { ); this.booksService.update(book.id, book).subscribe(book => { - this.getBooks(); - this.removeSelectedBook(); - this.store.dispatch(BooksApiActions.bookUpdated({ book })); }); }