Skip to content

Commit 026c119

Browse files
committed
Simple state cache.
1 parent 374f44a commit 026c119

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

workspaces/client/src/pages/episode/components/EpisodePage.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,24 @@ import { usePlayerRef } from '@wsh-2025/client/src/pages/episode/hooks/usePlayer
1919

2020
export const prefetch = async (store: ReturnType<typeof createStore>, { episodeId }: Params) => {
2121
invariant(episodeId);
22-
const episode = await store.getState().features.episode.fetchEpisodeById({ episodeId });
23-
const modules = await store
24-
.getState()
25-
.features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: episodeId });
22+
const state = store.getState();
23+
24+
let episode = state.features.episode.episodes[episodeId];
25+
if (!episode) {
26+
episode = await state.features.episode.fetchEpisodeById({ episodeId });
27+
}
28+
const moduleIds = state.features.recommended.references[episodeId];
29+
30+
let modules = (moduleIds ?? [])
31+
.map((moduleId) => state.features.recommended.recommendedModules[moduleId])
32+
.filter((m) => m != null);
33+
34+
if (modules.length === 0) {
35+
modules = await store
36+
.getState()
37+
.features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: episodeId });
38+
}
39+
2640
return { episode, modules };
2741
};
2842

workspaces/client/src/pages/home/components/HomePage.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ import { RecommendedSection } from '@wsh-2025/client/src/features/recommended/co
33
import { useRecommended } from '@wsh-2025/client/src/features/recommended/hooks/useRecommended';
44

55
export const prefetch = async (store: ReturnType<typeof createStore>) => {
6+
const storedModules = store.getState().features.recommended.recommendedModules['entrance'];
7+
if (storedModules) {
8+
return { modules: storedModules };
9+
}
610
const modules = await store
711
.getState()
812
.features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: 'entrance' });

0 commit comments

Comments
 (0)