mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-10 05:06:15 -05:00
Ignore teams from leaderboard
This commit is contained in:
@@ -5,6 +5,7 @@ import { COMMON_USER_FIELDS } from "~/utils/kysely.server";
|
||||
import { ordinalToSp } from "../mmr/mmr-utils";
|
||||
import {
|
||||
DEFAULT_LEADERBOARD_MAX_SIZE,
|
||||
IGNORED_TEAMS,
|
||||
MATCHES_COUNT_NEEDED_FOR_LEADERBOARD,
|
||||
} from "./leaderboards-constants";
|
||||
|
||||
@@ -91,7 +92,11 @@ export async function teamLeaderboardBySeason({
|
||||
? filterOneEntryPerUser(entries)
|
||||
: entries;
|
||||
const withSharedTeam = resolveSharedTeam(oneEntryPerUser);
|
||||
const withPower = addPowers(withSharedTeam);
|
||||
const withIgnoredHandled = onlyOneEntryPerUser
|
||||
? ignoreTeams({ season, entries: withSharedTeam })
|
||||
: withSharedTeam;
|
||||
const withPower = addPowers(withIgnoredHandled);
|
||||
|
||||
return addPlacementRank(withPower);
|
||||
}
|
||||
|
||||
@@ -123,3 +128,24 @@ function resolveSharedTeam(entries: ReturnType<typeof filterOneEntryPerUser>) {
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function ignoreTeams({
|
||||
season,
|
||||
entries,
|
||||
}: { season: number; entries: ReturnType<typeof resolveSharedTeam> }) {
|
||||
const ignoredTeams = IGNORED_TEAMS.get(season);
|
||||
|
||||
if (!ignoredTeams) return entries;
|
||||
|
||||
return entries.filter((entry) => {
|
||||
if (
|
||||
ignoredTeams.some((team) =>
|
||||
team.every((userId) => entry.members.some((m) => m.id === userId)),
|
||||
)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -20,3 +20,10 @@ export const LEADERBOARD_TYPES = [
|
||||
(id) => `XP-WEAPON-${id}`,
|
||||
) as `XP-WEAPON-${(typeof mainWeaponIds)[number]}`[]),
|
||||
] as const;
|
||||
|
||||
/** Teams that are ignored from the main leaderboard, because e.g. they want to qualify with another group.
|
||||
* Map key is season.
|
||||
*/
|
||||
export const IGNORED_TEAMS: Map<number, number[][]> = new Map().set(5, [
|
||||
[9403, 13562, 15916, 38062], // Snooze
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user