Files
gridpilot.gg/apps/website/lib/utilities/roster-utils.ts
2026-01-15 17:12:24 +01:00

49 lines
1.0 KiB
TypeScript

import type { TeamMemberRole } from '@/components/teams/TeamRoster';
interface TeamMember {
driver: {
id: string;
name: string;
country: string;
};
role: TeamMemberRole;
joinedAt: string;
rating: number | null;
overallRank: number | null;
}
export function sortMembers(members: TeamMember[], sortBy: string) {
function getRoleOrder(role: TeamMemberRole): number {
switch (role) {
case 'owner':
return 0;
case 'manager':
return 1;
case 'member':
return 2;
default:
return 3;
}
}
const list = [...members];
list.sort((a, b) => {
switch (sortBy) {
case 'rating': {
const ratingA = a.rating ?? 0;
const ratingB = b.rating ?? 0;
return ratingB - ratingA;
}
case 'role': {
return getRoleOrder(a.role) - getRoleOrder(b.role);
}
case 'name': {
return a.driver.name.localeCompare(b.driver.name);
}
default:
return 0;
}
});
return list;
}