Skip to content

Commit de09df9

Browse files
committed
refactor: optimize LongText and NewChat components by removing unnecessary useEffect hooks
1 parent 99cbef7 commit de09df9

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

src/components/long-text.tsx

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useRef, useState } from 'react'
1+
import { useRef, useState } from 'react'
22
import { cn } from '@/lib/utils'
33
import {
44
Popover,
@@ -26,18 +26,17 @@ export function LongText({
2626
const ref = useRef<HTMLDivElement>(null)
2727
const [isOverflown, setIsOverflown] = useState(false)
2828

29-
useEffect(() => {
30-
if (checkOverflow(ref.current)) {
31-
setIsOverflown(true)
32-
return
29+
// Use ref callback to check overflow when element is mounted
30+
const refCallback = (node: HTMLDivElement | null) => {
31+
ref.current = node
32+
if (node && checkOverflow(node)) {
33+
queueMicrotask(() => setIsOverflown(true))
3334
}
34-
35-
setIsOverflown(false)
36-
}, [])
35+
}
3736

3837
if (!isOverflown)
3938
return (
40-
<div ref={ref} className={cn('truncate', className)}>
39+
<div ref={refCallback} className={cn('truncate', className)}>
4140
{children}
4241
</div>
4342
)
@@ -48,7 +47,7 @@ export function LongText({
4847
<TooltipProvider delayDuration={0}>
4948
<Tooltip>
5049
<TooltipTrigger asChild>
51-
<div ref={ref} className={cn('truncate', className)}>
50+
<div ref={refCallback} className={cn('truncate', className)}>
5251
{children}
5352
</div>
5453
</TooltipTrigger>
@@ -61,7 +60,7 @@ export function LongText({
6160
<div className='sm:hidden'>
6261
<Popover>
6362
<PopoverTrigger asChild>
64-
<div ref={ref} className={cn('truncate', className)}>
63+
<div ref={refCallback} className={cn('truncate', className)}>
6564
{children}
6665
</div>
6766
</PopoverTrigger>

src/features/chats/components/new-chat.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useState } from 'react'
1+
import { useState } from 'react'
22
import { Check, X } from 'lucide-react'
33
import { showSubmittedData } from '@/lib/show-submitted-data'
44
import { Badge } from '@/components/ui/badge'
@@ -41,14 +41,16 @@ export function NewChat({ users, onOpenChange, open }: NewChatProps) {
4141
setSelectedUsers(selectedUsers.filter((user) => user.id !== userId))
4242
}
4343

44-
useEffect(() => {
45-
if (!open) {
44+
const handleOpenChange = (newOpen: boolean) => {
45+
onOpenChange(newOpen)
46+
// Reset selected users when dialog closes
47+
if (!newOpen) {
4648
setSelectedUsers([])
4749
}
48-
}, [open])
50+
}
4951

5052
return (
51-
<Dialog open={open} onOpenChange={onOpenChange}>
53+
<Dialog open={open} onOpenChange={handleOpenChange}>
5254
<DialogContent className='sm:max-w-[600px]'>
5355
<DialogHeader>
5456
<DialogTitle>New message</DialogTitle>

0 commit comments

Comments
 (0)