mirror of https://github.com/Chocobozzz/PeerTube
Add unload listener on video upload/update
parent
699b059e2d
commit
674a66bbda
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 () {
|
||||
|
|
Loading…
Reference in New Issue