1
+ "use client" ;
2
+
3
+ import React , { useState , useEffect } from "react" ;
1
4
import {
2
5
Button ,
3
6
Code ,
@@ -8,7 +11,6 @@ import {
8
11
Title ,
9
12
} from "@mantine/core" ;
10
13
import classes from "./downloads.module.css" ;
11
- import React from "react" ;
12
14
import { ExtensionList } from "@/app/downloads/extensions" ;
13
15
import { NightlyList } from "@/app/downloads/nightlies" ;
14
16
import Link from "next/link" ;
@@ -93,12 +95,24 @@ function DesktopDownload({ latest }: { latest: GithubRelease | null }) {
93
95
) ;
94
96
}
95
97
96
- export default async function Page ( ) {
97
- const releases = await getLatestReleases ( ) ;
98
- const latest = releases . length > 0 ? releases [ 0 ] : null ;
99
- const nightlies = releases
100
- . filter ( ( release ) => release . prerelease )
101
- . slice ( 0 , maxNightlies ) ;
98
+ export default function Page ( ) {
99
+ const [ latest , setLatest ] = useState < GithubRelease | null > ( null ) ;
100
+ const [ nightlies , setNightlies ] = useState < GithubRelease [ ] > ( [ ] ) ;
101
+ useEffect ( ( ) => {
102
+ const fetchReleases = async ( ) => {
103
+ try {
104
+ const releases = await getLatestReleases ( ) ;
105
+ const nightlies = releases
106
+ . filter ( ( release ) => release . prerelease )
107
+ . slice ( 0 , maxNightlies ) ;
108
+ setNightlies ( nightlies ) ;
109
+ setLatest ( releases . length > 0 ? releases [ 0 ] : null ) ;
110
+ } catch ( err ) {
111
+ console . warn ( "Failed to fetch releases" , err ) ;
112
+ }
113
+ } ;
114
+ fetchReleases ( ) ;
115
+ } , [ ] ) ;
102
116
return (
103
117
< Container size = "xl" className = { classes . container } >
104
118
< Stack gap = "xl" >
0 commit comments