From 61353cbe8adf151371aa213ed200cbb66082edf5 Mon Sep 17 00:00:00 2001 From: LP B Date: Fri, 20 Sep 2024 16:00:40 +0200 Subject: [PATCH] fix(app/edge): race between redirects when selecting a template (#12230) --- .../edge/edge-stacks/CreateView/CreateForm.tsx | 2 +- .../edge-stacks/CreateView/useTemplateParams.tsx | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/react/edge/edge-stacks/CreateView/CreateForm.tsx b/app/react/edge/edge-stacks/CreateView/CreateForm.tsx index a5dea8af9..58572bc58 100644 --- a/app/react/edge/edge-stacks/CreateView/CreateForm.tsx +++ b/app/react/edge/edge-stacks/CreateView/CreateForm.tsx @@ -92,7 +92,7 @@ function getTemplateValues( type: 'custom' | 'app' | undefined, template: TemplateViewModel | CustomTemplate | undefined ): TemplateValues { - if (!type) { + if (!type || !template) { return getInitialTemplateValues(); } diff --git a/app/react/edge/edge-stacks/CreateView/useTemplateParams.tsx b/app/react/edge/edge-stacks/CreateView/useTemplateParams.tsx index f3b6978cf..b1f10dcb4 100644 --- a/app/react/edge/edge-stacks/CreateView/useTemplateParams.tsx +++ b/app/react/edge/edge-stacks/CreateView/useTemplateParams.tsx @@ -1,7 +1,10 @@ +import { useRouter } from '@uirouter/react'; + import { useParamState } from '@/react/hooks/useParamState'; export function useTemplateParams() { - const [id, setTemplateId] = useParamState('templateId', (param) => { + const router = useRouter(); + const [id] = useParamState('templateId', (param) => { if (!param) { return undefined; } @@ -14,7 +17,7 @@ export function useTemplateParams() { return templateId; }); - const [type, setTemplateType] = useParamState('templateType', (param) => { + const [type] = useParamState('templateType', (param) => { if (param === 'app' || param === 'custom') { return param; } @@ -31,7 +34,10 @@ export function useTemplateParams() { id: number | undefined; type: 'app' | 'custom' | undefined; }) { - setTemplateId(id); - setTemplateType(type); + router.stateService.go( + '.', + { templateId: id, templateType: type }, + { reload: false } + ); } }