Skip to content

Commit 7235613

Browse files
authored
fix(updates): Prefetch changelog when update is active (#3211)
1 parent caa021f commit 7235613

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

packages/ui/src/features/updates/UpdateAvailableModal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { ReleaseNotesSections } from "@posthog/ui/features/updates/ReleaseNotesS
44
import { parseReleaseNotes } from "@posthog/ui/features/updates/releaseNotes";
55
import { useUpdateModalStore } from "@posthog/ui/features/updates/updateModalStore";
66
import {
7+
useHasActiveUpdate,
78
useInstallUpdate,
89
useUpdateView,
910
} from "@posthog/ui/features/updates/updateStore";
@@ -62,12 +63,13 @@ export function UpdateAvailableModal() {
6263
const downloadMutation = useMutation(
6364
hostTRPC.updates.download.mutationOptions(),
6465
);
66+
const prefetchForActiveUpdate = useHasActiveUpdate();
6567
const targetVersion = version ?? availableVersion;
6668
const { data: releasesData, isPending: isPendingReleases } = useQuery({
6769
...hostTRPC.githubReleases.list.queryOptions(
6870
targetVersion ? { expectVersion: targetVersion } : undefined,
6971
),
70-
enabled: isOpen,
72+
enabled: isOpen || prefetchForActiveUpdate,
7173
});
7274

7375
const percent = Math.round(downloadPercent ?? 0);

packages/ui/src/features/updates/WhatsNewModal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
groupReleases,
66
mergeReleaseNotes,
77
} from "@posthog/ui/features/updates/releaseNotes";
8+
import { useHasActiveUpdate } from "@posthog/ui/features/updates/updateStore";
89
import { useWhatsNewStore } from "@posthog/ui/features/updates/whatsNewStore";
910
import {
1011
Badge,
@@ -41,6 +42,7 @@ function ChangelogSkeleton() {
4142
export function WhatsNewModal() {
4243
const isOpen = useWhatsNewStore((state) => state.isOpen);
4344
const close = useWhatsNewStore((state) => state.close);
45+
const prefetchForActiveUpdate = useHasActiveUpdate();
4446
const hostTRPC = useHostTRPC();
4547
const { data: currentVersion, isError: isVersionError } = useQuery(
4648
hostTRPC.os.getAppVersion.queryOptions(),
@@ -53,7 +55,7 @@ export function WhatsNewModal() {
5355
...hostTRPC.githubReleases.list.queryOptions(
5456
currentVersion ? { expectVersion: currentVersion } : undefined,
5557
),
56-
enabled: isOpen && !!currentVersion,
58+
enabled: (isOpen || prefetchForActiveUpdate) && !!currentVersion,
5759
});
5860
const isError = isVersionError || isReleasesError;
5961

packages/ui/src/features/updates/updateStore.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,17 @@ export function useUpdateView(): UpdateView {
3737
}));
3838
}
3939

40+
export function useHasActiveUpdate(): boolean {
41+
return useStore(
42+
updateStore,
43+
(state) =>
44+
state.status === "available" ||
45+
state.status === "downloading" ||
46+
state.status === "ready" ||
47+
state.status === "installing",
48+
);
49+
}
50+
4051
export function useInstallUpdate(): () => Promise<void> {
4152
const client = useService<UpdatesClient>(UPDATES_CLIENT);
4253

0 commit comments

Comments
 (0)