feat: add thread preview functionality to RoomNavItem component

This commit is contained in:
2026-03-13 00:54:12 +11:00
parent ced29a6571
commit 4756bfdc57

View File

@@ -282,6 +282,20 @@ export function RoomNavItem({
const roomToParents = useAtomValue(roomToParentsAtom); const roomToParents = useAtomValue(roomToParentsAtom);
const mDirects = useAtomValue(mDirectAtom); const mDirects = useAtomValue(mDirectAtom);
// Get first participated thread for preview
const firstThreadPreview = (() => {
const threads = room.getThreads();
const participatedThreads = threads.filter((thread) => thread.hasCurrentUserParticipated);
if (participatedThreads.length === 0) return undefined;
const firstThread = participatedThreads[0];
const rootEvent = firstThread.rootEvent;
if (!rootEvent) return undefined;
const rootBody = rootEvent.getContent()?.body ?? '';
return rootBody;
})();
// Get parent space for DMs // Get parent space for DMs
const parentSpaceInfo = (() => { const parentSpaceInfo = (() => {
if (!direct || !mDirects.has(room.roomId)) return undefined; if (!direct || !mDirects.has(room.roomId)) return undefined;
@@ -360,10 +374,15 @@ export function RoomNavItem({
/> />
)} )}
</Avatar> </Avatar>
<Box as="span" grow="Yes"> <Box as="span" grow="Yes" direction="Column" style={{ overflow: 'hidden', minWidth: 0 }}>
<Text priority={unread ? '500' : '300'} as="span" size="Inherit" truncate> <Text priority={unread ? '500' : '300'} as="span" size="Inherit" truncate>
{room.name} {room.name}
</Text> </Text>
{firstThreadPreview && (
<Text as="span" size="T200" priority="300" truncate>
{firstThreadPreview}
</Text>
)}
</Box> </Box>
{!optionsVisible && !unread && !selected && typingMember.length > 0 && ( {!optionsVisible && !unread && !selected && typingMember.length > 0 && (
<Badge size="300" variant="Secondary" fill="Soft" radii="Pill" outlined> <Badge size="300" variant="Secondary" fill="Soft" radii="Pill" outlined>