mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-30 18:46:00 +00:00
Fix pagination error handling and album scroll leak in provider picker (#644)
- Stop pagination on fetch error (set hasMore=false on non-ok response or catch) - Set hasMore=false when loading album photos (albums load all at once) - Hide ScrollTrigger when viewing album photos to prevent timeline photo leak
This commit is contained in:
@@ -1486,8 +1486,12 @@ function ProviderPicker({ provider, userId, entries, trips, existingAssetIds, on
|
|||||||
const assets = data.assets || []
|
const assets = data.assets || []
|
||||||
setPhotos(prev => append ? [...prev, ...assets] : assets)
|
setPhotos(prev => append ? [...prev, ...assets] : assets)
|
||||||
setHasMore(!!data.hasMore)
|
setHasMore(!!data.hasMore)
|
||||||
|
} else {
|
||||||
|
setHasMore(false)
|
||||||
}
|
}
|
||||||
} catch (e: any) { if (e.name !== 'AbortError') {} }
|
} catch (e: any) {
|
||||||
|
if (e.name !== 'AbortError') setHasMore(false)
|
||||||
|
}
|
||||||
if (!signal.aborted) { setLoading(false); setLoadingMore(false) }
|
if (!signal.aborted) { setLoading(false); setLoadingMore(false) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1500,6 +1504,7 @@ function ProviderPicker({ provider, userId, entries, trips, existingAssetIds, on
|
|||||||
const signal = cancelPending()
|
const signal = cancelPending()
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
setPhotos([])
|
setPhotos([])
|
||||||
|
setHasMore(false)
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`/api/integrations/memories/${provider}/albums/${albumId}/photos`, { credentials: 'include', signal })
|
const res = await fetch(`/api/integrations/memories/${provider}/albums/${albumId}/photos`, { credentials: 'include', signal })
|
||||||
if (res.ok) setPhotos((await res.json()).assets || [])
|
if (res.ok) setPhotos((await res.json()).assets || [])
|
||||||
@@ -1773,7 +1778,7 @@ function ProviderPicker({ provider, userId, entries, trips, existingAssetIds, on
|
|||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
{/* Infinite scroll trigger */}
|
{/* Infinite scroll trigger */}
|
||||||
{hasMore && <ScrollTrigger onVisible={loadMorePhotos} loading={loadingMore} />}
|
{hasMore && !selectedAlbum && <ScrollTrigger onVisible={loadMorePhotos} loading={loadingMore} />}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user