Add unload listener on video upload/update
This commit is contained in:
parent
699b059e2d
commit
674a66bbda
|
@ -42,6 +42,10 @@
|
||||||
{{ error }}
|
{{ error }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div *ngIf="videoUploaded && !error" class="alert alert-info" i18n>
|
||||||
|
Congratulations! Your video is now available in your private library.
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Hidden because we want to load the component -->
|
<!-- Hidden because we want to load the component -->
|
||||||
<form [hidden]="!isUploadingVideo" novalidate [formGroup]="form">
|
<form [hidden]="!isUploadingVideo" novalidate [formGroup]="form">
|
||||||
<my-video-edit
|
<my-video-edit
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Component, ViewChild } from '@angular/core'
|
import { Component, HostListener, ViewChild } from '@angular/core'
|
||||||
import { CanComponentDeactivate } from '@app/shared/guards/can-deactivate-guard.service'
|
import { CanComponentDeactivate } from '@app/shared/guards/can-deactivate-guard.service'
|
||||||
import { VideoImportUrlComponent } from '@app/videos/+video-edit/video-add-components/video-import-url.component'
|
import { VideoImportUrlComponent } from '@app/videos/+video-edit/video-add-components/video-import-url.component'
|
||||||
import { VideoUploadComponent } from '@app/videos/+video-edit/video-add-components/video-upload.component'
|
import { VideoUploadComponent } from '@app/videos/+video-edit/video-add-components/video-upload.component'
|
||||||
|
@ -32,7 +32,17 @@ export class VideoAddComponent implements CanComponentDeactivate {
|
||||||
this.secondStepType = undefined
|
this.secondStepType = undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
canDeactivate () {
|
@HostListener('window:beforeunload', [ '$event' ])
|
||||||
|
onUnload (event: any) {
|
||||||
|
const { text, canDeactivate } = this.canDeactivate()
|
||||||
|
|
||||||
|
if (canDeactivate) return
|
||||||
|
|
||||||
|
event.returnValue = text
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
|
||||||
|
canDeactivate (): { canDeactivate: boolean, text?: string} {
|
||||||
if (this.secondStepType === 'upload') return this.videoUpload.canDeactivate()
|
if (this.secondStepType === 'upload') return this.videoUpload.canDeactivate()
|
||||||
if (this.secondStepType === 'import-url') return this.videoImportUrl.canDeactivate()
|
if (this.secondStepType === 'import-url') return this.videoImportUrl.canDeactivate()
|
||||||
if (this.secondStepType === 'import-torrent') return this.videoImportTorrent.canDeactivate()
|
if (this.secondStepType === 'import-torrent') return this.videoImportTorrent.canDeactivate()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { map, switchMap } from 'rxjs/operators'
|
import { map, switchMap } from 'rxjs/operators'
|
||||||
import { Component, OnInit } from '@angular/core'
|
import { Component, HostListener, OnInit } from '@angular/core'
|
||||||
import { ActivatedRoute, Router } from '@angular/router'
|
import { ActivatedRoute, Router } from '@angular/router'
|
||||||
import { LoadingBarService } from '@ngx-loading-bar/core'
|
import { LoadingBarService } from '@ngx-loading-bar/core'
|
||||||
import { Notifier } from '@app/core'
|
import { Notifier } from '@app/core'
|
||||||
|
@ -83,14 +83,26 @@ export class VideoUpdateComponent extends FormReactive implements OnInit {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
canDeactivate () {
|
@HostListener('window:beforeunload', [ '$event' ])
|
||||||
|
onUnload (event: any) {
|
||||||
|
const { text, canDeactivate } = this.canDeactivate()
|
||||||
|
|
||||||
|
if (canDeactivate) return
|
||||||
|
|
||||||
|
event.returnValue = text
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
|
||||||
|
canDeactivate (): { canDeactivate: boolean, text?: string } {
|
||||||
if (this.updateDone === true) return { canDeactivate: true }
|
if (this.updateDone === true) return { canDeactivate: true }
|
||||||
|
|
||||||
|
const text = this.i18n('You have unsaved changes! If you leave, your changes will be lost.')
|
||||||
|
|
||||||
for (const caption of this.videoCaptions) {
|
for (const caption of this.videoCaptions) {
|
||||||
if (caption.action) return { canDeactivate: false }
|
if (caption.action) return { canDeactivate: false, text }
|
||||||
}
|
}
|
||||||
|
|
||||||
return { canDeactivate: this.formChanged === false }
|
return { canDeactivate: this.formChanged === false, text }
|
||||||
}
|
}
|
||||||
|
|
||||||
checkForm () {
|
checkForm () {
|
||||||
|
|
Loading…
Reference in New Issue