From 9f19ffabf9b0997ec44be7ef4a68080f933b2f21 Mon Sep 17 00:00:00 2001 From: ruwinirathnamalala Date: Thu, 19 Mar 2026 14:45:47 +0530 Subject: [PATCH 1/2] fix for bug - Clear current service state on browser back button press --- GUI/src/pages/ServiceFlowPage.tsx | 5 +++++ GUI/src/store/new-services.store.ts | 2 ++ 2 files changed, 7 insertions(+) diff --git a/GUI/src/pages/ServiceFlowPage.tsx b/GUI/src/pages/ServiceFlowPage.tsx index 33bd1f77..bf74f99f 100644 --- a/GUI/src/pages/ServiceFlowPage.tsx +++ b/GUI/src/pages/ServiceFlowPage.tsx @@ -46,6 +46,11 @@ const ServiceFlowPage: FC = () => { }; void loadData(); + + // Cleanup function to reset state when component unmounts (including browser back button) + return () => { + useServiceStore.getState().resetState(); + }; }, [id]); const edges = useServiceStore((state) => state.edges); diff --git a/GUI/src/store/new-services.store.ts b/GUI/src/store/new-services.store.ts index ae4e16cc..c39ea80d 100644 --- a/GUI/src/store/new-services.store.ts +++ b/GUI/src/store/new-services.store.ts @@ -391,6 +391,8 @@ const useServiceStore = create((set, get) => ({ serviceId: uuid(), description: '', slot: '', + examples: [], + entities: [], secrets: { prod: [], test: [] }, availableVariables: { prod: [], test: [] }, isCommon: false, From 54645fcb3f1cbf2a44bf5fdc73a6d0fe34de85c5 Mon Sep 17 00:00:00 2001 From: ruwinirathnamalala Date: Thu, 19 Mar 2026 16:57:08 +0530 Subject: [PATCH 2/2] Resolver SonarQubes issues in the PR --- GUI/src/pages/ServiceFlowPage.tsx | 6 +++--- GUI/src/store/new-services.store.ts | 33 +++++++++++++++-------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/GUI/src/pages/ServiceFlowPage.tsx b/GUI/src/pages/ServiceFlowPage.tsx index bf74f99f..3e354610 100644 --- a/GUI/src/pages/ServiceFlowPage.tsx +++ b/GUI/src/pages/ServiceFlowPage.tsx @@ -74,15 +74,15 @@ const ServiceFlowPage: FC = () => { }} saveOnClick={async () => { setHasUnsavedChanges(false); - if (!id) { + if (id) { + await useServiceStore.getState().loadService(id); + } else { const serviceId = useServiceStore.getState().serviceId; const serviceResponse = await useServiceStore.getState().loadService(serviceId); if (serviceResponse) { useServiceListStore.getState().setSelectedService(serviceResponse?.data); navigate(ROUTES.replaceWithId(ROUTES.EDITSERVICE_ROUTE, serviceId)); } - } else { - await useServiceStore.getState().loadService(id); } }} /> diff --git a/GUI/src/store/new-services.store.ts b/GUI/src/store/new-services.store.ts index c39ea80d..db190b81 100644 --- a/GUI/src/store/new-services.store.ts +++ b/GUI/src/store/new-services.store.ts @@ -229,7 +229,7 @@ const useServiceStore = create((set, get) => ({ unmarkAsNewService: () => set({ isNewService: false }), setServiceId: (id) => set({ serviceId: id }), setNodes: (nodes) => { - if (nodes instanceof Function) { + if (typeof nodes === 'function') { set((state) => { return { nodes: nodes(state.nodes), @@ -240,7 +240,7 @@ const useServiceStore = create((set, get) => ({ } }, setEdges: (edges) => { - if (edges instanceof Function) { + if (typeof edges === 'function') { set((state) => { return { edges: edges(state.edges), @@ -294,17 +294,18 @@ const useServiceStore = create((set, get) => ({ }); } - chips.push({ - name: 'Base Response', - value: `${endpoint?.name.replaceAll(' ', '_')}_res.response.body`, - data: `${endpoint?.name.replaceAll(' ', '_')}_res.response.body`, - }); - - chips.push({ - name: 'Status Code', - value: `${endpoint?.name.replaceAll(' ', '_')}_res.response.statusCodeValue`, - data: `${endpoint?.name.replaceAll(' ', '_')}_res.response.statusCodeValue`, - }); + chips.push( + { + name: 'Base Response', + value: `${endpoint?.name.replaceAll(' ', '_')}_res.response.body`, + data: `${endpoint?.name.replaceAll(' ', '_')}_res.response.body`, + }, + { + name: 'Status Code', + value: `${endpoint?.name.replaceAll(' ', '_')}_res.response.statusCodeValue`, + data: `${endpoint?.name.replaceAll(' ', '_')}_res.response.statusCodeValue`, + } + ); const variable: EndpointResponseVariable = { name: endpoint?.name ?? '', @@ -440,7 +441,7 @@ const useServiceStore = create((set, get) => ({ if (!nodes || nodes.length === 0) nodes = initialNodes; - if (!endpoints || !(endpoints instanceof Array)) endpoints = []; + if (!endpoints || !Array.isArray(endpoints)) endpoints = []; nodes = nodes.map((node: any) => { if (node.type !== 'custom') return node; @@ -679,7 +680,7 @@ const useServiceStore = create((set, get) => ({ title: i18next.t('newService.toast.missingFields'), message: i18next.t('newService.toast.serviceMissingFields'), }); - return Promise.reject(new Error(i18next.t('newService.toast.missingFields') ?? 'Error')); + throw new Error(i18next.t('newService.toast.missingFields') ?? 'Error'); } const { isNewService, onServiceSave } = get(); @@ -687,7 +688,7 @@ const useServiceStore = create((set, get) => ({ try { await onServiceSave(ServiceState.Ready); } catch (e: any) { - return Promise.reject(new Error(i18next.t('toast.cannot-save-flow') ?? (e?.message as string) ?? 'Error')); + throw new Error(i18next.t('toast.cannot-save-flow') ?? (e?.message as string) ?? 'Error'); } if (isNewService) {