@@ -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