diff --git a/src/context/AppContext.jsx b/src/context/AppContext.jsx index ceab84d..52e3ffc 100644 --- a/src/context/AppContext.jsx +++ b/src/context/AppContext.jsx @@ -15,6 +15,11 @@ export function AppProvider({ children }) { const [govLoading, setGovLoading] = useState(false) const [error, setError] = useState('') + const refreshRateLimit = useCallback(async () => { + const rl = await fetchRateLimit(pat) + if (rl) setRateLimit(rl) + }, [pat]) + const savePat = useCallback(token => { setPat(token) token ? localStorage.setItem('oe_pat', token) : localStorage.removeItem('oe_pat') @@ -90,7 +95,7 @@ export function AppProvider({ children }) { {children} diff --git a/src/pages/SettingsPage.jsx b/src/pages/SettingsPage.jsx index be74441..bd49d04 100644 --- a/src/pages/SettingsPage.jsx +++ b/src/pages/SettingsPage.jsx @@ -6,11 +6,12 @@ import { cacheClear } from '../services/github' import { BsFillInfoSquareFill } from "react-icons/bs"; export default function SettingsPage() { - const { pat, savePat, rateLimit } = useApp() + const { pat, savePat, rateLimit, refreshRateLimit } = useApp() const [draft, setDraft] = useState(pat) const [show, setShow] = useState(false) const [saved, setSaved] = useState(false) const [cleared, setCleared] = useState(false) + const [isRefreshing, setIsRefreshing] = useState(false) const handleSave = () => { savePat(draft.trim()) @@ -204,7 +205,37 @@ export default function SettingsPage() {
API Quota
- +
{rateLimit ? (