11import VerticalSettingsIcon from '@/components/icons/VerticalSettingsIcon' ;
22import ChannelMessageIcon from '../icons/ChannelMessageIcon' ;
3- import { SyntheticEvent , useEffect , useState } from 'react' ;
3+ import {
4+ Dispatch ,
5+ SetStateAction ,
6+ SyntheticEvent ,
7+ useEffect ,
8+ useState ,
9+ } from 'react' ;
410import { useOnlinePresenceRef } from '@/context/ChatCtx' ;
511import { getChannelsInServer } from '@/services/channels.service' ;
612import ServersIcon from '../icons/ServersIcon' ;
@@ -19,10 +25,12 @@ export default function Server({
1925 server,
2026 expanded,
2127 isLast = false ,
28+ setExpanded,
2229} : {
2330 server : ServerType ;
2431 expanded : number ;
2532 isLast ?: boolean ;
33+ setExpanded : Dispatch < SetStateAction < number > > ;
2634} ) {
2735 const expand = expanded == server . id ;
2836 const supabase = useSupabaseClient ( ) ;
@@ -32,6 +40,8 @@ export default function Server({
3240
3341 const [ isChannelHovered , setIsChannelHovered ] = useState ( false ) ;
3442 const [ isServerHovered , setIsServerHovered ] = useState ( false ) ;
43+ const [ isSettingsHovered , setIsSettingsHovered ] = useState ( false ) ;
44+ const [ isSettingsClicked , setIsSettingsClicked ] = useState ( false ) ;
3545
3646 const setChannel = useSetChannel ( ) ;
3747
@@ -75,9 +85,12 @@ export default function Server({
7585 if ( expand ) {
7686 return (
7787 < div className = "relative " >
78- < div className = "border-b-2 hover:cursor-pointer border-grey-700 py-2 px-3 flex bg-grey-600 justify-between rounded-xl items-center relative z-10" >
88+ < div className = "border-b-2 border-grey-700 py-2 px-3 flex bg-grey-600 justify-between rounded-xl items-center relative z-10" >
7989 < div className = "flex items-center" >
80- < div className = "bg-grey-900 p-[6px] rounded-xl" >
90+ < div
91+ className = "bg-grey-900 p-[6px] rounded-xl hover:cursor-pointer"
92+ onClick = { ( ) => setExpanded ( 0 ) }
93+ >
8194 < ServersIcon server = { server } hovered = { false } />
8295 </ div >
8396 < div className = "ml-3" >
@@ -121,8 +134,11 @@ export default function Server({
121134 </ div >
122135 </ div >
123136 </ div >
124- < div >
125- < VerticalSettingsIcon />
137+ < div
138+ onMouseEnter = { ( ) => setIsSettingsHovered ( true ) }
139+ onMouseLeave = { ( ) => setIsSettingsHovered ( false ) }
140+ >
141+ < VerticalSettingsIcon hovered = { isSettingsHovered } />
126142 </ div >
127143 </ div >
128144 < div className = "channels bg-grey-700 rounded-lg relative -top-3 py-4 px-7 " >
@@ -135,8 +151,7 @@ export default function Server({
135151 if ( channel . is_media ) {
136152 // Entrypoint for media channel
137153 return ;
138- }
139- else {
154+ } else {
140155 joinTextChannel ( e , channel ) ;
141156 }
142157 } }
@@ -231,9 +246,7 @@ export default function Server({
231246 </ div >
232247 </ div >
233248 </ div >
234- < div >
235- < VerticalSettingsIcon />
236- </ div >
249+ < div > </ div >
237250 </ div >
238251 </ div >
239252 ) ;
0 commit comments