From fce2d7c3f0c86c2cf03298cac1ca444898852a60 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Sun, 22 Mar 2026 03:16:40 +0100 Subject: [PATCH] feat: apply delayed loading to message list skeletons --- packages/web/src/components/chat/MessageList.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/web/src/components/chat/MessageList.tsx b/packages/web/src/components/chat/MessageList.tsx index 4cb263b6..dbe0e590 100644 --- a/packages/web/src/components/chat/MessageList.tsx +++ b/packages/web/src/components/chat/MessageList.tsx @@ -7,6 +7,7 @@ import { useSocialStore } from '../../stores/socialStore'; import { Avatar } from '../ui/Avatar'; import { hasPermissionBit, PermissionBits } from '../../utils/permissions'; import { isSelf } from '../../utils/identity'; +import { useDelayedLoading } from '../../hooks/useDelayedLoading'; import type { MessageWithUser } from '@backspace/shared'; const EMPTY_MESSAGES: MessageWithUser[] = []; @@ -55,6 +56,8 @@ export function MessageList({ channelId, jumpToMessageId, onJumpComplete }: Mess const [isNearBottom, setIsNearBottom] = useState(true); const isNearBottomRef = useRef(true); const [isLoadingMore, setIsLoadingMore] = useState(false); + const showInitialSkeleton = useDelayedLoading(isLoading && messages.length === 0); + const showPaginationSkeleton = useDelayedLoading(isLoadingMore); const prevMessagesLength = useRef(0); const prevChannelIdRef = useRef(channelId); const visibleMsgIdRef = useRef(null); @@ -258,7 +261,7 @@ export function MessageList({ channelId, jumpToMessageId, onJumpComplete }: Mess ); } - if (isLoading && messages.length === 0) { + if (showInitialSkeleton) { return (
{Array.from({ length: 7 }, (_, i) => ( @@ -284,7 +287,7 @@ export function MessageList({ channelId, jumpToMessageId, onJumpComplete }: Mess className="h-full overflow-y-auto overflow-x-hidden no-scrollbar" onScroll={handleScroll} > - {isLoadingMore && ( + {showPaginationSkeleton && (
{Array.from({ length: 3 }, (_, i) => (