11import { createContext , useContext , useState , useCallback , useEffect , useMemo } from 'react'
2- import { fetchOrg , fetchRepos , fetchContributors , fetchIssues , } from '../services/github'
2+ import { fetchOrg , fetchRepos , fetchContributors , fetchIssues , fetchRateLimit } from '../services/github'
33import { buildAnalyticalModel , getTopRepositories } from '../services/analytics'
44
55const Ctx = createContext ( null )
@@ -34,6 +34,7 @@ export function AppProvider({ children }) {
3434 const [ loadMsg , setLoadMsg ] = useState ( '' )
3535 const [ govLoading , setGovLoading ] = useState ( false )
3636 const [ error , setError ] = useState ( '' )
37+ const [ totalRepo , setTotalRepo ] = useState ( 0 )
3738
3839 useEffect ( ( ) => {
3940 const handler = e => {
@@ -58,7 +59,15 @@ export function AppProvider({ children }) {
5859
5960 return ( ) => clearTimeout ( timeout )
6061 } , [ rateLimit ] )
61- const [ totalRepo , setTotalRepo ] = useState ( 0 ) ;
62+
63+ const refreshRateLimit = useCallback ( async ( ) => {
64+ const rl = await fetchRateLimit ( pat )
65+ if ( rl ) {
66+ setRateLimit ( rl )
67+ return true
68+ }
69+ return false
70+ } , [ pat ] )
6271 const savePat = useCallback ( token => {
6372 setPat ( token )
6473 token ? localStorage . setItem ( 'oe_pat' , token ) : localStorage . removeItem ( 'oe_pat' )
@@ -180,7 +189,7 @@ export function AppProvider({ children }) {
180189 < Ctx . Provider value = { {
181190 pat, savePat, orgs, model, issuesData,
182191 rateLimit, loading, loadMsg, govLoading, error, totalRepo,
183- explore, runAudit, setError, staleRepoStats,
192+ explore, runAudit, setError, refreshRateLimit , staleRepoStats,
184193 } } >
185194 { children }
186195 </ Ctx . Provider >
0 commit comments