@@ -12,7 +12,11 @@ import { Badge } from "~/components/ui/badge";
1212const CACHE_KEY = "home_stats_cache" ;
1313const CACHE_DURATION = 1000 * 60 * 15 ; // 15 min
1414
15- let memoryCache : { companies : number ; problems : number } | null = null ;
15+ let memoryCache : {
16+ companies : number ;
17+ problems : number ;
18+ lastDbUpdate : string | null ;
19+ } | null = null ;
1620
1721export default function Home ( ) {
1822 const [ stats , setStats ] = useState < {
@@ -28,18 +32,27 @@ export default function Home() {
2832 useEffect ( ( ) => {
2933 async function fetchStats ( ) {
3034 if ( memoryCache ) {
31- setStats ( memoryCache ) ;
35+ setStats ( {
36+ companies : memoryCache . companies ,
37+ problems : memoryCache . problems ,
38+ } ) ;
39+ setLastDbUpdate ( memoryCache . lastDbUpdate ) ;
3240 setLoading ( false ) ;
41+ console . log ( memoryCache ) ;
3342 return ;
3443 }
3544
3645 const cached = localStorage . getItem ( CACHE_KEY ) ;
3746 if ( cached ) {
3847 const parsed = JSON . parse ( cached ) ;
3948 if ( Date . now ( ) - parsed . timestamp < CACHE_DURATION ) {
40- memoryCache = parsed . data ;
49+ memoryCache = {
50+ ...parsed . data ,
51+ lastDbUpdate : parsed . lastDbUpdate ?? null ,
52+ } ;
53+
4154 setStats ( parsed . data ) ;
42- if ( parsed . lastDbUpdate ) setLastDbUpdate ( parsed . lastDbUpdate ) ;
55+ setLastDbUpdate ( parsed . lastDbUpdate ?? null ) ;
4356 setLoading ( false ) ;
4457 return ;
4558 }
@@ -68,8 +81,12 @@ export default function Home() {
6881 . single ( ) ;
6982
7083 const lastDbUpdate = lastDbUpdateRes . data ?. last_db_update ?? null ;
84+ console . log ( "Fetched stats:" , data , "Last DB Update:" , lastDbUpdate ) ;
7185
72- memoryCache = data ;
86+ memoryCache = {
87+ ...data ,
88+ lastDbUpdate,
89+ } ;
7390
7491 localStorage . setItem (
7592 CACHE_KEY ,
@@ -210,23 +227,25 @@ export default function Home() {
210227 </ >
211228 ) }
212229 </ div >
213- { ! loading && < div className = "flex flex-row items-center gap-2" >
214- < div className = "text-muted-foreground flex gap-x-1 text-sm" >
215- Problems Last Updated on{ " " }
216- < Badge
217- variant = "default"
218- className = "bg-purple-50 px-1.5 text-purple-700 dark:bg-purple-950 dark:text-purple-300"
219- >
220- { lastDbUpdate
221- ? new Date ( lastDbUpdate ) . toLocaleDateString ( "en-US" , {
222- month : "short" ,
223- day : "numeric" ,
224- year : "numeric" ,
225- } )
226- : "—" }
227- </ Badge >
230+ { ! loading && (
231+ < div className = "flex flex-row items-center gap-2" >
232+ < div className = "text-muted-foreground flex gap-x-1 text-sm" >
233+ Problems Last Updated on{ " " }
234+ < Badge
235+ variant = "default"
236+ className = "bg-purple-50 px-1.5 text-purple-700 dark:bg-purple-950 dark:text-purple-300"
237+ >
238+ { lastDbUpdate
239+ ? new Date ( lastDbUpdate ) . toLocaleDateString ( "en-US" , {
240+ month : "short" ,
241+ day : "numeric" ,
242+ year : "numeric" ,
243+ } )
244+ : "—" }
245+ </ Badge >
246+ </ div >
228247 </ div >
229- </ div > }
248+ ) }
230249 </ div >
231250 </ div >
232251 </ div >
0 commit comments