diff --git a/ui/src/utils/plugins.js b/ui/src/utils/plugins.js index 3c512d2d261..1f621be3455 100644 --- a/ui/src/utils/plugins.js +++ b/ui/src/utils/plugins.js @@ -91,7 +91,7 @@ export const pollJobPlugin = { const currentPage = this.$router.currentRoute.path const samePage = options.originalPage === currentPage || options.originalPage.startsWith(currentPage + '/') if (samePage && (!action || !('isFetchData' in action) || (action.isFetchData))) { - eventBus.$emit('async-job-complete') + eventBus.$emit('async-job-complete', action) } successMethod(result) } else if (result.jobstatus === 2) { @@ -121,8 +121,12 @@ export const pollJobPlugin = { status: 'failed', duration: 0 }) - if (!action || !('isFetchData' in action) || (action.isFetchData)) { - eventBus.$emit('async-job-complete') + + // Ensure we refresh on the same / parent page + const currentPage = this.$router.currentRoute.path + const samePage = options.originalPage === currentPage || options.originalPage.startsWith(currentPage + '/') + if (samePage && (!action || !('isFetchData' in action) || (action.isFetchData))) { + eventBus.$emit('async-job-complete', action) } errorMethod(result) } else if (result.jobstatus === 0) { diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index f691cf952d5..0ad9568e3b8 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -862,6 +862,9 @@ export default { }) }, pollActionCompletion (jobId, action, resourceName, showLoading = true) { + if (this.shouldNavigateBack(action)) { + action.isFetchData = false + } return new Promise((resolve) => { this.$pollJob({ jobId, @@ -1062,7 +1065,7 @@ export default { api(...args).then(json => { this.handleResponse(json, resourceName, action).then(jobId => { hasJobId = jobId - if ((action.icon === 'delete' || ['archiveEvents', 'archiveAlerts', 'unmanageVirtualMachine'].includes(action.api)) && this.dataView) { + if (this.shouldNavigateBack(action)) { this.$router.go(-1) } else { if (!hasJobId) { @@ -1083,6 +1086,9 @@ export default { }) }) }, + shouldNavigateBack (action) { + return ((action.icon === 'delete' || ['archiveEvents', 'archiveAlerts', 'unmanageVirtualMachine'].includes(action.api)) && this.dataView) + }, changeFilter (filter) { const query = Object.assign({}, this.$route.query) delete query.templatefilter