99 addServerIcon ,
1010 getServer ,
1111} from '@/services/server.service' ;
12- import { useSupabaseClient } from '@supabase/auth-helpers-react' ;
12+ import { useSupabaseClient , useUser } from '@supabase/auth-helpers-react' ;
1313import { PostgrestError } from '@supabase/supabase-js' ;
1414import { Role , ServersForUser } from '@/types/dbtypes' ;
1515import { ServerPermissions } from '@/types/permissions' ;
@@ -18,7 +18,7 @@ import 'styles/TabNav.module.css';
1818import { RoleEditForm } from '@/components/forms/RoleEditForm' ;
1919import { useServerRoles , useUserServerPerms } from '@/lib/store' ;
2020import PlusIcon from '@/components/icons/PlusIcon' ;
21- import { createRole } from '@/services/roles.service' ;
21+ import { createRole , getHighestRolePositionForUser } from '@/services/roles.service' ;
2222
2323
2424const tabRootClass = 'flex flex-row' ;
@@ -39,7 +39,25 @@ export default function ServerSettingsModal({
3939 const userServerPerms = useUserServerPerms ( ) ;
4040 const supabase = useSupabaseClient ( ) ;
4141 const roles = useServerRoles ( server ?. server_id ! ) ;
42+ const user = useUser ( ) ;
43+ // HACK: Workaround for the weird state bug where the user's max role is not correct
44+ const [ maxRole , setMaxRole ] = useState < number > ( 30676 ) ;
4245
46+ useEffect ( ( ) => {
47+ async function handleAsync ( ) {
48+ const { data, error } = await getHighestRolePositionForUser ( supabase , server ! . server_id , user ?. id ! ) ;
49+ if ( error ) {
50+ console . log ( error ) ;
51+ return ;
52+ }
53+
54+ else {
55+ setMaxRole ( data ) ;
56+ }
57+ }
58+
59+ handleAsync ( ) ;
60+ } , [ server ?. server_id , supabase , user ?. id , maxRole , server ] ) ;
4361 return (
4462 < Modal
4563 modalRef = { modalRef }
@@ -83,7 +101,7 @@ export default function ServerSettingsModal({
83101 < button
84102 className = ""
85103 onClick = { async ( ) => {
86- const { data , error } = await createRole (
104+ await createRole (
87105 supabase ,
88106 server ?. server_id ! ,
89107 'New Role' ,
@@ -118,7 +136,7 @@ export default function ServerSettingsModal({
118136 value = { role . id . toString ( ) }
119137 className = { `${ tabContentClass } p-2` }
120138 >
121- < RoleEditForm role = { role } server = { server ?. servers ! } roles_length = { roles . length } />
139+ < RoleEditForm role = { role } roles_length = { roles . length } max_role_position = { maxRole } />
122140 </ Tabs . Content >
123141 ) ) }
124142 </ Tabs . Root >
0 commit comments