From 4e7ee9dc5a7a8fbb3707a7f43765ff5f25dd3e8b Mon Sep 17 00:00:00 2001 From: Quaternions Date: Fri, 4 Apr 2025 19:04:48 -0700 Subject: [PATCH 1/3] rename "Accepted" status to "AcceptedUnvalidated" --- pkg/model/submission.go | 2 +- pkg/service/submissions.go | 8 ++++---- pkg/service_internal/submissions.go | 4 ++-- web/src/app/mapfixes/[mapfixId]/_reviewButtons.tsx | 4 ++-- web/src/app/submissions/[submissionId]/_reviewButtons.tsx | 4 ++-- web/src/app/ts/Mapfix.ts | 6 +++--- web/src/app/ts/Submission.ts | 6 +++--- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pkg/model/submission.go b/pkg/model/submission.go index aa2c708..6e20459 100644 --- a/pkg/model/submission.go +++ b/pkg/model/submission.go @@ -14,7 +14,7 @@ const ( SubmissionStatusUploading SubmissionStatus = 6 SubmissionStatusValidated SubmissionStatus = 5 SubmissionStatusValidating SubmissionStatus = 4 - SubmissionStatusAccepted SubmissionStatus = 3 // pending script review, can re-trigger validation + SubmissionStatusAcceptedUnvalidated SubmissionStatus = 3 // pending script review, can re-trigger validation // Phase: Creation SubmissionStatusChangesRequested SubmissionStatus = 2 diff --git a/pkg/service/submissions.go b/pkg/service/submissions.go index f36a18a..ea89032 100644 --- a/pkg/service/submissions.go +++ b/pkg/service/submissions.go @@ -25,7 +25,7 @@ var( model.SubmissionStatusUploading, model.SubmissionStatusValidated, model.SubmissionStatusValidating, - model.SubmissionStatusAccepted, + model.SubmissionStatusAcceptedUnvalidated, } ) @@ -276,7 +276,7 @@ func (svc *Service) ActionSubmissionRequestChanges(ctx context.Context, params a // transaction smap := datastore.Optional() smap.Add("status_id", model.SubmissionStatusChangesRequested) - return svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusValidated, model.SubmissionStatusAccepted, model.SubmissionStatusSubmitted}, smap) + return svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusValidated, model.SubmissionStatusAcceptedUnvalidated, model.SubmissionStatusSubmitted}, smap) } // ActionSubmissionRevoke invokes actionSubmissionRevoke operation. @@ -520,7 +520,7 @@ func (svc *Service) ActionSubmissionRetryValidate(ctx context.Context, params ap // transaction smap := datastore.Optional() smap.Add("status_id", model.SubmissionStatusValidating) - submission, err := svc.DB.Submissions().IfStatusThenUpdateAndGet(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusAccepted}, smap) + submission, err := svc.DB.Submissions().IfStatusThenUpdateAndGet(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusAcceptedUnvalidated}, smap) if err != nil { return err } @@ -579,7 +579,7 @@ func (svc *Service) ActionSubmissionAccepted(ctx context.Context, params api.Act // transaction smap := datastore.Optional() - smap.Add("status_id", model.SubmissionStatusAccepted) + smap.Add("status_id", model.SubmissionStatusAcceptedUnvalidated) smap.Add("status_message", "Manually forced reset") return svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusValidating}, smap) } diff --git a/pkg/service_internal/submissions.go b/pkg/service_internal/submissions.go index b445c64..555ea86 100644 --- a/pkg/service_internal/submissions.go +++ b/pkg/service_internal/submissions.go @@ -16,7 +16,7 @@ var( model.SubmissionStatusUploading, model.SubmissionStatusValidated, model.SubmissionStatusValidating, - model.SubmissionStatusAccepted, + model.SubmissionStatusAcceptedUnvalidated, model.SubmissionStatusChangesRequested, model.SubmissionStatusSubmitted, model.SubmissionStatusUnderConstruction, @@ -62,7 +62,7 @@ func (svc *Service) ActionSubmissionValidated(ctx context.Context, params intern func (svc *Service) ActionSubmissionAccepted(ctx context.Context, params internal.ActionSubmissionAcceptedParams) error { // transaction smap := datastore.Optional() - smap.Add("status_id", model.SubmissionStatusAccepted) + smap.Add("status_id", model.SubmissionStatusAcceptedUnvalidated) smap.Add("status_message", params.StatusMessage) return svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusValidating}, smap) } diff --git a/web/src/app/mapfixes/[mapfixId]/_reviewButtons.tsx b/web/src/app/mapfixes/[mapfixId]/_reviewButtons.tsx index 55480b6..008fc11 100644 --- a/web/src/app/mapfixes/[mapfixId]/_reviewButtons.tsx +++ b/web/src/app/mapfixes/[mapfixId]/_reviewButtons.tsx @@ -109,7 +109,7 @@ export default function ReviewButtons(props: ReviewId) { visibleButtons.push({ name: "Accept", action: "trigger-validate", color: "info", mapfixId }); visibleButtons.push({ name: "Reject", action: "reject", color: "error", mapfixId }); } - if (mapfixStatus === MapfixStatus.Accepted) { + if (mapfixStatus === MapfixStatus.AcceptedUnvalidated) { visibleButtons.push({ name: "Validate", action: "retry-validate", color: "info", mapfixId }); } if (mapfixStatus === MapfixStatus.Validating) { @@ -118,7 +118,7 @@ export default function ReviewButtons(props: ReviewId) { // this button serves the same purpose as Revoke if you are both // the map submitter and have MapfixReview when status is Submitted if ( - [MapfixStatus.Validated, MapfixStatus.Accepted].includes(mapfixStatus!) + [MapfixStatus.Validated, MapfixStatus.AcceptedUnvalidated].includes(mapfixStatus!) || !is_submitter && mapfixStatus == MapfixStatus.Submitted ) { visibleButtons.push({ name: "Request Changes", action: "request-changes", color: "error", mapfixId }); diff --git a/web/src/app/submissions/[submissionId]/_reviewButtons.tsx b/web/src/app/submissions/[submissionId]/_reviewButtons.tsx index 069cfd6..44862be 100644 --- a/web/src/app/submissions/[submissionId]/_reviewButtons.tsx +++ b/web/src/app/submissions/[submissionId]/_reviewButtons.tsx @@ -109,7 +109,7 @@ export default function ReviewButtons(props: ReviewId) { visibleButtons.push({ name: "Accept", action: "trigger-validate", color: "info", submissionId }); visibleButtons.push({ name: "Reject", action: "reject", color: "error", submissionId }); } - if (submissionStatus === SubmissionStatus.Accepted) { + if (submissionStatus === SubmissionStatus.AcceptedUnvalidated) { visibleButtons.push({ name: "Validate", action: "retry-validate", color: "info", submissionId }); } if (submissionStatus === SubmissionStatus.Validating) { @@ -118,7 +118,7 @@ export default function ReviewButtons(props: ReviewId) { // this button serves the same purpose as Revoke if you are both // the map submitter and have SubmissionReview when status is Submitted if ( - [SubmissionStatus.Validated, SubmissionStatus.Accepted].includes(submissionStatus!) + [SubmissionStatus.Validated, SubmissionStatus.AcceptedUnvalidated].includes(submissionStatus!) || !is_submitter && submissionStatus == SubmissionStatus.Submitted ) { visibleButtons.push({ name: "Request Changes", action: "request-changes", color: "error", submissionId }); diff --git a/web/src/app/ts/Mapfix.ts b/web/src/app/ts/Mapfix.ts index 0570db0..b761fb1 100644 --- a/web/src/app/ts/Mapfix.ts +++ b/web/src/app/ts/Mapfix.ts @@ -2,7 +2,7 @@ const enum MapfixStatus { UnderConstruction = 0, Submitted = 1, ChangesRequested = 2, - Accepted = 3, + AcceptedUnvalidated = 3, Validating = 4, Validated = 5, Uploading = 6, @@ -40,8 +40,8 @@ function MapfixStatusToString(mapfix_status: MapfixStatus): string { return "VALIDATED" case MapfixStatus.Validating: return "VALIDATING" - case MapfixStatus.Accepted: - return "ACCEPTED" + case MapfixStatus.AcceptedUnvalidated: + return "ACCEPTED, NOT VALIDATED" case MapfixStatus.ChangesRequested: return "CHANGES REQUESTED" case MapfixStatus.Submitted: diff --git a/web/src/app/ts/Submission.ts b/web/src/app/ts/Submission.ts index 6e2aa51..cbae508 100644 --- a/web/src/app/ts/Submission.ts +++ b/web/src/app/ts/Submission.ts @@ -2,7 +2,7 @@ const enum SubmissionStatus { UnderConstruction = 0, Submitted = 1, ChangesRequested = 2, - Accepted = 3, + AcceptedUnvalidated = 3, Validating = 4, Validated = 5, Uploading = 6, @@ -42,8 +42,8 @@ function SubmissionStatusToString(submission_status: SubmissionStatus): string { return "VALIDATED" case SubmissionStatus.Validating: return "VALIDATING" - case SubmissionStatus.Accepted: - return "ACCEPTED" + case SubmissionStatus.AcceptedUnvalidated: + return "ACCEPTED, NOT VALIDATED" case SubmissionStatus.ChangesRequested: return "CHANGES REQUESTED" case SubmissionStatus.Submitted: -- 2.49.1 From e376e02dc1268f9b3cc9293e456dd1648e32bb81 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Fri, 4 Apr 2025 19:31:30 -0700 Subject: [PATCH 2/3] web: ai the maps page --- web/src/app/maps/[mapId]/page.tsx | 114 +++++++++++++++++++----------- 1 file changed, 74 insertions(+), 40 deletions(-) diff --git a/web/src/app/maps/[mapId]/page.tsx b/web/src/app/maps/[mapId]/page.tsx index 4674447..6737f67 100644 --- a/web/src/app/maps/[mapId]/page.tsx +++ b/web/src/app/maps/[mapId]/page.tsx @@ -7,51 +7,85 @@ import { useParams } from "next/navigation"; import Link from "next/link"; import { useState, useEffect } from "react"; -interface Button { - name: string, - href: string, +// MUI Components +import { + Typography, + Box, + Button as MuiButton, + Card, + CardContent, + Skeleton +} from "@mui/material"; + +interface ButtonProps { + name: string; + href: string; } -function Button(button: Button) { - return ( - - - - ) + +function Button({ name, href }: ButtonProps) { + return ( + + + {name} + + + ); } export default function Map() { - const {mapId} = useParams() + const { mapId } = useParams(); + const [map, setMap] = useState(null); - const [map, setMap] = useState(null) + useEffect(() => { + async function getMap() { + const res = await fetch(`/api/maps/${mapId}`); + if (res.ok) { + setMap(await res.json()); + } + } + getMap(); + }, [mapId]); - useEffect(() => { // needs to be client sided since server doesn't have a session, nextjs got mad at me for exporting an async function: (https://nextjs.org/docs/messages/no-async-client-component) - async function getMap() { - const res = await fetch(`/api/maps/${mapId}`) - if (res.ok) { - setMap(await res.json()) - } - } - getMap() - }, [mapId]) - - if (!map) { - return - {/* TODO: Add skeleton loading thingy ? Maybe ? (https://mui.com/material-ui/react-skeleton/) */} - - } return ( - -

MapID: { mapId }

-

Display Name: { map.DisplayName }

-

Creator: { map.Creator }

-

GameID: { map.GameID }

-

Release Date: { new Date(map.Date * 1000).toLocaleString() }

-