From dc5ea33c1f8294d629704de3ddddbe12a21ae969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Fri, 27 Jun 2025 13:52:15 +0100 Subject: [PATCH 1/4] fix(web): replace selectedProductQuery with configQuery --- web/src/queries/software.ts | 19 +++++-------------- web/src/queries/status.ts | 4 ++-- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/web/src/queries/software.ts b/web/src/queries/software.ts index 53ac74c65c..a6bea78e30 100644 --- a/web/src/queries/software.ts +++ b/web/src/queries/software.ts @@ -98,14 +98,6 @@ const licensesQuery = () => ({ staleTime: Infinity, }); -/** - * Query to retrieve selected product - */ -const selectedProductQuery = () => ({ - queryKey: ["software", "product"], - queryFn: () => fetchConfig().then(({ product }) => product), -}); - /** * Query to retrieve registration info */ @@ -238,20 +230,20 @@ const useProduct = ( ): { products?: Product[]; selectedProduct?: Product } => { const func = options?.suspense ? useSuspenseQueries : useQueries; const [ - { data: selected, isPending: isSelectedPending }, + { data: config, isPending: isConfigPending }, { data: products, isPending: isProductsPending }, ] = func({ - queries: [selectedProductQuery(), productsQuery()], - }) as [{ data: string; isPending: boolean }, { data: Product[]; isPending: boolean }]; + queries: [configQuery(), productsQuery()], + }) as [{ data: SoftwareConfig; isPending: boolean }, { data: Product[]; isPending: boolean }]; - if (isSelectedPending || isProductsPending) { + if (isConfigPending || isProductsPending) { return { products: [], selectedProduct: undefined, }; } - const selectedProduct = products.find((p: Product) => p.id === selected); + const selectedProduct = products.find((p: Product) => p.id === config.product); return { products, selectedProduct, @@ -423,7 +415,6 @@ const useConflictsChanges = () => { export { configQuery, productsQuery, - selectedProductQuery, useAddons, useConfigMutation, useConflicts, diff --git a/web/src/queries/status.ts b/web/src/queries/status.ts index c7ae6db48d..736a24ae89 100644 --- a/web/src/queries/status.ts +++ b/web/src/queries/status.ts @@ -26,7 +26,7 @@ import { fetchInstallerStatus } from "~/api/status"; import { useInstallerClient } from "~/context/installer"; import { InstallerStatus } from "~/types/status"; import { QueryHookOptions } from "~/types/queries"; -import { selectedProductQuery } from "./software"; +import { configQuery } from "./software"; const MANAGER_SERVICE = "org.opensuse.Agama.Manager1"; @@ -71,7 +71,7 @@ const useInstallerStatusChanges = () => { queryClient.invalidateQueries({ queryKey: ["status"] }); break; case "ProductChanged": - queryClient.invalidateQueries({ queryKey: selectedProductQuery().queryKey }); + queryClient.invalidateQueries({ queryKey: configQuery().queryKey }); break; case "InstallationPhaseChanged": if (!data) { From f5b44b6bcf9b251a25a73835894443d1c6752363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Fri, 27 Jun 2025 13:53:03 +0100 Subject: [PATCH 2/4] fix(web): invalidate all software queries on product change --- web/src/queries/software.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/web/src/queries/software.ts b/web/src/queries/software.ts index a6bea78e30..699f6abbea 100644 --- a/web/src/queries/software.ts +++ b/web/src/queries/software.ts @@ -158,9 +158,7 @@ const useConfigMutation = () => { const query = { mutationFn: updateConfig, onSuccess: async (_, config: SoftwareConfig) => { - queryClient.invalidateQueries({ queryKey: ["software", "config"] }); - queryClient.invalidateQueries({ queryKey: ["software", "product"] }); - queryClient.invalidateQueries({ queryKey: ["software", "proposal"] }); + queryClient.invalidateQueries({ queryKey: ["software"] }); if (config.product) { await systemProbe(); queryClient.invalidateQueries({ queryKey: ["storage"] }); @@ -363,7 +361,7 @@ const useProductChanges = () => { return client.onEvent((event) => { if (event.type === "ProductChanged") { - queryClient.invalidateQueries({ queryKey: ["software", "config"] }); + queryClient.invalidateQueries({ queryKey: ["software"] }); } if (event.type === "LocaleChanged") { From 0e1e0127ef91ae17cc6a86dc4c0b408fbd6ce96a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Fri, 27 Jun 2025 16:21:19 +0100 Subject: [PATCH 3/4] fix(web): do not invalidate "software/config" query twice --- web/src/queries/status.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/web/src/queries/status.ts b/web/src/queries/status.ts index 736a24ae89..0380ef4a0b 100644 --- a/web/src/queries/status.ts +++ b/web/src/queries/status.ts @@ -26,7 +26,6 @@ import { fetchInstallerStatus } from "~/api/status"; import { useInstallerClient } from "~/context/installer"; import { InstallerStatus } from "~/types/status"; import { QueryHookOptions } from "~/types/queries"; -import { configQuery } from "./software"; const MANAGER_SERVICE = "org.opensuse.Agama.Manager1"; @@ -70,9 +69,6 @@ const useInstallerStatusChanges = () => { case "IssuesChanged": queryClient.invalidateQueries({ queryKey: ["status"] }); break; - case "ProductChanged": - queryClient.invalidateQueries({ queryKey: configQuery().queryKey }); - break; case "InstallationPhaseChanged": if (!data) { console.warn("Ignoring InstallationPhaseChanged event", event); From 758377b37f4638ba2ef65fe16a4fae1a08989193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Fri, 27 Jun 2025 16:32:12 +0100 Subject: [PATCH 4/4] docs(web): update changes file --- web/package/agama-web-ui.changes | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/web/package/agama-web-ui.changes b/web/package/agama-web-ui.changes index 31051469cb..fae97b43d4 100644 --- a/web/package/agama-web-ui.changes +++ b/web/package/agama-web-ui.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Jun 27 15:14:35 UTC 2025 - Imobach Gonzalez Sosa + +- Invalidate all software queries when the selected product changes + (gh#agama-project/agama#2517). + ------------------------------------------------------------------- Fri Jun 27 06:30:11 UTC 2025 - Imobach Gonzalez Sosa