]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - client/src/app/+my-library/my-follows/my-subscriptions.component.ts
Improve advanced input filter
[github/Chocobozzz/PeerTube.git] / client / src / app / +my-library / my-follows / my-subscriptions.component.ts
... / ...
CommitLineData
1import { Subject } from 'rxjs'
2import { Component } from '@angular/core'
3import { ComponentPagination, Notifier } from '@app/core'
4import { VideoChannel } from '@app/shared/shared-main'
5import { UserSubscriptionService } from '@app/shared/shared-user-subscription'
6
7@Component({
8 templateUrl: './my-subscriptions.component.html',
9 styleUrls: [ './my-subscriptions.component.scss' ]
10})
11export 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}