From bbc6453b24af5dd80af77da7ea7cc7d6d39334d9 Mon Sep 17 00:00:00 2001 From: coopops Date: Sat, 18 Jul 2026 18:27:57 +0000 Subject: [PATCH] =?UTF-8?q?fix(capital):=20await=20onSaved=20before=20adva?= =?UTF-8?q?ncing=20wizard=20past=20=D0=91=D0=9B=D0=90=D0=93=D0=9E=D0=A0?= =?UTF-8?q?=D0=9E=D0=A1=D0=A2=20step?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit goNext() checked getFirstAvailableCouncilGroup() (which reads isDocParamsReady, derived from onboardingState.capital_program_doc_data_hash) synchronously right after saveParams() resolved. But saveParams() fired options.onSaved(hash) without awaiting it, and the card's onSaved handler did `void handleDocParamsSaved()` — an async refetch of onboarding state — so isDocParamsReady was still stale at the moment goNext() decided which council group to jump to. getFirstAvailableCouncilGroup() returned null, setWizardStepKey never ran, and the wizard just re-rendered the same БЛАГОРОСТ step, looking like the just-saved params were never registered. Fix: onSaved is now awaited inside saveParams(), and the card passes the handleDocParamsSaved() promise through instead of firing it and forgetting it. --- .../features/Onboarding/model/useCapitalProgramDocParams.ts | 4 ++-- .../capital/features/Onboarding/ui/CapitalOnboardingCard.vue | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/components/desktop/extensions/capital/features/Onboarding/model/useCapitalProgramDocParams.ts b/components/desktop/extensions/capital/features/Onboarding/model/useCapitalProgramDocParams.ts index adfa29b7bd9..4e6411624c6 100644 --- a/components/desktop/extensions/capital/features/Onboarding/model/useCapitalProgramDocParams.ts +++ b/components/desktop/extensions/capital/features/Onboarding/model/useCapitalProgramDocParams.ts @@ -37,7 +37,7 @@ function createEmptyForm(): Record { return Object.fromEntries(ALL_DOC_FIELDS.map((key) => [key, ''])) as Record; } -export function useCapitalProgramDocParams(options?: { onSaved?: (hash: string) => void }) { +export function useCapitalProgramDocParams(options?: { onSaved?: (hash: string) => void | Promise }) { const $q = useQuasar(); const systemStore = useSystemStore(); const sessionStore = useSessionStore(); @@ -172,7 +172,7 @@ export function useCapitalProgramDocParams(options?: { onSaved?: (hash: string) savedHash.value = hash; persistDraftToStorage(); - options?.onSaved?.(hash); + await options?.onSaved?.(hash); $q.notify({ type: 'positive', diff --git a/components/desktop/extensions/capital/features/Onboarding/ui/CapitalOnboardingCard.vue b/components/desktop/extensions/capital/features/Onboarding/ui/CapitalOnboardingCard.vue index 1c9d3f9767e..c950c4f9397 100644 --- a/components/desktop/extensions/capital/features/Onboarding/ui/CapitalOnboardingCard.vue +++ b/components/desktop/extensions/capital/features/Onboarding/ui/CapitalOnboardingCard.vue @@ -150,9 +150,7 @@ const { saveParams, setWizardStepKey, } = useCapitalProgramDocParams({ - onSaved: () => { - void handleDocParamsSaved(); - }, + onSaved: () => handleDocParamsSaved(), }); const activeWizardStep = wizardStepKey;