From debaf1381cd1e53537f89122ed6c95a007dd53ad Mon Sep 17 00:00:00 2001
From: Prospector <6166773+Prospector@users.noreply.github.com>
Date: Thu, 28 Aug 2025 18:40:05 -0700
Subject: [PATCH] Fixed permissions issue and modpack issue with environment
overhaul
---
apps/frontend/src/pages/[type]/[id].vue | 18 ++++++++-
.../[type]/[id]/settings/environment.vue | 40 +++++++++++--------
.../frontend/src/pages/dashboard/projects.vue | 5 +--
.../src/components/base/LargeRadioButton.vue | 22 +++++++---
.../ProjectSettingsEnvSelector.vue | 11 +++++
packages/ui/src/locales/en-US/index.json | 6 +++
packages/ui/src/providers/project-page.ts | 3 +-
packages/ui/src/utils/common-messages.ts | 8 ++++
packages/utils/changelog.ts | 7 ++++
9 files changed, 94 insertions(+), 26 deletions(-)
diff --git a/apps/frontend/src/pages/[type]/[id].vue b/apps/frontend/src/pages/[type]/[id].vue
index ef7a98fc..4d8c655c 100644
--- a/apps/frontend/src/pages/[type]/[id].vue
+++ b/apps/frontend/src/pages/[type]/[id].vue
@@ -764,7 +764,16 @@
>
{{ formatMessage(messages.environmentMigrationMessage) }}
-
+
{{ formatMessage(messages.reviewEnvironmentSettings) }}
@@ -957,6 +966,7 @@ import {
ButtonStyled,
Checkbox,
commonMessages,
+ commonProjectSettingsMessages,
injectNotificationManager,
NewModal,
OverflowMenu,
@@ -1589,6 +1599,11 @@ const currentMember = computed(() => {
return val
})
+const hasEditDetailsPermission = computed(() => {
+ const EDIT_DETAILS = 1 << 2
+ return (currentMember.value?.permissions & EDIT_DETAILS) === EDIT_DETAILS
+})
+
versions.value = data.$computeVersions(versions.value, allMembers.value)
// Q: Why do this instead of computing the versions of featuredVersions?
@@ -1870,6 +1885,7 @@ provideProjectPageContext({
projectV2: project,
projectV3,
refreshProject: resetProject,
+ currentMember,
})
diff --git a/apps/frontend/src/pages/[type]/[id]/settings/environment.vue b/apps/frontend/src/pages/[type]/[id]/settings/environment.vue
index 7a1459c2..62c4fbc7 100644
--- a/apps/frontend/src/pages/[type]/[id]/settings/environment.vue
+++ b/apps/frontend/src/pages/[type]/[id]/settings/environment.vue
@@ -14,7 +14,7 @@ import { defineMessages, useVIntl } from '@vintl/vintl'
const { formatMessage } = useVIntl()
-const { projectV2, projectV3, refreshProject } = injectProjectPageContext()
+const { currentMember, projectV2, projectV3, refreshProject } = injectProjectPageContext()
const { handleError } = injectNotificationManager()
const api = injectApi()
@@ -32,6 +32,11 @@ const needsToVerify = computed(
supportsEnvironment.value,
)
+const hasPermission = computed(() => {
+ const EDIT_DETAILS = 1 << 2
+ return (currentMember.value?.permissions & EDIT_DETAILS) === EDIT_DETAILS
+})
+
function getInitialEnv() {
return projectV3.value.environment?.length === 1 ? projectV3.value.environment[0] : undefined
}
@@ -106,7 +111,7 @@ const messages = defineMessages({
- {{ formatMessage(messages.wrongProjectTypeDescription) }}
-
+ />
+
- {{ formatMessage(messages.missingEnvDescription) }}
-
+ />
- {{ formatMessage(messages.multipleEnvironmentsDescription) }}
-
+ />
- {{ formatMessage(messages.reviewOptionsDescription) }}
-
-
+ />
+
diff --git a/apps/frontend/src/pages/dashboard/projects.vue b/apps/frontend/src/pages/dashboard/projects.vue
index 02e7b6ad..1005c325 100644
--- a/apps/frontend/src/pages/dashboard/projects.vue
+++ b/apps/frontend/src/pages/dashboard/projects.vue
@@ -456,9 +456,8 @@ if (user.value?.projects) {
projects.value = updateSort(user.value.projects, 'Name', false)
user.value?.projectsV3?.forEach((project) => {
if (
- (project.side_types_migration_review_status === 'pending' &&
- project.project_types.includes('mod')) ||
- project.project_types.includes('modpack')
+ project.side_types_migration_review_status === 'pending' &&
+ (project.project_types.includes('mod') || project.project_types.includes('modpack'))
) {
projectsWithMigrationWarning.value.push(project.id)
}
diff --git a/packages/ui/src/components/base/LargeRadioButton.vue b/packages/ui/src/components/base/LargeRadioButton.vue
index 1b20fd4f..9e5ae006 100644
--- a/packages/ui/src/components/base/LargeRadioButton.vue
+++ b/packages/ui/src/components/base/LargeRadioButton.vue
@@ -1,7 +1,13 @@