From e2ea8b1a1becff0d5e20d4dad0f91cd6708a107b Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sat, 29 Jun 2024 12:35:28 +0300 Subject: [PATCH] Fix tournament logo upload + better flow Closes #1780 --- .../core/Tournament.server.ts | 4 ++++ .../tournament/TournamentRepository.server.ts | 20 +++++++++++++++---- .../tournament/routes/to.$id.register.tsx | 8 ++++---- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/features/tournament-bracket/core/Tournament.server.ts b/app/features/tournament-bracket/core/Tournament.server.ts index d6529959f..7f98e10fe 100644 --- a/app/features/tournament-bracket/core/Tournament.server.ts +++ b/app/features/tournament-bracket/core/Tournament.server.ts @@ -5,6 +5,7 @@ import { notFoundIfFalsy } from "~/utils/remix"; import type { Unwrapped } from "~/utils/types"; import { Tournament } from "./Tournament"; import { getServerTournamentManager } from "./brackets-manager/manager.server"; +import { HACKY_resolvePicture } from "~/features/tournament/tournament-utils"; const manager = getServerTournamentManager(); @@ -45,10 +46,13 @@ function dataMapped({ isAdmin(user); const revealInfo = tournamentHasStarted || isOrganizer; + const defaultLogo = HACKY_resolvePicture({ name: "default" }); + return { data, ctx: { ...ctx, + logoSrc: isOrganizer || ctx.logoValidatedAt ? ctx.logoSrc : defaultLogo, teams: ctx.teams.map((team) => { const isOwnTeam = team.members.some( (member) => member.userId === user?.id, diff --git a/app/features/tournament/TournamentRepository.server.ts b/app/features/tournament/TournamentRepository.server.ts index 19b68a79b..cebea68ea 100644 --- a/app/features/tournament/TournamentRepository.server.ts +++ b/app/features/tournament/TournamentRepository.server.ts @@ -35,14 +35,26 @@ export async function findById(id: number) { "Tournament.mapPickingStyle", "Tournament.rules", "CalendarEvent.name", - "CalendarEvent.avatarImgId", "CalendarEvent.description", "CalendarEventDate.startTime", eb - .selectFrom("UserSubmittedImage") - .select(["UserSubmittedImage.url"]) - .whereRef("CalendarEvent.avatarImgId", "=", "UserSubmittedImage.id") + .selectFrom("UnvalidatedUserSubmittedImage") + .select(["UnvalidatedUserSubmittedImage.url"]) + .whereRef( + "CalendarEvent.avatarImgId", + "=", + "UnvalidatedUserSubmittedImage.id", + ) .as("logoUrl"), + eb + .selectFrom("UnvalidatedUserSubmittedImage") + .select(["UnvalidatedUserSubmittedImage.validatedAt"]) + .whereRef( + "CalendarEvent.avatarImgId", + "=", + "UnvalidatedUserSubmittedImage.id", + ) + .as("logoValidatedAt"), jsonObjectFrom( eb .selectFrom("User") diff --git a/app/features/tournament/routes/to.$id.register.tsx b/app/features/tournament/routes/to.$id.register.tsx index e7999d50a..916878fbd 100644 --- a/app/features/tournament/routes/to.$id.register.tsx +++ b/app/features/tournament/routes/to.$id.register.tsx @@ -70,8 +70,8 @@ export default function TournamentRegisterPage() { const startsAtEvenHour = tournament.ctx.startTime.getMinutes() === 0; const showAvatarPendingApprovalText = - !tournament.ctx.logoUrl && - tournament.ctx.avatarImgId && + tournament.ctx.logoUrl && + !tournament.ctx.logoValidatedAt && tournament.isOrganizer(user); return ( @@ -127,8 +127,8 @@ export default function TournamentRegisterPage() { {showAvatarPendingApprovalText ? (