// Metro module 16637 (f16638). import { useMemo } from "react"; import { isEveryoneRole } from "../../records/GuildRoleRecord"; import GuildRoleStore from "../../stores/GuildRoleStore"; import PermissionStore from "../../stores/PermissionStore"; import UserStore from "../../stores/UserStore"; import { Permissions } from "../../Constants"; import { useStateFromStoresObject } from "../../_bundle/Module589"; import { getHighestRole, isRoleHigher } from "../../utils/PermissionUtils"; export default function useInviteAssignableRoles(a0) { let sortedRoles, currentUser, canManageRoles; const stateFromStoresObject = useStateFromStoresObject([GuildRoleStore, UserStore, PermissionStore], () => ({ sortedRoles: a0 != null ? GuildRoleStore.getSortedRoles(a0.id) : [], currentUser: UserStore.getCurrentUser(), canManageRoles: a0 != null && PermissionStore.can(Permissions.MANAGE_ROLES, a0) }), [a0]); sortedRoles = stateFromStoresObject.sortedRoles; currentUser = stateFromStoresObject.currentUser; canManageRoles = stateFromStoresObject.canManageRoles; return useMemo(() => { if (a0 != null && currentUser != null && canManageRoles) { const highestRole = getHighestRole(a0, currentUser.id); return sortedRoles.filter((sortedRole) => { const isEveryoneRole2 = isEveryoneRole(sortedRole); let r1 = !isEveryoneRole2; if (!isEveryoneRole2) { const managed = sortedRole.managed; r1 = managed ? !managed : sortedRole.tags?.guild_connections === void 0 && !!isRoleHigher(a0, currentUser.id, highestRole, sortedRole); } return r1; }); } return []; }, [a0, currentUser, canManageRoles, sortedRoles]); };