Skip to content

Commit b4127d0

Browse files
committed
fix(settings): handle edge cases for session timing and slot count
- Add session?.access_token to useEffect deps (re-runs when auth loads) - Set reposLoading=false on early return (prevents stuck loading state) - Set reposLoading=true at start of fetch (consistent state) - Clamp available slots to 0 (prevents negative display if repos > MAX)
1 parent 39b7c43 commit b4127d0

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

frontend/src/pages/SettingsPage.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,14 @@ export function SettingsPage() {
4343
useEffect(() => {
4444
checkStatus()
4545
fetchRepos()
46-
}, [checkStatus])
46+
}, [checkStatus, session?.access_token])
4747

4848
const fetchRepos = async () => {
49-
if (!session?.access_token) return
49+
if (!session?.access_token) {
50+
setReposLoading(false)
51+
return
52+
}
53+
setReposLoading(true)
5054
try {
5155
const response = await fetch(`${API_URL}/repos`, {
5256
headers: { Authorization: `Bearer ${session.access_token}` },
@@ -131,6 +135,7 @@ export function SettingsPage() {
131135
}
132136

133137
const isDeleteEnabled = deleteConfirmation === DELETE_CONFIRMATION_TEXT
138+
const availableSlots = Math.max(0, MAX_REPOS - repos.length)
134139

135140
return (
136141
<div className="max-w-2xl space-y-6">
@@ -246,7 +251,7 @@ export function SettingsPage() {
246251
<span className="text-lg font-normal text-muted-foreground"> / {MAX_REPOS}</span>
247252
</p>
248253
<p className="text-sm text-muted-foreground">
249-
{MAX_REPOS - repos.length} slot{MAX_REPOS - repos.length !== 1 ? 's' : ''} available
254+
{availableSlots} slot{availableSlots !== 1 ? 's' : ''} available
250255
</p>
251256
</>
252257
)}

0 commit comments

Comments
 (0)