Add unload listener on video upload/update

pull/1567/head
Chocobozzz 2019-01-14 14:55:43 +01:00
parent 699b059e2d
commit 674a66bbda
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 32 additions and 6 deletions

View File

@ -42,6 +42,10 @@
{{ error }}
</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 -->
<form [hidden]="!isUploadingVideo" novalidate [formGroup]="form">
<my-video-edit

View File

@ -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 { 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'
@ -32,7 +32,17 @@ export class VideoAddComponent implements CanComponentDeactivate {
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 === 'import-url') return this.videoImportUrl.canDeactivate()
if (this.secondStepType === 'import-torrent') return this.videoImportTorrent.canDeactivate()

View File

@ -1,5 +1,5 @@
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 { LoadingBarService } from '@ngx-loading-bar/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 }
const text = this.i18n('You have unsaved changes! If you leave, your changes will be lost.')
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 () {