Compare commits

...

2 Commits

Author SHA1 Message Date
e853bca9c9 Merge pull request 'fix: rate limiter was blocking all /api/cats reads after 10 requests' (#3) from claude/sleepy-shirley-adfe57 into main
Reviewed-on: #3
2026-06-26 09:46:42 +03:00
HeagBoKaT
852e0f5f5b fix: rate limiter was blocking all /api/cats reads after 10 requests
uploadLimiter now only applies to POST /api/cats (uploads), not GET
reads — previously users were getting 429 after ~10 page navigations.
Also remove duplicate file input in ProfilePage and cancel stale rAF
on route transition cleanup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 09:45:35 +03:00
3 changed files with 7 additions and 3 deletions

View File

@@ -33,10 +33,11 @@ function AnimatedRoutes() {
if (el) {
el.classList.remove('page-enter-active');
el.classList.add('page-enter');
requestAnimationFrame(() => {
const rafId = requestAnimationFrame(() => {
el.classList.remove('page-enter');
el.classList.add('page-enter-active');
});
return () => cancelAnimationFrame(rafId);
}
}, [location.pathname]);

View File

@@ -268,7 +268,6 @@ export default function ProfilePage() {
<div className="divider mb-4" />
<div>
<input type="file" ref={fileInputRef} onChange={onFileChange} accept="image/*" className="hidden" />
<Button
variant="outline"
onClick={() => fileInputRef.current?.click()}

View File

@@ -54,7 +54,11 @@ async function main() {
standardHeaders: true,
legacyHeaders: false,
});
app.use('/api/cats', uploadLimiter);
// Rate-limit only cat uploads (POST), not reads
app.use('/api/cats', (req, _res, next) => {
if (req.method !== 'POST') return next();
return uploadLimiter(req, _res, next);
});
app.use('/uploads', express.static(path.join(__dirname, '..', 'uploads')));