fix(bug,perf): poll first-vote race, stale timeline ref, lazy GifPicker/EmojiBoard, focusItem timer leak, RoomNavItem memo

BUG-18: clearTimeout cleanup in focusItem useLayoutEffect prevents leaked timers
BUG-24: Room timeline listener catches first poll vote before Relations object exists
BUG-25: Use timelineRef.current in handleOpenEvent to prevent stale index on rapid navigation
Perf-6: React.lazy + Suspense for GifPicker and EmojiBoard (initial bundle -114 kB)
Perf-7: React.memo on RoomNavItem to prevent re-renders on unrelated state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lotus Bot
2026-05-20 21:39:35 -04:00
parent 71791e46f6
commit ee7eabd2c4
4 changed files with 32 additions and 10 deletions
+2 -1
View File
@@ -245,7 +245,7 @@ type RoomNavItemProps = {
showAvatar?: boolean;
direct?: boolean;
};
export function RoomNavItem({
function RoomNavItem_({
room,
selected,
showAvatar,
@@ -440,3 +440,4 @@ export function RoomNavItem({
</NavItem>
);
}
export const RoomNavItem = React.memo(RoomNavItem_);