diff --git a/Changelog.md b/Changelog.md index d14a857..5485a26 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,13 @@ # Changelog ## [Unreleased] +## [3.18.0] + +### Changed + +- Added a retry action for failed workspace setup tasks using the onboarding approval API without a request body. +- Hide the credit detail inputs on the Superadmin onboarding approval page. +- ## [3.17.0] - 2026-10-15 ### Changed diff --git a/package.json b/package.json index 0427563..816e9d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "entity-developer-dashboard", - "version": "3.17.0", + "version": "3.18.0", "private": true, "scripts": { "serve": "vue-cli-service serve --mode production", diff --git a/src/components/stepper/OnboardingStepper.vue b/src/components/stepper/OnboardingStepper.vue index 623f023..6ee5646 100644 --- a/src/components/stepper/OnboardingStepper.vue +++ b/src/components/stepper/OnboardingStepper.vue @@ -25,7 +25,9 @@ v-else-if="!isLoading && currentStep === 4" :company="company" :is-refreshing="isRefreshingStatus" + :is-retrying="isRetryingOnboarding" @refresh-status="refreshOnboardingStatus" + @retry-onboarding="retryOnboarding" /> @@ -112,6 +114,7 @@ export default { steps: [{ label: 'Organization' }, { label: 'Intended use' }], isProcessingCredit: false, isRefreshingStatus: false, + isRetryingOnboarding: false, creditErrorMessage: null, }; }, @@ -154,6 +157,7 @@ export default { }, populateCompanyFromOnboarding(data) { this.company = { + onboardingRecordId: data._id || data.id || '', name: data.companyName || '', logo: data.companyLogo || '', contact_email: data.customerEmail || '', domain: data.domain || '', type: data.type === 2 || data.type === 'COMMUNITY' ? 'COMMUNITY' : 'BUSINESS', @@ -213,6 +217,20 @@ export default { this.isRefreshingStatus = false; } }, + async retryOnboarding() { + if (this.isRetryingOnboarding || !this.company.onboardingRecordId) return; + this.isRetryingOnboarding = true; + try { + await this.$store.dispatch('mainStore/approveOnboardingRequest', { + recordId: this.company.onboardingRecordId, + }); + await this.refreshOnboardingStatus(); + } catch (error) { + console.error(error?.message || error); + } finally { + this.isRetryingOnboarding = false; + } + }, async processCreditRequest() { if (this.isProcessingCredit || this.hasSubmitted) return; this.isProcessingCredit = true; diff --git a/src/components/stepper/StepCreateSSIService.vue b/src/components/stepper/StepCreateSSIService.vue index 95e26e3..c1bcd62 100644 --- a/src/components/stepper/StepCreateSSIService.vue +++ b/src/components/stepper/StepCreateSSIService.vue @@ -51,7 +51,14 @@

{{ item.description }}

- {{ item.statusLabel }} + + {{ item.statusLabel }}
@@ -100,6 +107,7 @@ export default { props: { company: { type: Object, required: true }, isRefreshing: { type: Boolean, default: false }, + isRetrying: { type: Boolean, default: false }, }, computed: { supportMailto() { @@ -296,6 +304,9 @@ export default { .complete .status-label { background: #e3f8ed; color: #159a68; } .active .status-label { background: #e2e4e6; color: #5a6268; } .failed .status-label { background: #ffe1e1; color: #dc3c3c; } +.retry-button { border: 0; cursor: pointer; font: inherit; } +.retry-button:hover:not(:disabled) { background: #dc3c3c; color: #fff; } +.retry-button:disabled { cursor: wait; opacity: .65; } .failure-row { display: flex; gap: 12px; align-items: center; margin-top: 6px; } .failure-row > span { min-width: 0; flex: 1; padding: 7px 10px; border-radius: 4px; background: #fff0f0; color: #d74848; font-size: 11px; line-height: 1.35; } .status-footer { display: flex; gap: 12px; align-items: center; justify-content: space-between; margin-top: 2px; } diff --git a/src/store/mainStore.js b/src/store/mainStore.js index 8f1fc1a..4b0285c 100644 --- a/src/store/mainStore.js +++ b/src/store/mainStore.js @@ -608,7 +608,7 @@ const mainStore = { const url = `${apiServerBaseUrl}/customer-onboarding/${payload.recordId}/process`; const resp = await RequestHandler(url, 'POST', - payload, + {}, UtilsMixin.methods.getHeader(getters.getAuthToken), ) if (!resp || Array.isArray(resp.message)) { diff --git a/src/views/sa/components/ApproveCustomerOnboarding.vue b/src/views/sa/components/ApproveCustomerOnboarding.vue index ce8855c..41def31 100644 --- a/src/views/sa/components/ApproveCustomerOnboarding.vue +++ b/src/views/sa/components/ApproveCustomerOnboarding.vue @@ -24,6 +24,7 @@ +
-

Review all credit details carefully before clicking approve.