perf: optimize DB queries, SSE polling, and client rendering
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m45s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m45s
- Fix resolveCollaborator N+1: replace full User table scan with findFirst - Fix getAllUsersWithStats N+1: use groupBy instead of per-user count queries - Cache getTeamMemberIdsForAdminTeams and isAdminOfUser with React.cache - Increase SSE poll interval from 1s to 2s across all 5 subscribe routes - Add cleanupOldEvents method to session-share-events for event table TTL - Add React.memo to all card components (Swot, Motivator, Weather, WeeklyCheckIn, YearReview) - Fix WeatherCard useEffect+setState lint error with idiomatic prop sync pattern - Add optimizePackageImports for DnD libs and poweredByHeader:false in next.config - Add inline theme script in layout.tsx to prevent dark mode FOUC - Remove unused Next.js template SVGs from public/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { forwardRef, useState, useTransition } from 'react';
|
||||
import { forwardRef, memo, useState, useTransition } from 'react';
|
||||
import type { SwotItem, SwotCategory } from '@prisma/client';
|
||||
import { updateSwotItem, deleteSwotItem, duplicateSwotItem } from '@/actions/swot';
|
||||
|
||||
@@ -21,7 +21,7 @@ const categoryStyles: Record<SwotCategory, { ring: string; text: string }> = {
|
||||
THREAT: { ring: 'ring-threat', text: 'text-threat' },
|
||||
};
|
||||
|
||||
export const SwotCard = forwardRef<HTMLDivElement, SwotCardProps>(
|
||||
export const SwotCard = memo(forwardRef<HTMLDivElement, SwotCardProps>(
|
||||
(
|
||||
{ item, sessionId, isSelected, isHighlighted, isDragging, linkMode, onSelect, ...props },
|
||||
ref
|
||||
@@ -196,6 +196,5 @@ export const SwotCard = forwardRef<HTMLDivElement, SwotCardProps>(
|
||||
</div>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
));
|
||||
SwotCard.displayName = 'SwotCard';
|
||||
|
||||
Reference in New Issue
Block a user