| 244 | |
| 245 | useEffect(() => { |
| 246 | const fetchData = async () => { |
| 247 | try { |
| 248 | // Fetch contributors |
| 249 | const contributorsResponse = await fetch("https://api.github.com/repos/Bitbox-Connect/Bitbox/contributors?page=1&per_page=100"); |
| 250 | |
| 251 | if (!contributorsResponse.ok) { |
| 252 | throw new Error("Failed to fetch contributors data"); |
| 253 | } |
| 254 | const contributorsData = await contributorsResponse.json(); |
| 255 | setContributors(contributorsData); |
| 256 | |
| 257 | // Fetch repo stats |
| 258 | const repoResponse = await fetch('https://api.github.com/repos/Bitbox-Connect/Bitbox'); |
| 259 | const repoData = await repoResponse.json(); |
| 260 | setRepoStats({ |
| 261 | stars: repoData.stargazers_count, |
| 262 | forks: repoData.forks_count, |
| 263 | openIssues: repoData.open_issues_count, |
| 264 | }); |
| 265 | |
| 266 | // Fetch issues |
| 267 | const issueResponse = await fetch('https://api.github.com/repos/Bitbox-Connect/Bitbox/issues'); |
| 268 | const issueData = await issueResponse.json(); |
| 269 | setOpenIssues(issueData); |
| 270 | } catch (error) { |
| 271 | console.error("Error fetching data:", error); |
| 272 | } finally { |
| 273 | setLoading(false); |
| 274 | } |
| 275 | }; |
| 276 | |
| 277 | fetchData(); |
| 278 | }, []); |