Skip to content
Snippets Groups Projects
Verified Commit df8b9867 authored by Ciarán Ainsworth's avatar Ciarán Ainsworth Committed by Eliot Berriot
Browse files

Resolve #630: "Do not allow tab closure during upload"

parent 53d1a5c9
No related branches found
No related tags found
No related merge requests found
Ask for confirmation before leaving upload page if there is a an upload in process (#630)
\ No newline at end of file
......@@ -166,14 +166,24 @@ export default {
id: "fileUpload",
handler: this.handleImportEvent
});
window.onbeforeunload = e => this.onBeforeUnload(e);
},
destroyed() {
this.$store.commit("ui/removeWebsocketEventHandler", {
eventName: "import.status_updated",
id: "fileUpload"
});
window.onbeforeunload = null;
},
methods: {
onBeforeUnload(e = {}) {
const returnValue = ('This page is asking you to confirm that you want to leave - data you have entered may not be saved.');
if (!this.hasActiveUploads) return null;
Object.assign(e, {
returnValue,
});
return returnValue;
},
inputFile(newFile, oldFile) {
this.$refs.upload.active = true;
},
......@@ -291,6 +301,9 @@ export default {
f.statusIndex = statusIndex
return f
}), ['statusIndex', 'name'])
},
hasActiveUploads () {
return this.sortedFiles.filter((f) => { return f.active }).length > 0
}
},
watch: {
......
......@@ -4,7 +4,7 @@
<div class="ui text loader"><translate>Loading library data…</translate></div>
</div>
<detail-area v-else :library="library">
<file-upload :default-import-reference="defaultImportReference" :library="library" />
<file-upload ref="fileupload" :default-import-reference="defaultImportReference" :library="library" />
</detail-area>
</div>
</template>
......@@ -20,6 +20,19 @@ export default {
components: {
DetailArea,
FileUpload
},
beforeRouteLeave (to, from, next){
if (this.$refs.fileupload.hasActiveUploads){
const answer = window.confirm('This page is asking you to confirm that you want to leave - data you have entered may not be saved.')
if (answer) {
next()
} else {
next(false)
}
}
else{
next()
}
}
}
</script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment