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/maps/[mapId]/page.tsx b/web/src/app/maps/[mapId]/page.tsx index 4674447..6afe389 100644 --- a/web/src/app/maps/[mapId]/page.tsx +++ b/web/src/app/maps/[mapId]/page.tsx @@ -4,54 +4,100 @@ import { MapInfo } from "@/app/ts/Map"; import { MapImage } from "./_mapImage"; import Webpage from "@/app/_components/webpage"; import { useParams } from "next/navigation"; -import Link from "next/link"; import { useState, useEffect } from "react"; +import Link from "next/link"; -interface Button { - name: string, - href: string, +// MUI Components +import { + Typography, + Box, + Button as MuiButton, + Card, + CardContent, + Skeleton, + ThemeProvider, + createTheme, + CssBaseline +} from "@mui/material"; + +interface ButtonProps { + name: string; + href: string; } -function Button(button: Button) { - return ( - - {button.name} - - ) + +function Button({ name, href }: ButtonProps) { + return ( + + + {name} + + + ); } +const darkTheme = createTheme({ + palette: { + mode: "dark", + }, +}); + 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() } - - + {!map ? ( + + + + + + + + ) : ( + + + + + + Map Info + + Map ID: {mapId} + Display Name: {map.DisplayName} + Creator: {map.Creator} + Game ID: {map.GameID} + Release Date: {new Date(map.Date * 1000).toLocaleString()} + + + + + + + + + + Map Preview + + + + + + + )} - ) + + ); } 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:
MapID: { mapId }
Display Name: { map.DisplayName }
Creator: { map.Creator }
GameID: { map.GameID }
Release Date: { new Date(map.Date * 1000).toLocaleString() }