diff --git a/packages/ui/src/features/updates/UpdateAvailableModal.tsx b/packages/ui/src/features/updates/UpdateAvailableModal.tsx index 5933c6b371..733959a868 100644 --- a/packages/ui/src/features/updates/UpdateAvailableModal.tsx +++ b/packages/ui/src/features/updates/UpdateAvailableModal.tsx @@ -4,6 +4,7 @@ import { ReleaseNotesSections } from "@posthog/ui/features/updates/ReleaseNotesS import { parseReleaseNotes } from "@posthog/ui/features/updates/releaseNotes"; import { useUpdateModalStore } from "@posthog/ui/features/updates/updateModalStore"; import { + useHasActiveUpdate, useInstallUpdate, useUpdateView, } from "@posthog/ui/features/updates/updateStore"; @@ -62,12 +63,13 @@ export function UpdateAvailableModal() { const downloadMutation = useMutation( hostTRPC.updates.download.mutationOptions(), ); + const prefetchForActiveUpdate = useHasActiveUpdate(); const targetVersion = version ?? availableVersion; const { data: releasesData, isPending: isPendingReleases } = useQuery({ ...hostTRPC.githubReleases.list.queryOptions( targetVersion ? { expectVersion: targetVersion } : undefined, ), - enabled: isOpen, + enabled: isOpen || prefetchForActiveUpdate, }); const percent = Math.round(downloadPercent ?? 0); diff --git a/packages/ui/src/features/updates/WhatsNewModal.tsx b/packages/ui/src/features/updates/WhatsNewModal.tsx index 03d60b8a7c..d8e9e3a63a 100644 --- a/packages/ui/src/features/updates/WhatsNewModal.tsx +++ b/packages/ui/src/features/updates/WhatsNewModal.tsx @@ -5,6 +5,7 @@ import { groupReleases, mergeReleaseNotes, } from "@posthog/ui/features/updates/releaseNotes"; +import { useHasActiveUpdate } from "@posthog/ui/features/updates/updateStore"; import { useWhatsNewStore } from "@posthog/ui/features/updates/whatsNewStore"; import { Badge, @@ -41,6 +42,7 @@ function ChangelogSkeleton() { export function WhatsNewModal() { const isOpen = useWhatsNewStore((state) => state.isOpen); const close = useWhatsNewStore((state) => state.close); + const prefetchForActiveUpdate = useHasActiveUpdate(); const hostTRPC = useHostTRPC(); const { data: currentVersion, isError: isVersionError } = useQuery( hostTRPC.os.getAppVersion.queryOptions(), @@ -53,7 +55,7 @@ export function WhatsNewModal() { ...hostTRPC.githubReleases.list.queryOptions( currentVersion ? { expectVersion: currentVersion } : undefined, ), - enabled: isOpen && !!currentVersion, + enabled: (isOpen || prefetchForActiveUpdate) && !!currentVersion, }); const isError = isVersionError || isReleasesError; diff --git a/packages/ui/src/features/updates/updateStore.ts b/packages/ui/src/features/updates/updateStore.ts index 66c015b3ac..26aeef83bd 100644 --- a/packages/ui/src/features/updates/updateStore.ts +++ b/packages/ui/src/features/updates/updateStore.ts @@ -37,6 +37,17 @@ export function useUpdateView(): UpdateView { })); } +export function useHasActiveUpdate(): boolean { + return useStore( + updateStore, + (state) => + state.status === "available" || + state.status === "downloading" || + state.status === "ready" || + state.status === "installing", + ); +} + export function useInstallUpdate(): () => Promise { const client = useService(UPDATES_CLIENT);