Skip to content

Commit 79f49fe

Browse files
committed
migrate to dropdownMenu + rm ServerSettingsTooltip
1 parent 70c5534 commit 79f49fe

3 files changed

Lines changed: 54 additions & 81 deletions

File tree

components/Tooltips/ServerSettingsTooltip.tsx

Lines changed: 0 additions & 62 deletions
This file was deleted.

components/home/Server.tsx

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@ import {
99
} from 'react';
1010
import { getChannelsInServer } from '@/services/channels.service';
1111
import ServersIcon from '../icons/ServersIcon';
12-
import { useSupabaseClient } from '@supabase/auth-helpers-react';
12+
import { useSupabaseClient, useUser } from '@supabase/auth-helpers-react';
1313
import styles from '@/styles/Servers.module.css';
1414
import { Channel, Server as ServerType } from '@/types/dbtypes';
1515
import { ServerMemberStats } from './ServerMemberStats';
1616
import { OverflowMarquee } from './OverflowMarquee';
17-
import { useChannel, useSetChannel } from '@/lib/store';
17+
import { useChannel, useServerUserProfilePermissions, useSetChannel } from '@/lib/store';
1818
import { ChannelMediaIcon } from '../icons/ChannelMediaIcon';
19-
import { Tooltip } from 'react-tooltip';
2019
import ChannelName from './ChannelName';
2120
import ServerSettingsModal from '@/components/home/modals/ServerSettingsModal';
22-
import { ServerSettingsTooltip } from '@/components/Tooltips/ServerSettingsTooltip';
2321
import AddChannelModal from '@/components/home/modals/AddChannelModal';
22+
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
23+
import { ServerPermissions } from '@/types/permissions';
24+
import PlusIcon from '@/components/icons/PlusIcon';
25+
import GearIcon from '@/components/icons/GearIcon';
2426

2527
export default function Server({
2628
server,
@@ -43,6 +45,8 @@ export default function Server({
4345
const [showServerSettingsModal, setShowServerSettingsModal] = useState(false);
4446
const [showAddChannelModal, setShowAddChannelModal] = useState(false);
4547

48+
const user = useUser();
49+
const serverPermissions = useServerUserProfilePermissions(server.id, user?.id!);
4650
useEffect(() => {
4751
const handleAsync = async () => {
4852
if (server) {
@@ -71,11 +75,6 @@ export default function Server({
7175
setShowModal={setShowServerSettingsModal}
7276
server={server}
7377
/>
74-
<ServerSettingsTooltip
75-
server_id={server.id}
76-
setShowAddChannelModal={setShowAddChannelModal}
77-
setShowServerSettingsModal={setShowServerSettingsModal}
78-
/>
7978
<AddChannelModal
8079
showModal={showAddChannelModal}
8180
setShowModal={setShowAddChannelModal}
@@ -96,15 +95,51 @@ export default function Server({
9695
<ServerMemberStats server={server} />
9796
</div>
9897
</div>
99-
<div
100-
onMouseEnter={() => setIsSettingsHovered(true)}
101-
onMouseLeave={() => setIsSettingsHovered(false)}
102-
className="hover:cursor-pointer"
103-
data-tooltip-id="serverSettings"
104-
data-tooltip-place="right"
105-
>
106-
<VerticalSettingsIcon hovered={isSettingsHovered} />
107-
</div>
98+
<DropdownMenu.Root>
99+
<DropdownMenu.Trigger
100+
asChild
101+
disabled={
102+
!((serverPermissions & ServerPermissions.MANAGE_MESSAGES) > 0 ||
103+
(serverPermissions & ServerPermissions.OWNER) > 0 ||
104+
(serverPermissions & ServerPermissions.MANAGE_SERVER) > 0)
105+
}
106+
>
107+
<div
108+
onMouseEnter={() => setIsSettingsHovered(true)}
109+
onMouseLeave={() => setIsSettingsHovered(false)}
110+
className="hover:cursor-pointer"
111+
>
112+
<VerticalSettingsIcon hovered={isSettingsHovered} />
113+
</div>
114+
</DropdownMenu.Trigger>
115+
<DropdownMenu.Portal>
116+
<DropdownMenu.Content className="ContextMenuContent" side='right'>
117+
<DropdownMenu.Item asChild
118+
className="flex justify-center items-center hover:text-grey-300 cursor-pointer"
119+
onClick={() => {
120+
setShowAddChannelModal(true);
121+
}}
122+
>
123+
<div className="flex flex-row w-full">
124+
<PlusIcon width={5} height={5}/>
125+
<span className="ml-2 w-full">New channel</span>
126+
</div>
127+
</DropdownMenu.Item>
128+
<DropdownMenu.Item asChild
129+
className="flex justify-center items-center hover:text-grey-300 cursor-pointer"
130+
onClick={() => {
131+
setShowServerSettingsModal(true);
132+
}}
133+
hidden={(serverPermissions & ServerPermissions.MANAGE_SERVER) === 0}
134+
>
135+
<div className="flex flex-row w-full">
136+
<GearIcon width={5} height={5} />
137+
<span className="ml-2 w-full">Server Settings</span>
138+
</div>
139+
</DropdownMenu.Item>
140+
</DropdownMenu.Content>
141+
</DropdownMenu.Portal>
142+
</DropdownMenu.Root>
108143
</div>
109144
<div className="channels bg-grey-700 rounded-lg relative -top-3 py-4 px-7 ">
110145
{channels.map((channel: Channel, idx: number) => (

styles/ContextMenu.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
overflow: hidden;
1919
padding: 5px;
2020
box-shadow: 0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2);
21-
z-index: 20;
21+
z-index: 100;
2222
border-color: rgb(71 85 105);
2323
border-width: 1px;
2424
}

0 commit comments

Comments
 (0)