import Icon from '../common/Icon';
import UserBox from '../users/Box';
import { mayAdminGuild } from '../../helpers/permissions';
+import { compareUsername } from '../../helpers/User';
import { useUser } from '../../hooks/user';
+const sortCrew = (crew) => {
+ const sorted = [...crew];
+ sorted.sort((a, b) => {
+ if (a.role === b.role) {
+ return compareUsername(a.user, b.user);
+ }
+ if (a.role === 'admin' && b.role !== 'admin') {
+ return -1;
+ }
+ if (b.role === 'admin' && a.role !== 'admin') {
+ return 1;
+ }
+ if (['admin', 'manager'].includes(a.role) && !['admin', 'manager'].includes(b.role)) {
+ return -1;
+ }
+ if (['admin', 'manager'].includes(b.role) && !['admin', 'manager'].includes(a.role)) {
+ return 1;
+ }
+ return compareUsername(a.user, b.user);
+ });
+ return sorted;
+};
+
const GuildCrew = ({ addCrew, changeCrewRole, guild, removeCrew }) => {
const { t } = useTranslation();
const { user } = useUser();
const mayAdmin = React.useMemo(() => mayAdminGuild(user, guild), [guild, user]);
+ const sortedCrew = React.useMemo(() => sortCrew(guild.crew || []), [guild]);
+
return <div>
{mayAdmin ?
<Form.Group controlId="crew.addCrew">
/>
</Form.Group>
: null}
- {guild.crew.map((crew) => (
+ {sortedCrew.map((crew) => (
<div className="d-flex align-items-center justify-content-between my-2" key={crew.id}>
<UserBox user={crew.user} />
{mayAdmin ?