diff --git a/ui/src/utils/plugins.js b/ui/src/utils/plugins.js index 3c512d2d261c..1f621be34559 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 5f408c757608..da7f951a77cc 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -857,6 +857,9 @@ export default { }) }, pollActionCompletion (jobId, action, resourceName, showLoading = true) { + if (this.shouldNavigateBack(action)) { + action.isFetchData = false + } return new Promise((resolve) => { this.$pollJob({ jobId, @@ -1057,7 +1060,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) { @@ -1078,6 +1081,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