From 76e6de7f90e5b741f3deb845ea722858101a7117 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 16 Jan 2026 21:18:57 +0530 Subject: [PATCH] ui: fix form data double fetch/reset form data by ownership selection (#11705) * ui: fix form data double fetch/reset form data by ownership selection Fixes #10832 --- ui/src/views/compute/DeployVM.vue | 4 ++- .../compute/wizard/OwnershipSelection.vue | 30 +++++++++++++++---- .../network/CreateIsolatedNetworkForm.vue | 2 +- ui/src/views/network/CreateL2NetworkForm.vue | 2 +- ui/src/views/storage/CreateSharedFS.vue | 8 ++--- ui/src/views/storage/CreateVolume.vue | 4 ++- 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/ui/src/views/compute/DeployVM.vue b/ui/src/views/compute/DeployVM.vue index 97ef7bb5a96..72cb74399d1 100644 --- a/ui/src/views/compute/DeployVM.vue +++ b/ui/src/views/compute/DeployVM.vue @@ -2339,7 +2339,9 @@ export default { this.owner.domainid = null this.owner.projectid = OwnerOptions.selectedProject } - this.resetData() + if (OwnerOptions.initialized) { + this.resetData() + } }, fetchZones (zoneId, listZoneAllow) { this.zones = [] diff --git a/ui/src/views/compute/wizard/OwnershipSelection.vue b/ui/src/views/compute/wizard/OwnershipSelection.vue index a2c7ea4c1f8..b29069628db 100644 --- a/ui/src/views/compute/wizard/OwnershipSelection.vue +++ b/ui/src/views/compute/wizard/OwnershipSelection.vue @@ -19,7 +19,7 @@ domain.id) const ownerDomainId = this.$store.getters.project?.domainid || this.$store.getters.userInfo.domainid this.selectedDomain = domainIds?.includes(ownerDomainId) ? ownerDomainId : this.domains?.[0]?.id - this.changeDomain() + this.fetchOwnerData() }) .catch((error) => { this.$notifyError(error) @@ -186,8 +188,13 @@ export default { this.loading = false }) }, + incrementAndGetRequestToken () { + this.requestToken += 1 + return this.requestToken + }, fetchAccounts () { this.loading = true + const currentToken = this.incrementAndGetRequestToken() api('listAccounts', { response: 'json', domainId: this.selectedDomain, @@ -196,6 +203,9 @@ export default { isrecursive: false }) .then((response) => { + if (currentToken !== this.requestToken) { + return + } this.accounts = response.listaccountsresponse.account || [] if (this.override?.accounts && this.accounts) { this.accounts = this.accounts.filter(item => this.override.accounts.has(item.name)) @@ -214,10 +224,12 @@ export default { }) .finally(() => { this.loading = false + this.initialized = true }) }, fetchProjects () { this.loading = true + const currentToken = this.incrementAndGetRequestToken() api('listProjects', { response: 'json', domainId: this.selectedDomain, @@ -227,6 +239,9 @@ export default { isrecursive: false }) .then((response) => { + if (currentToken !== this.requestToken) { + return + } this.projects = response.listprojectsresponse.project if (this.override?.projects && this.projects) { this.projects = this.projects.filter(item => this.override.projects.has(item.id)) @@ -240,9 +255,14 @@ export default { }) .finally(() => { this.loading = false + this.initialized = true }) }, - changeDomain () { + changeAccountTypeOrDomain () { + this.initialized = true + this.fetchOwnerData() + }, + fetchOwnerData () { if (this.selectedAccountType === 'Account') { this.fetchAccounts() } else { diff --git a/ui/src/views/network/CreateIsolatedNetworkForm.vue b/ui/src/views/network/CreateIsolatedNetworkForm.vue index cbfc2f97cfc..78d4ef72f04 100644 --- a/ui/src/views/network/CreateIsolatedNetworkForm.vue +++ b/ui/src/views/network/CreateIsolatedNetworkForm.vue @@ -507,7 +507,7 @@ export default { this.owner.domainid = null this.owner.projectid = OwnerOptions.selectedProject } - if (isAdminOrDomainAdmin()) { + if (OwnerOptions.initialized && isAdminOrDomainAdmin()) { this.updateVPCCheckAndFetchNetworkOfferingData() } }, diff --git a/ui/src/views/network/CreateL2NetworkForm.vue b/ui/src/views/network/CreateL2NetworkForm.vue index 897233c5260..2590269b333 100644 --- a/ui/src/views/network/CreateL2NetworkForm.vue +++ b/ui/src/views/network/CreateL2NetworkForm.vue @@ -309,7 +309,7 @@ export default { this.owner.domainid = null this.owner.projectid = OwnerOptions.selectedProject } - if (isAdminOrDomainAdmin()) { + if (OwnerOptions.initialized && this.isAdminOrDomainAdmin()) { this.updateVPCCheckAndFetchNetworkOfferingData() } }, diff --git a/ui/src/views/storage/CreateSharedFS.vue b/ui/src/views/storage/CreateSharedFS.vue index fc9f43c704e..e3cd82996c9 100644 --- a/ui/src/views/storage/CreateSharedFS.vue +++ b/ui/src/views/storage/CreateSharedFS.vue @@ -272,23 +272,21 @@ export default { }, fetchOwnerOptions (OwnerOptions) { this.owner = {} - console.log('fetching owner') if (OwnerOptions.selectedAccountType === 'Account') { if (!OwnerOptions.selectedAccount) { return } - console.log('fetched account') this.owner.account = OwnerOptions.selectedAccount this.owner.domainid = OwnerOptions.selectedDomain } else if (OwnerOptions.selectedAccountType === 'Project') { if (!OwnerOptions.selectedProject) { return } - console.log('fetched project') this.owner.projectid = OwnerOptions.selectedProject } - console.log('fetched owner') - this.fetchData() + if (OwnerOptions.initialized) { + this.fetchData() + } }, fetchData () { this.minCpu = store.getters.features.sharedfsvmmincpucount diff --git a/ui/src/views/storage/CreateVolume.vue b/ui/src/views/storage/CreateVolume.vue index a0c04e7c0ab..b72799c4898 100644 --- a/ui/src/views/storage/CreateVolume.vue +++ b/ui/src/views/storage/CreateVolume.vue @@ -272,7 +272,9 @@ export default { } this.owner.projectid = OwnerOptions.selectedProject } - this.fetchData() + if (OwnerOptions.initialized) { + this.fetchData() + } }, fetchData () { if (this.createVolumeFromSnapshot) {