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 ? (