Spaces:
Build error
Build error
| import { Component, OnInit } from '@angular/core'; | |
| import { PostsService } from 'app/posts.services'; | |
| import { Router } from '@angular/router'; | |
| import { MatDialog } from '@angular/material/dialog'; | |
| import { CreatePlaylistComponent } from 'app/create-playlist/create-playlist.component'; | |
| import { Playlist } from 'api-types'; | |
| ({ | |
| selector: 'app-custom-playlists', | |
| templateUrl: './custom-playlists.component.html', | |
| styleUrls: ['./custom-playlists.component.scss'] | |
| }) | |
| export class CustomPlaylistsComponent implements OnInit { | |
| playlists = null; | |
| playlists_received = false; | |
| downloading_content = {'video': {}, 'audio': {}}; | |
| constructor(public postsService: PostsService, private router: Router, private dialog: MatDialog) { } | |
| ngOnInit(): void { | |
| this.postsService.service_initialized.subscribe(init => { | |
| if (init) { | |
| this.getAllPlaylists(); | |
| } | |
| }); | |
| this.postsService.playlists_changed.subscribe(changed => { | |
| if (changed) { | |
| this.getAllPlaylists(); | |
| } | |
| }); | |
| } | |
| getAllPlaylists(): void { | |
| this.playlists_received = false; | |
| // must call getAllFiles as we need to get category playlists as well | |
| this.postsService.getPlaylists(true).subscribe(res => { | |
| this.playlists = res['playlists']; | |
| this.playlists_received = true; | |
| }); | |
| } | |
| // creating a playlist | |
| openCreatePlaylistDialog(): void { | |
| const dialogRef = this.dialog.open(CreatePlaylistComponent, { | |
| data: { | |
| create_mode: true | |
| }, | |
| minWidth: '90vw', | |
| minHeight: '95vh' | |
| }); | |
| dialogRef.afterClosed().subscribe(result => { | |
| if (result) { | |
| this.getAllPlaylists(); | |
| this.postsService.openSnackBar($localize`Successfully created playlist!`); | |
| } else if (result === false) { | |
| this.postsService.openSnackBar($localize`ERROR: failed to create playlist!`); | |
| } | |
| }); | |
| } | |
| goToPlaylist(info_obj: { file: Playlist; }): void { | |
| const playlist = info_obj.file; | |
| const playlistID = playlist.id; | |
| if (playlist) { | |
| if (this.postsService.config['Extra']['download_only_mode']) { | |
| this.downloadPlaylist(playlist.id, playlist.name); | |
| } else { | |
| localStorage.setItem('player_navigator', this.router.url); | |
| const routeParams = {playlist_id: playlistID}; | |
| if (playlist.auto) { routeParams['auto'] = playlist.auto; } | |
| this.router.navigate(['/player', routeParams]); | |
| } | |
| } else { | |
| // playlist not found | |
| // TODO: Make translatable | |
| console.error(`Playlist with ID ${playlistID} not found!`); | |
| } | |
| } | |
| downloadPlaylist(playlist_id: string, playlist_name: string): void { | |
| this.downloading_content[playlist_id] = true; | |
| this.postsService.downloadPlaylistFromServer(playlist_id).subscribe(res => { | |
| this.downloading_content[playlist_id] = false; | |
| const blob: any = res; | |
| saveAs(blob, playlist_name + '.zip'); | |
| }); | |
| } | |
| deletePlaylist(args: { file: Playlist; index: number; }): void { | |
| const playlist = args.file; | |
| const index = args.index; | |
| const playlistID = playlist.id; | |
| this.postsService.removePlaylist(playlistID).subscribe(res => { | |
| if (res['success']) { | |
| this.playlists.splice(index, 1); | |
| this.postsService.openSnackBar($localize`Playlist successfully removed.`); | |
| } | |
| this.getAllPlaylists(); | |
| }); | |
| } | |
| editPlaylistDialog(args: { playlist: Playlist; index: number; }): void { | |
| const playlist = args.playlist; | |
| const index = args.index; | |
| const dialogRef = this.dialog.open(CreatePlaylistComponent, { | |
| data: { | |
| playlist_id: playlist.id, | |
| create_mode: false | |
| }, | |
| minWidth: '85vw' | |
| }); | |
| dialogRef.afterClosed().subscribe(() => { | |
| // updates playlist in file manager if it changed | |
| if (dialogRef.componentInstance.playlist_updated) { | |
| this.playlists[index] = dialogRef.componentInstance.playlist; | |
| } | |
| }); | |
| } | |
| } | |