mean-guide-frontend
Version:
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.
68 lines (63 loc) • 2.16 kB
text/typescript
import { Component, Input, OnInit, OnDestroy } from '@angular/core';
import { Post } from '../post.model';
import { PostsService } from '../posts.service';
import { Subscription } from 'rxjs';
import { PageEvent } from '@angular/material/paginator';
import { AuthService } from 'src/app/auth/auth.service';
export class PostListComponent implements OnInit, OnDestroy {
posts: Post[] = [];
isLoading = false;
totalPosts = 0;
postPerPage = 2;
pageSizeOptions = [1, 2, 5, 10];
currentPage = 1;
userAuthenticated: boolean = false;
userId: string;
private postsSub: Subscription;
private authStatusSub: Subscription;
constructor(
public postsService: PostsService,
private authService: AuthService
) {}
ngOnDestroy(): void {
this.postsSub.unsubscribe();
this.authStatusSub.unsubscribe();
}
ngOnInit(): void {
this.isLoading = true;
this.postsService.getPosts(this.postPerPage, this.currentPage);
this.userId = this.authService.getUserId();
this.postsSub = this.postsService
.getPostsUpdatedListener()
.subscribe((postData: { posts: Post[]; count: number }) => {
this.isLoading = false;
this.posts = postData.posts;
this.totalPosts = postData.count;
});
this.userAuthenticated = this.authService.getIsAuthenticated();
this.authStatusSub = this.authService
.getAuthStatusListener()
.subscribe((isAuthenticated) => {
this.userId = this.authService.getUserId();
this.userAuthenticated = isAuthenticated;
});
}
onDelete(id: string) {
this.isLoading = true;
this.postsService.deletePost(id).subscribe((_) => {
this.currentPage = 1;
this.postsService.getPosts(this.postPerPage, this.currentPage);
}, error => (this.isLoading = false));
}
onChangedPage(event: PageEvent) {
this.isLoading = true;
this.currentPage = event.pageIndex + 1;
this.postPerPage = event.pageSize;
this.postsService.getPosts(this.postPerPage, this.currentPage);
}
}