Files
discord-decomp/modules/instant_invite/useInviteAssignableRoles.tsx
T
2026-11-01 12:12:55 +02:00

36 lines
1.7 KiB
TypeScript

// 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]);
};