Skip to content

Commit 07e1273

Browse files
committed
change server expand logic
1 parent fc77617 commit 07e1273

3 files changed

Lines changed: 42 additions & 24 deletions

File tree

components/home/Server.tsx

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import VerticalSettingsIcon from '@/components/icons/VerticalSettingsIcon';
22
import 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';
410
import { useOnlinePresenceRef } from '@/context/ChatCtx';
511
import { getChannelsInServer } from '@/services/channels.service';
612
import 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
);

components/home/ServerList.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,16 @@ export default function ServerList() {
8080
<span
8181
key={server.server_id}
8282
onClick={() => {
83-
return expanded == server.server_id
84-
? setExpanded(0)
85-
: setExpanded(server.server_id);
83+
return expanded !== server.server_id
84+
? setExpanded(server.server_id)
85+
: '';
8686
}}
8787
>
8888
<Server
8989
server={server.servers}
9090
expanded={expanded}
9191
isLast={idx == serverList.length - 1}
92+
setExpanded={setExpanded}
9293
/>
9394
</span>
9495
);

components/icons/VerticalSettingsIcon.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
1-
export default function VerticalSettingsIcon() {
1+
export default function VerticalSettingsIcon({
2+
hovered = false,
3+
}: {
4+
hovered?: boolean;
5+
}) {
26
return (
3-
<svg
4-
xmlns="http://www.w3.org/2000/svg"
5-
fill="none"
6-
viewBox="0 0 24 24"
7-
strokeWidth={2}
8-
stroke="currentColor"
7+
<svg
8+
xmlns="http://www.w3.org/2000/svg"
9+
fill="none"
10+
viewBox="0 0 24 24"
11+
strokeWidth={2}
12+
stroke={`${hovered ? '#46575e' : 'currentColor'}`}
913
className="w-5 h-5"
1014
>
11-
<path
12-
strokeLinecap="round"
13-
strokeLinejoin="round"
14-
d="M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z"
15+
<path
16+
strokeLinecap="round"
17+
strokeLinejoin="round"
18+
d="M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z"
1519
/>
1620
</svg>
1721
);

0 commit comments

Comments
 (0)