import { Subject } from 'rxjs'
-import { debounceTime, mergeMap } from 'rxjs/operators'
-import { Component, OnInit } from '@angular/core'
-import { AuthService, ComponentPagination, ConfirmService, Notifier, User } from '@app/core'
+import { mergeMap } from 'rxjs/operators'
+import { Component } from '@angular/core'
+import { AuthService, ComponentPagination, ConfirmService, Notifier } from '@app/core'
import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist'
import { VideoPlaylistType } from '@shared/models'
templateUrl: './my-video-playlists.component.html',
styleUrls: [ './my-video-playlists.component.scss' ]
})
-export class MyVideoPlaylistsComponent implements OnInit {
- videoPlaylistsSearch: string
+export class MyVideoPlaylistsComponent {
videoPlaylists: VideoPlaylist[] = []
- videoPlaylistSearchChanged = new Subject<string>()
pagination: ComponentPagination = {
currentPage: 1,
onDataSubject = new Subject<any[]>()
- private user: User
+ search: string
constructor (
private authService: AuthService,
private notifier: Notifier,
private confirmService: ConfirmService,
private videoPlaylistService: VideoPlaylistService
- ) {}
-
- ngOnInit () {
- this.user = this.authService.getUser()
-
- this.loadVideoPlaylists()
-
- this.videoPlaylistSearchChanged
- .pipe(
- debounceTime(500))
- .subscribe(() => {
- this.loadVideoPlaylists(true)
- })
- }
+ ) {}
async deleteVideoPlaylist (videoPlaylist: VideoPlaylist) {
const res = await this.confirmService.confirm(
this.loadVideoPlaylists()
}
- resetSearch () {
- this.videoPlaylistsSearch = ''
- this.onVideoPlaylistSearchChanged()
- }
-
- onVideoPlaylistSearchChanged () {
- this.videoPlaylistSearchChanged.next()
+ onSearch (search: string) {
+ this.search = search
+ this.loadVideoPlaylists(true)
}
private loadVideoPlaylists (reset = false) {
this.authService.userInformationLoaded
.pipe(mergeMap(() => {
- return this.videoPlaylistService.listAccountPlaylists(this.user.account, this.pagination, '-updatedAt', this.videoPlaylistsSearch)
- }))
- .subscribe(res => {
+ const user = this.authService.getUser()
+
+ return this.videoPlaylistService.listAccountPlaylists(user.account, this.pagination, '-updatedAt', this.search)
+ })).subscribe(res => {
if (reset) this.videoPlaylists = []
+
this.videoPlaylists = this.videoPlaylists.concat(res.data)
this.pagination.totalItems = res.total