@@ -6,6 +6,9 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
66import { Location } from '@angular/common' ;
77import { User } from '../model/user' ;
88import { LoggedUserService } from '../service/logged-user.service' ;
9+ import { ConfirmationDialogComponent } from '../shared/confirmation-dialog/confirmation-dialog.component' ;
10+ import { filter , switchMapTo , take } from 'rxjs/operators' ;
11+ import { MatDialog } from '@angular/material' ;
912
1013@Component ( {
1114 selector : 'app-episode-list' ,
@@ -17,12 +20,13 @@ export class EpisodeListComponent implements OnInit {
1720 episodes : Episode [ ] ;
1821 selectedEpisode : Episode ;
1922 addForm : FormGroup ;
20- currentUser : User
21- added : boolean
22- error : Object
23+ currentUser : User ;
24+ added : boolean ;
25+ error : Object ;
2326
24- constructor ( private formBuilder : FormBuilder ,
25- private router : Router ,
27+ constructor ( private formBuilder : FormBuilder ,
28+ private router : Router ,
29+ private dialog : MatDialog ,
2630 private episodeService : EpisodeService ,
2731 private sessionUserService : LoggedUserService ) { }
2832
@@ -34,43 +38,52 @@ export class EpisodeListComponent implements OnInit {
3438 this . currentUser = this . sessionUserService . getSessionUser ( ) ;
3539
3640 this . episodeService . getAllEpisodes ( )
37- . subscribe ( data => this . episodes = data )
41+ . subscribe ( data => this . episodes = data ) ;
3842 }
3943
40- showDetails ( episode : Episode ) {
44+ showDetails ( episode : Episode ) {
4145 this . router . navigate ( [ `episode-details/${ episode . id } ` ] ) ;
4246 }
4347
4448 onSelect ( episode : Episode ) : void {
4549 this . selectedEpisode = episode ;
4650 this . getAllEpisodes ( ) ;
47- this . showDetails ( episode ) ;
51+ this . showDetails ( episode ) ;
4852 }
4953
5054 onSubmit ( ) {
5155 this . episodeService . createEpisode ( this . addForm . value )
5256 . subscribe ( data => {
5357 this . addForm . reset ( ) ;
5458 this . getAllEpisodes ( ) ;
55- this . added = true ;
56- } ,
59+ this . added = true ;
60+ } ,
5761 error => {
58- this . error = error
62+ this . error = error ;
5963 } ) ;
6064 }
6165
6266 addEpisode ( ) {
6367 this . router . navigate ( [ 'add-episode' ] ) ;
6468 }
6569
66- removeEpisode ( episode : Episode ) {
67- this . episodeService . removeEpisode ( episode . id ) . subscribe ( data => {
70+ removeEpisode ( episode : Episode ) {
71+ const dialogRef = this . dialog . open ( ConfirmationDialogComponent , {
72+ width : '350px' ,
73+ data : `Do you confirm the deletion of episode ${ episode . name } ?`
74+ } ) ;
75+ dialogRef . afterClosed ( ) . pipe (
76+ take ( 1 ) ,
77+ filter ( Boolean ) ,
78+ switchMapTo ( this . episodeService . removeEpisode ( episode . id ) )
79+ )
80+ . subscribe ( data => {
6881 this . getAllEpisodes ( ) ;
6982 } ) ;
7083 }
7184
7285 getAllEpisodes ( ) : void {
7386 this . episodeService . getAllEpisodes ( )
74- . subscribe ( data => this . episodes = data )
87+ . subscribe ( data => this . episodes = data ) ;
7588 }
7689}
0 commit comments