roles is not an enum

This commit is contained in:
Quaternions 2025-04-04 14:29:27 -07:00
parent 13651df94d
commit b62b2fcf7b
Signed by: Quaternions
GPG Key ID: D0DF5964F79AC131
2 changed files with 26 additions and 16 deletions
web/src/app
submissions/[submissionId]
ts

@ -1,4 +1,4 @@
import { Roles } from "@/app/ts/Roles";
import { Roles, RolesConstants } from "@/app/ts/Roles";
import { SubmissionStatus } from "@/app/ts/Submission";
import { Button, ButtonOwnProps } from "@mui/material";
import { useState, useEffect } from "react";
@ -65,7 +65,7 @@ export default function ReviewButtons(props: ReviewId) {
// ResetUploading | MapAdmin | Uploading
const { submissionId, submissionStatus } = props;
const [user, setUser] = useState<number|null>(null);
const [roles, setRoles] = useState<Roles>(Roles.Empty);
const [roles, setRoles] = useState<Roles>(RolesConstants.Empty);
const [loading, setLoading] = useState(true);
useEffect(() => {
@ -101,7 +101,7 @@ export default function ReviewButtons(props: ReviewId) {
}
}
if (roles&Roles.SubmissionReview) {
if (roles&RolesConstants.SubmissionReview) {
if (submissionStatus === SubmissionStatus.Submitted) {
visibleButtons.push({ name: "Accept", action: "trigger-validate", color: "info", submissionId });
visibleButtons.push({ name: "Reject", action: "reject", color: "error", submissionId });
@ -117,7 +117,7 @@ export default function ReviewButtons(props: ReviewId) {
}
}
if (roles&Roles.SubmissionUpload) {
if (roles&RolesConstants.SubmissionUpload) {
if (submissionStatus === SubmissionStatus.Validated) {
visibleButtons.push({ name: "Upload", action: "trigger-upload", color: "info", submissionId });
}

@ -1,15 +1,25 @@
// Submissions roles bitflag
enum Roles {
SubmissionUpload = 1 << 6,
SubmissionReview = 1 << 5,
SubmissionRelease = 1 << 4,
ScriptWrite = 1 << 3,
MapfixUpload = 1 << 2,
MapfixReview = 1 << 1,
MapDownload = 1 << 0,
Empty = 0
type Roles = number;
// Constants
const RolesConstants = {
All: -1 as Roles,
SubmissionUpload: 1 << 6 as Roles,
SubmissionReview: 1 << 5 as Roles,
SubmissionRelease: 1 << 4 as Roles,
ScriptWrite: 1 << 3 as Roles,
MapfixUpload: 1 << 2 as Roles,
MapfixReview: 1 << 1 as Roles,
MapDownload: 1 << 0 as Roles,
Empty: 0 as Roles,
};
// Operations
function hasRole(flags: Roles, role: Roles): boolean {
return (flags & role) === role;
}
export {
Roles,
}
type Roles,
RolesConstants,
hasRole,
};