Skip to content

Commit 31f0b0c

Browse files
committed
fix issue where server settings didn't open
+ show perm based options
1 parent 64bf8a9 commit 31f0b0c

1 file changed

Lines changed: 38 additions & 34 deletions

File tree

components/home/Server.tsx

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,14 @@ export default function Server({
6060
handleAsync();
6161
}, [server, supabase]);
6262

63-
console.log((serverPermissions & 1) === 0 ? 'Not owner' : 'Owner' );
63+
const showServerSettingsOption = (
64+
(serverPermissions & ServerPermissions.MANAGE_INVITES) > 0
65+
|| (serverPermissions & ServerPermissions.MANAGE_ROLES) > 0
66+
|| (serverPermissions & ServerPermissions.MANAGE_USERS) > 0
67+
|| (serverPermissions & ServerPermissions.MANAGE_SERVER) > 0
68+
);
69+
70+
const showAddChannelOption = (serverPermissions & ServerPermissions.MANAGE_CHANNELS) > 0;
6471

6572
if (expand) {
6673
return (
@@ -91,14 +98,7 @@ export default function Server({
9198
</div>
9299
</div>
93100
<DropdownMenu.Root>
94-
<DropdownMenu.Trigger
95-
asChild
96-
disabled={
97-
!((serverPermissions & ServerPermissions.MANAGE_MESSAGES) > 0 ||
98-
(serverPermissions & ServerPermissions.OWNER) > 0 ||
99-
(serverPermissions & ServerPermissions.MANAGE_SERVER) > 0)
100-
}
101-
>
101+
<DropdownMenu.Trigger asChild>
102102
<div
103103
onMouseEnter={() => setIsSettingsHovered(true)}
104104
onMouseLeave={() => setIsSettingsHovered(false)}
@@ -109,37 +109,41 @@ export default function Server({
109109
</DropdownMenu.Trigger>
110110
<DropdownMenu.Portal>
111111
<DropdownMenu.Content className="ContextMenuContent" side='right'>
112-
<DropdownMenu.Item asChild
113-
className="flex justify-center items-center hover:text-grey-300 cursor-pointer"
114-
onClick={() => {
115-
setShowAddChannelModal(true);
116-
}}
117-
>
118-
<div className="flex flex-row w-full">
119-
<PlusIcon width={5} height={5}/>
120-
<span className="ml-2 w-full">New channel</span>
121-
</div>
122-
</DropdownMenu.Item>
123-
<DropdownMenu.Item asChild
124-
className="flex justify-center items-center hover:text-grey-300 cursor-pointer"
125-
onClick={() => {
126-
setShowServerSettingsModal(true);
127-
}}
128-
hidden={(serverPermissions & ServerPermissions.MANAGE_SERVER) === 0}
129-
>
130-
<div className="flex flex-row w-full">
131-
<GearIcon width={5} height={5} />
132-
<span className="ml-2 w-full">Server Settings</span>
133-
</div>
134-
</DropdownMenu.Item>
135-
<DropdownMenu.Separator className="ContextMenuSeparator" />
112+
{ showAddChannelOption && (
113+
<DropdownMenu.Item asChild
114+
className="flex justify-center items-center hover:text-grey-300 cursor-pointer"
115+
onClick={() => {
116+
setShowAddChannelModal(true);
117+
}}
118+
>
119+
<div className="flex flex-row w-full">
120+
<PlusIcon width={5} height={5}/>
121+
<span className="ml-2 w-full">New channel</span>
122+
</div>
123+
</DropdownMenu.Item>
124+
)}
125+
{showServerSettingsOption && (
126+
<DropdownMenu.Item asChild
127+
className="flex justify-center items-center hover:text-grey-300 cursor-pointer"
128+
onClick={() => {
129+
setShowServerSettingsModal(true);
130+
}}
131+
>
132+
<div className="flex flex-row w-full">
133+
<GearIcon width={5} height={5} />
134+
<span className="ml-2 w-full">Server Settings</span>
135+
</div>
136+
</DropdownMenu.Item>
137+
)}
138+
139+
{(showAddChannelOption || showServerSettingsOption) && <DropdownMenu.Separator className="ContextMenuSeparator" />}
136140
{(serverPermissions & 1) === 0 && (
137141
<DropdownMenu.Item asChild
138142
className="flex justify-center items-center text-red-500 hover:text-grey-300 cursor-pointer"
139143
onClick={async () => {
144+
// TODO: Add confirmation modal
140145
await leaveServer(supabase, user!.id, server.id);
141146
}}
142-
hidden={(serverPermissions & 1) === 1}
143147
>
144148
<div className="flex flex-row w-full">
145149
<LeaveIcon className='!w-5 !h-5' />

0 commit comments

Comments
 (0)