36 lines
1.7 KiB
TypeScript
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]);
|
|
};
|