diff --git a/apps/frontend/src/components/ui/ProjectMemberHeader.vue b/apps/frontend/src/components/ui/ProjectMemberHeader.vue
index 74077a008..59f08be91 100644
--- a/apps/frontend/src/components/ui/ProjectMemberHeader.vue
+++ b/apps/frontend/src/components/ui/ProjectMemberHeader.vue
@@ -8,14 +8,18 @@
You've been invited to join this project. Please accept or decline the invitation.
-
-
+
+
+
+
+
+
Publishing checklist
-
+
+
+
@@ -80,9 +83,11 @@ import {
LightBulbIcon,
TriangleAlertIcon,
DropdownIcon,
+ SendIcon,
} from "@modrinth/assets";
import { acceptTeamInvite, removeTeamMember } from "~/helpers/teams.js";
import { nags } from "@modrinth/moderation";
+import { ButtonStyled } from "@modrinth/ui";
import type { Nag, NagContext, NagStatus } from "@modrinth/moderation";
import type { Project, User, Version } from "@modrinth/utils";
import type { Component } from "vue";
@@ -138,8 +143,19 @@ const nagContext = computed(() => ({
versions: props.versions,
currentMember: props.currentMember as User,
currentRoute: props.routeName,
+ tags: props.tags,
+ submitProject: submitForReview,
}));
+const submitForReview = async () => {
+ if (
+ !props.acknowledgedMessage ||
+ nags.value.filter((x) => x.condition && x.status === "required").length === 0
+ ) {
+ await props.setProcessing();
+ }
+};
+
const applicableNags = computed(() => {
return nags.filter((nag) => {
return nag.shouldShow(nagContext.value);
diff --git a/packages/moderation/data/nags/core.ts b/packages/moderation/data/nags/core.ts
index ad6d467ff..4ae32da77 100644
--- a/packages/moderation/data/nags/core.ts
+++ b/packages/moderation/data/nags/core.ts
@@ -2,6 +2,20 @@ import type { Nag, NagContext } from '../../types/nags'
import { formatProjectType } from '@modrinth/utils'
export const coreNags: Nag[] = [
+ {
+ id: 'moderator-feedback',
+ title: 'Review moderator feedback',
+ description: () =>
+ 'Review any feedback from moderators regarding your project before resubmitting.',
+ status: 'suggestion',
+ shouldShow: (context: NagContext) =>
+ context.tags.rejectedStatuses.includes(context.project.status),
+ link: {
+ path: 'moderation',
+ title: 'Visit moderation thread',
+ shouldShow: (context: NagContext) => context.currentRoute !== 'type-id-moderation',
+ },
+ },
{
id: 'upload-version',
title: 'Upload a version',
diff --git a/packages/moderation/data/nags/extended.ts b/packages/moderation/data/nags/extended.ts
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/moderation/types/nags.ts b/packages/moderation/types/nags.ts
index 0e8075c8c..f922fa253 100644
--- a/packages/moderation/types/nags.ts
+++ b/packages/moderation/types/nags.ts
@@ -32,6 +32,8 @@ export interface NagContext {
* The current route in the application.
*/
currentRoute: string
+ tags: any
+ submitProject: (...any: any) => any
}
/**