mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-24 15:08:44 -05:00
* Tables * Clocks * Maplist preference selector * Fix SSR * Nav icon * RankedOrScrim * Map pool * Create group * Redirect logic * Persist map pool * Advance from preparing page * Rename query * Fix merge * Fix migration order * Seed groups * Find looking groups SQL * Renders something * More UI work * Back to 30min * Likes/dislikes * Always return own group * Fix like order * 3 tc/rm/cb -> 2 * Show only 3 weapons * Pass group size * Handle both liked and liked by same group * Fix SQL * Group preference frontend work * Morphing * Styling * Don't show group controls if not manager * Give/remove manager * Leave group * Leave with confirm * Delete likes when morphing groups * Clocks consistency * Remove bad invariant * Persist settings to local storage * Fix initial value flashing * Fix never resolving loading indicator * REFRESH_GROUP * Flip animations * Tweaks * Auto refresh logic * Groups of 4 seed * Reduce throwing * Load full groups initial * Create match * Match UI initial * Score reporter initial * Push footer down on match page * Score reporter knows when set ended * Score reporting untested * Show score after report * Align better * Look again with same group functionality * More migrations * Team on match page * Show confirmer before reporting score * Report weapons * Report weapos again by admin + skill changing * Handle no tiebreaker given to MapPool * Remove unranked * Remove support for "team id skill" * no-wrap -> nowrap * Preparing page work * Use common GroupCard component * Add some metas * MemberAdder in looking page * Fix GroupCard actions * Fix SZ only map list including other modes * Add season info * Prompt login * Joining team * Manage group on preparing page * Manage group on preparing page * Seed past matches * Add to seed * No map list preference when full group + fix expiry * Fix skill matchesCount calculation * Tiers initial work * Some progress on tiers * Tiering logic * MMR in group cards * Name to challenge * Team MMR * Big team rank icons * Adjust todos * Match score report with confirm * Allow regular members to report score * Handle reporting weapons edge cases * Add tier images * Improve GroupCard spacing * Refactor looking page * Looking mobile UI * Calculate skill only for current season * Divide groups visually when reporting weapons * Fix match page weapons sorting * Add cache to user skills+tier calculation * Admin report match score * Initial leaderboard * Cached leaderboard * Weapon category lb's * Populate SkillTeamUser in SendouQ * Team leaderboard filtered down * Add TODOs * Seasons initlal * Season weapons initial * Weapons stylized * Show rest weapons as + * Hide peak if same as current * Load matches SQL initial * Season matches UI initial * Take user id in account * Add weapons * Paginated matches * Fix pages count logic * Scroll top on data change * Day headers for matches * Link from user page to user seasons page * Summarize maps + ui initial * Map stats * Player info tabs * MMR chart * Chart adjustments * Handle basing team MMR on player MMR * Set initial MMR * Add info about discord to match page * Season support to tournaments * Get tournament skills as well for the graph * WIP * New team rating logic + misc other * tiered -> tiered.server * Update season starting time * TODOs * Add rules page * Hide elements correctly when off-season * Fix crash when only one player with skill * How-to video * Fix StartRank showing when not logged in * Make user leaderboard the default * Make Skill season non-nullable * Add suggested pass to match * Add rule * identifierToUserIds helper * Fix tiers not showing
91 lines
2.4 KiB
TypeScript
91 lines
2.4 KiB
TypeScript
import allTags from "~/routes/calendar/tags.json";
|
|
import type { CalendarEventTag } from "./db/types";
|
|
import type { BuildAbilitiesTupleWithUnknown } from "./modules/in-game-lists";
|
|
|
|
export const TWEET_LENGTH_MAX_LENGTH = 280;
|
|
export const DISCORD_MESSAGE_MAX_LENGTH = 2000;
|
|
|
|
export const USER = {
|
|
BIO_MAX_LENGTH: DISCORD_MESSAGE_MAX_LENGTH,
|
|
CUSTOM_URL_MAX_LENGTH: 32,
|
|
IN_GAME_NAME_TEXT_MAX_LENGTH: 20,
|
|
IN_GAME_NAME_DISCRIMINATOR_MAX_LENGTH: 5,
|
|
WEAPON_POOL_MAX_SIZE: 5,
|
|
COMMISSION_TEXT_MAX_LENGTH: 1000,
|
|
};
|
|
|
|
export const PlUS_SUGGESTION_FIRST_COMMENT_MAX_LENGTH = 500;
|
|
export const PlUS_SUGGESTION_COMMENT_MAX_LENGTH = TWEET_LENGTH_MAX_LENGTH;
|
|
|
|
export const CALENDAR_EVENT = {
|
|
NAME_MIN_LENGTH: 2,
|
|
NAME_MAX_LENGTH: 100,
|
|
DESCRIPTION_MAX_LENGTH: DISCORD_MESSAGE_MAX_LENGTH,
|
|
DISCORD_INVITE_CODE_MAX_LENGTH: 50,
|
|
BRACKET_URL_MAX_LENGTH: 200,
|
|
MAX_AMOUNT_OF_DATES: 5,
|
|
TAGS: Object.keys(allTags) as Array<CalendarEventTag>,
|
|
};
|
|
|
|
export const CALENDAR_EVENT_RESULT = {
|
|
MAX_PARTICIPANTS_COUNT: 1000,
|
|
MAX_PLAYERS_LENGTH: 8,
|
|
MAX_TEAM_NAME_LENGTH: 100,
|
|
MAX_TEAM_PLACEMENT: 256,
|
|
MAX_PLAYER_NAME_LENGTH: 100,
|
|
} as const;
|
|
|
|
export const BUILD = {
|
|
TITLE_MIN_LENGTH: 1,
|
|
TITLE_MAX_LENGTH: 50,
|
|
DESCRIPTION_MAX_LENGTH: TWEET_LENGTH_MAX_LENGTH,
|
|
MAX_WEAPONS_COUNT: 5,
|
|
MAX_COUNT: 250,
|
|
} as const;
|
|
|
|
export const MAPS = {
|
|
CODE_MIN_LENGTH: 2,
|
|
CODE_MAX_LENGTH: 32,
|
|
};
|
|
|
|
export const BUILDS_PAGE_BATCH_SIZE = 24;
|
|
export const BUILDS_PAGE_MAX_BUILDS = 240;
|
|
|
|
export const INVITE_CODE_LENGTH = 10;
|
|
|
|
export const EMPTY_BUILD: BuildAbilitiesTupleWithUnknown = [
|
|
["UNKNOWN", "UNKNOWN", "UNKNOWN", "UNKNOWN"],
|
|
["UNKNOWN", "UNKNOWN", "UNKNOWN", "UNKNOWN"],
|
|
["UNKNOWN", "UNKNOWN", "UNKNOWN", "UNKNOWN"],
|
|
];
|
|
|
|
export const PLUS_TIERS = [1, 2, 3];
|
|
|
|
export const PLUS_UPVOTE = 1;
|
|
export const PLUS_DOWNVOTE = -1;
|
|
|
|
export const ADMIN_DISCORD_ID = "79237403620945920";
|
|
export const ADMIN_ID = process.env.NODE_ENV === "production" ? 274 : 1;
|
|
|
|
export const LOHI_TOKEN_HEADER_NAME = "Lohi-Token";
|
|
|
|
export const CUSTOMIZED_CSS_VARS_NAME = "css";
|
|
|
|
export const MAX_AP = 57;
|
|
|
|
export const HALF_HOUR_IN_MS = 30 * 60 * 1000;
|
|
export const ONE_HOUR_IN_MS = 60 * 60 * 1000;
|
|
|
|
export const SPLATOON_3_XP_BADGE_VALUES = [
|
|
3400, 3300, 3200, 3100, 3000, 2900, 2800, 2700, 2600,
|
|
] as const;
|
|
export const findSplatoon3XpBadgeValue = (xPower: number) => {
|
|
for (const value of SPLATOON_3_XP_BADGE_VALUES) {
|
|
if (xPower >= value) {
|
|
return value;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
};
|