Fix sort in admin tables
[oweals/peertube.git] / client / src / app / +my-account / my-account-ownership / my-account-ownership.component.ts
1 import { Component, OnInit, ViewChild } from '@angular/core'
2 import { Notifier } from '@app/core'
3 import { RestPagination, RestTable } from '@app/shared'
4 import { SortMeta } from 'primeng/api'
5 import { VideoChangeOwnership } from '../../../../../shared'
6 import { VideoOwnershipService } from '@app/shared/video-ownership'
7 import { Account } from '@app/shared/account/account.model'
8 import { MyAccountAcceptOwnershipComponent } from './my-account-accept-ownership/my-account-accept-ownership.component'
9
10 @Component({
11   selector: 'my-account-ownership',
12   templateUrl: './my-account-ownership.component.html'
13 })
14 export class MyAccountOwnershipComponent extends RestTable implements OnInit {
15   videoChangeOwnerships: VideoChangeOwnership[] = []
16   totalRecords = 0
17   rowsPerPage = 10
18   sort: SortMeta = { field: 'createdAt', order: -1 }
19   pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
20
21   @ViewChild('myAccountAcceptOwnershipComponent', { static: true }) myAccountAcceptOwnershipComponent: MyAccountAcceptOwnershipComponent
22
23   constructor (
24     private notifier: Notifier,
25     private videoOwnershipService: VideoOwnershipService
26   ) {
27     super()
28   }
29
30   ngOnInit () {
31     this.initialize()
32   }
33
34   getIdentifier () {
35     return 'MyAccountOwnershipComponent'
36   }
37
38   createByString (account: Account) {
39     return Account.CREATE_BY_STRING(account.name, account.host)
40   }
41
42   openAcceptModal (videoChangeOwnership: VideoChangeOwnership) {
43     this.myAccountAcceptOwnershipComponent.show(videoChangeOwnership)
44   }
45
46   accepted () {
47     this.loadData()
48   }
49
50   refuse (videoChangeOwnership: VideoChangeOwnership) {
51     this.videoOwnershipService.refuseOwnership(videoChangeOwnership.id)
52       .subscribe(
53         () => this.loadData(),
54         err => this.notifier.error(err.message)
55       )
56   }
57
58   protected loadData () {
59     return this.videoOwnershipService.getOwnershipChanges(this.pagination, this.sort)
60       .subscribe(
61         resultList => {
62           this.videoChangeOwnerships = resultList.data
63           this.totalRecords = resultList.total
64         },
65
66         err => this.notifier.error(err.message)
67       )
68   }
69 }