]>
Commit | Line | Data |
---|---|---|
1 | import { Subject } from 'rxjs' | |
2 | import { Component } from '@angular/core' | |
3 | import { ComponentPagination, Notifier } from '@app/core' | |
4 | import { VideoChannel } from '@app/shared/shared-main' | |
5 | import { UserSubscriptionService } from '@app/shared/shared-user-subscription' | |
6 | ||
7 | @Component({ | |
8 | templateUrl: './my-subscriptions.component.html', | |
9 | styleUrls: [ './my-subscriptions.component.scss' ] | |
10 | }) | |
11 | export class MySubscriptionsComponent { | |
12 | videoChannels: VideoChannel[] = [] | |
13 | ||
14 | pagination: ComponentPagination = { | |
15 | currentPage: 1, | |
16 | itemsPerPage: 10, | |
17 | totalItems: null | |
18 | } | |
19 | ||
20 | onDataSubject = new Subject<any[]>() | |
21 | ||
22 | search: string | |
23 | ||
24 | constructor ( | |
25 | private userSubscriptionService: UserSubscriptionService, | |
26 | private notifier: Notifier | |
27 | ) {} | |
28 | ||
29 | onNearOfBottom () { | |
30 | // Last page | |
31 | if (this.pagination.totalItems <= (this.pagination.currentPage * this.pagination.itemsPerPage)) return | |
32 | ||
33 | this.pagination.currentPage += 1 | |
34 | this.loadSubscriptions() | |
35 | } | |
36 | ||
37 | onSearch (search: string) { | |
38 | this.search = search | |
39 | this.loadSubscriptions(false) | |
40 | } | |
41 | ||
42 | private loadSubscriptions (more = true) { | |
43 | this.userSubscriptionService.listSubscriptions({ pagination: this.pagination, search: this.search }) | |
44 | .subscribe({ | |
45 | next: res => { | |
46 | this.videoChannels = more | |
47 | ? this.videoChannels.concat(res.data) | |
48 | : res.data | |
49 | this.pagination.totalItems = res.total | |
50 | ||
51 | this.onDataSubject.next(res.data) | |
52 | }, | |
53 | ||
54 | error: err => this.notifier.error(err.message) | |
55 | }) | |
56 | } | |
57 | } |