From 037cc86c1f520d8e89e721a631c9163d01c61070 Mon Sep 17 00:00:00 2001 From: he3als <65787561+he3als@users.noreply.github.com> Date: Sat, 8 Feb 2025 18:31:38 +0000 Subject: [PATCH] Server Content Tab Fixes & Improvements (#3230) * fix cancel button on edit modal * make hardcoded mod text dynamic for plugins * fix files path when clicking an external plugin * fix plugins path for file uploads * improve friendly mod name logic * fix toggling plugins * update pyroServers content definitions * install then remove for changing version Reinstall isn't currently implemented properly * make the edit dialog pretty * make new admonition component * fix warning admonition colour * new edit version modal * cleanup * make latest version default * final touches * lint --- .../ui/servers/ContentVersionEditModal.vue | 530 ++++++++++++++++++ .../ui/servers/ContentVersionFilter.vue | 172 ++++++ .../ui/servers/TeleportDropdownMenu.vue | 2 +- apps/frontend/src/composables/pyroServers.ts | 34 +- .../servers/manage/[id]/content/index.vue | 220 ++++---- .../ui/src/components/base/Admonition.vue | 58 ++ .../ui/src/components/base/ManySelect.vue | 12 +- .../ui/src/components/base/PopoutMenu.vue | 6 + .../src/components/billing/PurchaseModal.vue | 38 +- packages/ui/src/components/index.ts | 1 + 10 files changed, 909 insertions(+), 164 deletions(-) create mode 100644 apps/frontend/src/components/ui/servers/ContentVersionEditModal.vue create mode 100644 apps/frontend/src/components/ui/servers/ContentVersionFilter.vue create mode 100644 packages/ui/src/components/base/Admonition.vue diff --git a/apps/frontend/src/components/ui/servers/ContentVersionEditModal.vue b/apps/frontend/src/components/ui/servers/ContentVersionEditModal.vue new file mode 100644 index 00000000..5ea0a9a0 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ContentVersionEditModal.vue @@ -0,0 +1,530 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ContentVersionFilter.vue b/apps/frontend/src/components/ui/servers/ContentVersionFilter.vue new file mode 100644 index 00000000..9ce8bf85 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ContentVersionFilter.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/TeleportDropdownMenu.vue b/apps/frontend/src/components/ui/servers/TeleportDropdownMenu.vue index 4c799454..13af59e5 100644 --- a/apps/frontend/src/components/ui/servers/TeleportDropdownMenu.vue +++ b/apps/frontend/src/components/ui/servers/TeleportDropdownMenu.vue @@ -227,7 +227,7 @@ const radioValue = computed({ }); const triggerClasses = computed(() => ({ - "cursor-not-allowed opacity-50 grayscale": props.disabled, + "!cursor-not-allowed opacity-50 grayscale": props.disabled, "rounded-b-none": dropdownVisible.value && !isRenderingUp.value && !props.disabled, "rounded-t-none": dropdownVisible.value && isRenderingUp.value && !props.disabled, })); diff --git a/apps/frontend/src/composables/pyroServers.ts b/apps/frontend/src/composables/pyroServers.ts index 74f76e3a..930a2227 100644 --- a/apps/frontend/src/composables/pyroServers.ts +++ b/apps/frontend/src/composables/pyroServers.ts @@ -252,7 +252,7 @@ export interface DirectoryResponse { current?: number; } -type ContentType = "Mod" | "Plugin"; +type ContentType = "mod" | "plugin"; const constructServerProperties = (properties: any): string => { let fileContent = `#Minecraft server properties\n#${new Date().toUTCString()}\n`; @@ -519,8 +519,8 @@ const installContent = async (contentType: ContentType, projectId: string, versi await PyroFetch(`servers/${internalServerRefrence.value.serverId}/mods`, { method: "POST", body: { - install_as: contentType, rinth_ids: { project_id: projectId, version_id: versionId }, + install_as: contentType, }, }); } catch (error) { @@ -529,13 +529,12 @@ const installContent = async (contentType: ContentType, projectId: string, versi } }; -const removeContent = async (contentType: ContentType, contentId: string) => { +const removeContent = async (path: string) => { try { await PyroFetch(`servers/${internalServerRefrence.value.serverId}/deleteMod`, { method: "POST", body: { - install_as: contentType, - path: contentId, + path, }, }); } catch (error) { @@ -544,15 +543,11 @@ const removeContent = async (contentType: ContentType, contentId: string) => { } }; -const reinstallContent = async ( - contentType: ContentType, - contentId: string, - newContentId: string, -) => { +const reinstallContent = async (replace: string, projectId: string, versionId: string) => { try { - await PyroFetch(`servers/${internalServerRefrence.value.serverId}/mods/${contentId}`, { - method: "PUT", - body: { install_as: contentType, version_id: newContentId }, + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/mods/update`, { + method: "POST", + body: { replace, project_id: projectId, version_id: versionId }, }); } catch (error) { console.error("Error reinstalling mod:", error); @@ -1160,18 +1155,17 @@ type ContentFunctions = { /** * Removes a mod from a server. - * @param contentType - The type of content to remove. - * @param contentId - The ID of the content. + * @param path - The path of the mod file. */ - remove: (contentType: ContentType, contentId: string) => Promise; + remove: (path: string) => Promise; /** * Reinstalls a mod to a server. - * @param contentType - The type of content to reinstall. - * @param contentId - The ID of the content. - * @param newContentId - The ID of the new version. + * @param replace - The path of the mod to replace. + * @param projectId - The ID of the content. + * @param versionId - The ID of the new version. */ - reinstall: (contentType: ContentType, contentId: string, newContentId: string) => Promise; + reinstall: (replace: string, projectId: string, versionId: string) => Promise; }; type BackupFunctions = { diff --git a/apps/frontend/src/pages/servers/manage/[id]/content/index.vue b/apps/frontend/src/pages/servers/manage/[id]/content/index.vue index 8161fa97..1dc947f3 100644 --- a/apps/frontend/src/pages/servers/manage/[id]/content/index.vue +++ b/apps/frontend/src/pages/servers/manage/[id]/content/index.vue @@ -1,57 +1,14 @@