-
Notifications
You must be signed in to change notification settings - Fork 1
/
user-posts.component.ts
52 lines (45 loc) · 1.77 KB
/
user-posts.component.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { MdDialog, MdDialogRef } from '@angular/material';
import { ResourceContainer, ResourceContainerFetch } from '../../behaviors/resource-container';
import { Post } from '../../models/post';
import { PostRepository } from '../../services/post-repository.service';
import { ArgsCacheReader , ArgsCacheWriter , CacheContainer } from '../../behaviors/cache-holder';
import { ShowLoading , LoadingDialog , HideLoading } from '../../behaviors/loading-dialog';
import { CommonCache } from '../../services/common-cache.service';
import { WritersComponent } from '../writers/writers.component';
import { User } from '../../models/user';
@Component({
selector: 'user-posts',
templateUrl: './user-posts.component.html',
styleUrls: ['./user-posts.component.css']
})
export class UserPostsComponent implements ResourceContainer<Post>, CacheContainer, LoadingDialog, OnInit {
public loadingDialogRef: MdDialogRef<any>;
public servicePath: string;
public userPostList: Post[] = [];
public selectedUser: User;
constructor(
public service: PostRepository,
public cacheSrv: CommonCache,
public router: Router,
public dialogFactory: MdDialog,
) {}
public ngOnInit() {
setTimeout(() => this.setup());
}
@ArgsCacheReader({ argDriverIndex: 0 })
@ShowLoading
@ResourceContainerFetch
@ArgsCacheWriter({ argDriverIndex: 0 })
private fetchPosts(userId: number, data?: Post[]) {
this.userPostList = data;
}
@HideLoading
public onResourceFulfit () {}
private setup() {
this.selectedUser = this.cacheSrv.get(WritersComponent.SELECTED_USER) as User;
if (!this.selectedUser) { return this.router.navigate(['/']); }
this.fetchPosts(this.selectedUser.id);
}
}