From: Daniel Karbach Date: Tue, 8 Jul 2025 11:22:01 +0000 (+0200) Subject: sort discord crew members X-Git-Url: http://git.localhorst.tv/?a=commitdiff_plain;h=eb69b617dc5b90eaec5ecedf678181c31bee82f7;p=alttp.git sort discord crew members --- diff --git a/resources/js/components/discord-bot/GuildCrew.jsx b/resources/js/components/discord-bot/GuildCrew.jsx index b661306..404746e 100644 --- a/resources/js/components/discord-bot/GuildCrew.jsx +++ b/resources/js/components/discord-bot/GuildCrew.jsx @@ -7,14 +7,40 @@ import UserSelect from '../common/UserSelect'; 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
{mayAdmin ? @@ -27,7 +53,7 @@ const GuildCrew = ({ addCrew, changeCrewRole, guild, removeCrew }) => { /> : null} - {guild.crew.map((crew) => ( + {sortedCrew.map((crew) => (
{mayAdmin ?