X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bmy-library%2Fmy-videos%2Fmy-videos.component.ts;h=72d28ced7385d25e7ae9d1bd0b312558a474c252;hb=dd24f1bb0a4b252e5342b251ba36853364da7b8e;hp=e89bb12e1655be600b744cd2ae7eaeb25a88a4fe;hpb=17119e4a546522468878cf115558b17949ab50d0;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+my-library/my-videos/my-videos.component.ts b/client/src/app/+my-library/my-videos/my-videos.component.ts index e89bb12e1..72d28ced7 100644 --- a/client/src/app/+my-library/my-videos/my-videos.component.ts +++ b/client/src/app/+my-library/my-videos/my-videos.component.ts @@ -1,13 +1,14 @@ -import { concat, Observable, Subject } from 'rxjs' -import { debounceTime, tap, toArray } from 'rxjs/operators' +import { concat, Observable } from 'rxjs' +import { tap, toArray } from 'rxjs/operators' import { Component, OnInit, ViewChild } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' -import { AuthService, ComponentPagination, ConfirmService, Notifier, ScreenService, ServerService } from '@app/core' +import { AuthService, ComponentPagination, ConfirmService, Notifier, ScreenService, ServerService, User } from '@app/core' import { DisableForReuseHook } from '@app/core/routing/disable-for-reuse-hook' import { immutableAssign } from '@app/helpers' +import { AdvancedInputFilter } from '@app/shared/shared-forms' import { DropdownAction, Video, VideoService } from '@app/shared/shared-main' import { LiveStreamInformationComponent } from '@app/shared/shared-video-live' -import { MiniatureDisplayOptions, OwnerDisplayType, SelectionType, VideosSelectionComponent } from '@app/shared/shared-video-miniature' +import { MiniatureDisplayOptions, SelectionType, VideosSelectionComponent } from '@app/shared/shared-video-miniature' import { VideoSortField } from '@shared/models' import { VideoChangeOwnershipComponent } from './modals/video-change-ownership.component' @@ -36,15 +37,27 @@ export class MyVideosComponent implements OnInit, DisableForReuseHook { state: true, blacklistInfo: true } - ownerDisplayType: OwnerDisplayType = 'videoChannel' videoActions: DropdownAction<{ video: Video }>[] = [] videos: Video[] = [] - videosSearch: string - videosSearchChanged = new Subject() getVideosObservableFunction = this.getVideosObservable.bind(this) + sort: VideoSortField = '-publishedAt' + + user: User + + inputFilters: AdvancedInputFilter[] = [ + { + queryParams: { search: 'isLive:true' }, + label: $localize`Only live videos` + } + ] + + disabled = false + + private search: string + constructor ( protected router: Router, protected serverService: ServerService, @@ -61,34 +74,34 @@ export class MyVideosComponent implements OnInit, DisableForReuseHook { ngOnInit () { this.buildActions() - this.videosSearchChanged - .pipe(debounceTime(500)) - .subscribe(() => { - this.videosSelection.reloadVideos() - }) + this.user = this.authService.getUser() + } + + onSearch (search: string) { + this.search = search + this.reloadData() } - resetSearch () { - this.videosSearch = '' - this.onVideosSearchChanged() + reloadData () { + this.videosSelection.reloadVideos() } - onVideosSearchChanged () { - this.videosSearchChanged.next() + onChangeSortColumn () { + this.videosSelection.reloadVideos() } disableForReuse () { - this.videosSelection.disableForReuse() + this.disabled = true } enabledForReuse () { - this.videosSelection.enabledForReuse() + this.disabled = false } - getVideosObservable (page: number, sort: VideoSortField) { + getVideosObservable (page: number) { const newPagination = immutableAssign(this.pagination, { currentPage: page }) - return this.videoService.getMyVideos(newPagination, sort, this.videosSearch) + return this.videoService.getMyVideos(newPagination, this.sort, this.search) .pipe( tap(res => this.pagination.totalItems = res.total) ) @@ -96,7 +109,7 @@ export class MyVideosComponent implements OnInit, DisableForReuseHook { async deleteSelectedVideos () { const toDeleteVideosIds = Object.keys(this.selection) - .filter(k => this.selection[ k ] === true) + .filter(k => this.selection[k] === true) .map(k => parseInt(k, 10)) const res = await this.confirmService.confirm( @@ -115,14 +128,14 @@ export class MyVideosComponent implements OnInit, DisableForReuseHook { concat(...observables) .pipe(toArray()) - .subscribe( - () => { + .subscribe({ + next: () => { this.notifier.success($localize`${toDeleteVideosIds.length} videos deleted.`) this.selection = {} }, - err => this.notifier.error(err.message) - ) + error: err => this.notifier.error(err.message) + }) } async deleteVideo (video: Video) { @@ -133,14 +146,14 @@ export class MyVideosComponent implements OnInit, DisableForReuseHook { if (res === false) return this.videoService.removeVideo(video.id) - .subscribe( - () => { + .subscribe({ + next: () => { this.notifier.success($localize`Video ${video.name} deleted.`) this.removeVideoFromArray(video.id) }, - error => this.notifier.error(error.message) - ) + error: err => this.notifier.error(err.message) + }) } changeOwnership (video: Video) {