Browse Source

fix: server side render trigger GitHub api rate limit (#685)

Joel 1 year ago
parent
commit
6a564e2d5c
1 changed files with 21 additions and 11 deletions
  1. 21 11
      web/app/components/header/github-star/index.tsx

+ 21 - 11
web/app/components/header/github-star/index.tsx

@@ -1,3 +1,5 @@
+'use client'
+import React, { useEffect, useState } from 'react'
 import { Github } from '@/app/components/base/icons/src/public/common'
 import type { GithubRepo } from '@/models/common'
 
@@ -10,18 +12,26 @@ const getStar = async () => {
   return res.json()
 }
 
-const GithubStar = async () => {
-  let githubRepo: GithubRepo = { stargazers_count: 0 }
-
-  if (process.env.NODE_ENV === 'development')
-    return null
-
-  try {
-    githubRepo = await getStar()
-  }
-  catch (e) {
+const GithubStar = () => {
+  const [githubRepo, setGithubRepo] = useState<GithubRepo>({ stargazers_count: 6000 })
+  const [isFetched, setIsFetched] = useState(false)
+  useEffect(() => {
+    (async () => {
+      try {
+        if (process.env.NODE_ENV === 'development')
+          return
+
+        await setGithubRepo(await getStar())
+        setIsFetched(true)
+      }
+      catch (e) {
+
+      }
+    })()
+  }, [])
+
+  if (!isFetched)
     return null
-  }
 
   return (
     <a