From 0fbc6cc59cf5ccf6a694939fcf2063fcde818771 Mon Sep 17 00:00:00 2001 From: nikhagra-akamai Date: Tue, 25 Mar 2025 14:49:43 +0530 Subject: [PATCH 1/3] refactor: [DI-24193] - Update query cache on api success --- .../manager/src/queries/cloudpulse/alerts.ts | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/manager/src/queries/cloudpulse/alerts.ts b/packages/manager/src/queries/cloudpulse/alerts.ts index 4a1d5dd38fc..7afbe546e06 100644 --- a/packages/manager/src/queries/cloudpulse/alerts.ts +++ b/packages/manager/src/queries/cloudpulse/alerts.ts @@ -4,6 +4,7 @@ import { deleteEntityFromAlert, editAlertDefinition, } from '@linode/api-v4/lib/cloudpulse'; +import { queryPresets } from '@linode/queries'; import { keepPreviousData, useMutation, @@ -11,7 +12,6 @@ import { useQueryClient, } from '@tanstack/react-query'; -import { queryPresets } from '@linode/queries'; import { queryFactory } from './queries'; import type { @@ -78,8 +78,37 @@ export const useEditAlertDefinition = () => { return useMutation({ mutationFn: ({ alertId, serviceType, ...data }) => editAlertDefinition(data, serviceType, alertId), - onSuccess() { - queryClient.invalidateQueries(queryFactory.alerts); + + onSuccess(data) { + const allAlertsQueryKey = queryFactory.alerts._ctx.all().queryKey; + queryClient.cancelQueries({ queryKey: allAlertsQueryKey }); + queryClient.setQueryData(allAlertsQueryKey, (oldData) => { + return ( + oldData?.map((alert) => { + if (alert.id === data.id) { + return data; + } + return alert; + }) ?? [data] + ); + }); + + queryClient.invalidateQueries({ + queryKey: queryFactory.alerts._ctx.alertByServiceTypeAndId( + data.service_type, + String(data.id) + ).queryKey, + }); + + queryClient.invalidateQueries({ + queryKey: allAlertsQueryKey, + }); + + queryClient.invalidateQueries({ + queryKey: queryFactory.alerts._ctx.alertsByServiceType( + data.service_type + ).queryKey, + }); }, }); }; From d4c195f38de0b9cd977ae595cec59673508eae2a Mon Sep 17 00:00:00 2001 From: nikhagra-akamai Date: Wed, 26 Mar 2025 20:45:21 +0530 Subject: [PATCH 2/3] refactor: [DI-24193] - Remove redundant invalidate query --- packages/manager/src/queries/cloudpulse/alerts.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/manager/src/queries/cloudpulse/alerts.ts b/packages/manager/src/queries/cloudpulse/alerts.ts index 7afbe546e06..9300f5409af 100644 --- a/packages/manager/src/queries/cloudpulse/alerts.ts +++ b/packages/manager/src/queries/cloudpulse/alerts.ts @@ -85,10 +85,7 @@ export const useEditAlertDefinition = () => { queryClient.setQueryData(allAlertsQueryKey, (oldData) => { return ( oldData?.map((alert) => { - if (alert.id === data.id) { - return data; - } - return alert; + return alert.id === data.id ? data : alert; }) ?? [data] ); }); @@ -100,10 +97,6 @@ export const useEditAlertDefinition = () => { ).queryKey, }); - queryClient.invalidateQueries({ - queryKey: allAlertsQueryKey, - }); - queryClient.invalidateQueries({ queryKey: queryFactory.alerts._ctx.alertsByServiceType( data.service_type From 156da31daa311ebb579b9b2c0d792696f746a6f5 Mon Sep 17 00:00:00 2001 From: nikhagra-akamai Date: Wed, 26 Mar 2025 20:46:50 +0530 Subject: [PATCH 3/3] added changeset --- packages/manager/.changeset/pr-11917-added-1743002198888.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-11917-added-1743002198888.md diff --git a/packages/manager/.changeset/pr-11917-added-1743002198888.md b/packages/manager/.changeset/pr-11917-added-1743002198888.md new file mode 100644 index 00000000000..6a611bde7b2 --- /dev/null +++ b/packages/manager/.changeset/pr-11917-added-1743002198888.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Added +--- + +Add cache update logic on edit alert query ([#11917](https://github.com/linode/manager/pull/11917))