Add version deleting from the version list (#3204)

This commit is contained in:
Prospector
2025-01-30 15:51:52 -08:00
committed by GitHub
parent 14dacb2352
commit 9574e8e639
2 changed files with 47 additions and 6 deletions
+15
View File
@@ -802,6 +802,7 @@
:reset-members="resetMembers" :reset-members="resetMembers"
:route="route" :route="route"
@on-download="triggerDownloadAnimation" @on-download="triggerDownloadAnimation"
@delete-version="deleteVersion"
/> />
</div> </div>
</div> </div>
@@ -1451,6 +1452,20 @@ function onDownload(event) {
}, 400); }, 400);
} }
async function deleteVersion(id) {
if (!id) return;
startLoading();
await useBaseFetch(`version/${id}`, {
method: "DELETE",
});
versions.value = versions.value.filter((x) => x.id !== id);
stopLoading();
}
const navLinks = computed(() => { const navLinks = computed(() => {
const projectUrl = `/${project.value.project_type}/${project.value.slug ? project.value.slug : project.value.id}`; const projectUrl = `/${project.value.project_type}/${project.value.slug ? project.value.slug : project.value.id}`;
@@ -1,4 +1,13 @@
<template> <template>
<ConfirmModal
v-if="currentMember"
ref="deleteVersionModal"
title="Are you sure you want to delete this version?"
description="This will remove this version forever (like really forever)."
:has-to-type="false"
proceed-label="Delete"
@proceed="deleteVersion()"
/>
<section class="experimental-styles-within overflow-visible"> <section class="experimental-styles-within overflow-visible">
<div <div
v-if="currentMember && isPermission(currentMember?.permissions, 1 << 0)" v-if="currentMember && isPermission(currentMember?.permissions, 1 << 0)"
@@ -41,7 +50,7 @@
:href="getPrimaryFile(version).url" :href="getPrimaryFile(version).url"
class="group-hover:!bg-brand group-hover:[&>svg]:!text-brand-inverted" class="group-hover:!bg-brand group-hover:[&>svg]:!text-brand-inverted"
aria-label="Download" aria-label="Download"
@click="emits('onDownload')" @click="emit('onDownload')"
> >
<DownloadIcon aria-hidden="true" /> <DownloadIcon aria-hidden="true" />
</a> </a>
@@ -57,7 +66,7 @@
hoverFilled: true, hoverFilled: true,
link: getPrimaryFile(version).url, link: getPrimaryFile(version).url,
action: () => { action: () => {
emits('onDownload'); emit('onDownload');
}, },
}, },
{ {
@@ -101,8 +110,11 @@
id: 'delete', id: 'delete',
color: 'red', color: 'red',
hoverFilled: true, hoverFilled: true,
action: () => {}, action: () => {
shown: currentMember && false, selectedVersion = version.id;
deleteVersionModal.show();
},
shown: currentMember,
}, },
]" ]"
aria-label="More options" aria-label="More options"
@@ -144,7 +156,13 @@
</template> </template>
<script setup> <script setup>
import { ButtonStyled, OverflowMenu, FileInput, ProjectPageVersions } from "@modrinth/ui"; import {
ButtonStyled,
OverflowMenu,
FileInput,
ProjectPageVersions,
ConfirmModal,
} from "@modrinth/ui";
import { import {
DownloadIcon, DownloadIcon,
MoreVerticalIcon, MoreVerticalIcon,
@@ -185,7 +203,10 @@ const tags = useTags();
const flags = useFeatureFlags(); const flags = useFeatureFlags();
const auth = await useAuth(); const auth = await useAuth();
const emits = defineEmits(["onDownload"]); const deleteVersionModal = ref();
const selectedVersion = ref(null);
const emit = defineEmits(["onDownload", "deleteVersion"]);
const router = useNativeRouter(); const router = useNativeRouter();
@@ -212,4 +233,9 @@ async function handleFiles(files) {
async function copyToClipboard(text) { async function copyToClipboard(text) {
await navigator.clipboard.writeText(text); await navigator.clipboard.writeText(text);
} }
function deleteVersion() {
emit("deleteVersion", selectedVersion.value);
selectedVersion.value = null;
}
</script> </script>