diff --git a/web/src/app/submissions/[submissionId]/_reviewButtons.tsx b/web/src/app/submissions/[submissionId]/_reviewButtons.tsx index 5b1cdbe..71fb83e 100644 --- a/web/src/app/submissions/[submissionId]/_reviewButtons.tsx +++ b/web/src/app/submissions/[submissionId]/_reviewButtons.tsx @@ -15,7 +15,8 @@ interface ReviewButton { } interface ReviewId { - submissionId: string + submissionId: string, + submissionStatus: number, } async function ReviewButtonClicked(action: ApiActions, submissionId: string) { @@ -61,9 +62,8 @@ export default function ReviewButtons(props: ReviewId) { // RequestChanges | Reviewer | Validated, Accepted, Submitted // Upload | MapAdmin | Validated // ResetUploading | MapAdmin | Uploading - const { submissionId } = props; + const { submissionId, submissionStatus } = props; const [roles, setRoles] = useState<Roles>(Roles.Empty); - const [status, setStatus] = useState<SubmissionStatus>(SubmissionStatus.UnderConstruction); const [loading, setLoading] = useState(true); useEffect(() => { @@ -73,14 +73,7 @@ export default function ReviewButtons(props: ReviewId) { const rolesResponse = await fetch("/api/session/roles"); const rolesData = parseInt(await rolesResponse.text()); - // Fetch submission status - const statusResponse = await fetch( - `/api/submissions/${submissionId}/status` - ); - const statusData = await statusResponse.json(); - setRoles(rolesData); - setStatus(statusData.status); } catch (error) { console.error("Error fetching data:", error); } finally { @@ -97,35 +90,35 @@ export default function ReviewButtons(props: ReviewId) { const is_submitter = false; // TODO: MY_USER === submission.Submitter if (is_submitter) { - if ([SubmissionStatus.UnderConstruction, SubmissionStatus.ChangesRequested].includes(status!)) { + if ([SubmissionStatus.UnderConstruction, SubmissionStatus.ChangesRequested].includes(submissionStatus!)) { visibleButtons.push({ name: "Submit", action: "submit", color: "info", submissionId }); } - if ([SubmissionStatus.Submitted, SubmissionStatus.ChangesRequested].includes(status!)) { + if ([SubmissionStatus.Submitted, SubmissionStatus.ChangesRequested].includes(submissionStatus!)) { visibleButtons.push({ name: "Revoke", action: "revoke", color: "info", submissionId }); } } if (roles&Roles.SubmissionReview) { - if (status === SubmissionStatus.Submitted) { + if (submissionStatus === SubmissionStatus.Submitted) { visibleButtons.push({ name: "Accept", action: "trigger-validate", color: "info", submissionId }); visibleButtons.push({ name: "Reject", action: "reject", color: "error", submissionId }); } - if (status === SubmissionStatus.Accepted) { + if (submissionStatus === SubmissionStatus.Accepted) { visibleButtons.push({ name: "Validate", action: "retry-validate", color: "info", submissionId }); } - if (status === SubmissionStatus.Validating) { + if (submissionStatus === SubmissionStatus.Validating) { visibleButtons.push({ name: "Reset Validating (fix softlocked status)", action: "reset-validating", color: "error", submissionId }); } - if ([SubmissionStatus.Validated, SubmissionStatus.Accepted, SubmissionStatus.Submitted].includes(status!)) { + if ([SubmissionStatus.Validated, SubmissionStatus.Accepted, SubmissionStatus.Submitted].includes(submissionStatus!)) { visibleButtons.push({ name: "Request Changes", action: "request-changes", color: "error", submissionId }); } } if (roles&Roles.SubmissionUpload) { - if (status === SubmissionStatus.Validated) { + if (submissionStatus === SubmissionStatus.Validated) { visibleButtons.push({ name: "Upload", action: "trigger-upload", color: "info", submissionId }); } - if (status === SubmissionStatus.Uploading) { + if (submissionStatus === SubmissionStatus.Uploading) { visibleButtons.push({ name: "Reset Uploading (fix softlocked status)", action: "reset-uploading", color: "error", submissionId }); } } diff --git a/web/src/app/submissions/[submissionId]/page.tsx b/web/src/app/submissions/[submissionId]/page.tsx index c78ba8b..3440604 100644 --- a/web/src/app/submissions/[submissionId]/page.tsx +++ b/web/src/app/submissions/[submissionId]/page.tsx @@ -17,6 +17,7 @@ import "./(styles)/page.scss"; interface ReviewId { submissionId: string; assetId: number; + submissionStatus: number; } function Ratings() { @@ -47,7 +48,7 @@ function RatingArea(submission: ReviewId) { <MapImage id={submission.assetId}/> </section> <Ratings/> - <ReviewButtons submissionId={submission.submissionId}/> + <ReviewButtons submissionId={submission.submissionId} submissionStatus={submission.submissionStatus}/> </aside> ) } @@ -97,7 +98,7 @@ export default function SubmissionInfoPage() { <Webpage> <main className="map-page-main"> <section className="review-section"> - <RatingArea assetId={submission.AssetID} submissionId={dynamicId.submissionId}/> + <RatingArea assetId={submission.AssetID} submissionId={dynamicId.submissionId} submissionStatus={submission.StatusID}/> <TitleAndComments name={submission.DisplayName} creator={submission.Creator} review={submission.StatusID} status_message={submission.StatusMessage} asset_id={submission.AssetID} comments={[]}/> </section> </main>