Skip to content
Snippets Groups Projects
Verified Commit 44238d88 authored by Daniel Göbel's avatar Daniel Göbel
Browse files

Add delete modal to confirm deletion of objects

#13
parent 657105ab
No related branches found
No related tags found
1 merge request!13Add modal to confirm deletion
...@@ -17,6 +17,7 @@ import CopyObjectModal from "@/components/Modals/CopyObjectModal.vue"; ...@@ -17,6 +17,7 @@ import CopyObjectModal from "@/components/Modals/CopyObjectModal.vue";
import PermissionModal from "@/components/Modals/PermissionModal.vue"; import PermissionModal from "@/components/Modals/PermissionModal.vue";
import ObjectDetailModal from "@/components/Modals/ObjectDetailModal.vue"; import ObjectDetailModal from "@/components/Modals/ObjectDetailModal.vue";
import CreateFolderModal from "@/components/Modals/CreateFolderModal.vue"; import CreateFolderModal from "@/components/Modals/CreateFolderModal.vue";
import DeleteModal from "@/components/Modals/DeleteModal.vue"
import { import {
S3Client, S3Client,
DeleteObjectCommand, DeleteObjectCommand,
...@@ -121,6 +122,8 @@ const objectState = reactive({ ...@@ -121,6 +122,8 @@ const objectState = reactive({
createdPermission: undefined, createdPermission: undefined,
deletedItem: "", deletedItem: "",
editObjectKey: "", editObjectKey: "",
potentialObjectToDelete: "",
deleteFolder: true,
copyObject: { copyObject: {
key: "", key: "",
size: 0, size: 0,
...@@ -141,6 +144,8 @@ const objectState = reactive({ ...@@ -141,6 +144,8 @@ const objectState = reactive({
createdPermission: undefined | BucketPermission; createdPermission: undefined | BucketPermission;
deletedItem: string; deletedItem: string;
editObjectKey: string; editObjectKey: string;
potentialObjectToDelete: string;
deleteFolder: boolean;
copyObject: S3ObjectMetaInformation; copyObject: S3ObjectMetaInformation;
viewDetailObject: S3ObjectMetaInformation; viewDetailObject: S3ObjectMetaInformation;
}); });
...@@ -388,11 +393,16 @@ function objectCopied(copiedObject: S3ObjectMetaInformation) { ...@@ -388,11 +393,16 @@ function objectCopied(copiedObject: S3ObjectMetaInformation) {
} }
} }
function deleteObject(key: string) {
objectState.potentialObjectToDelete = key;
objectState.deleteFolder = false;
}
/** /**
* Delete an Object in the current folder * Delete an Object in the current folder
* @param key Key of the Object * @param key Key of the Object
*/ */
function deleteObject(key: string) { function confirmedDeleteObject(key: string) {
const command = new DeleteObjectCommand({ const command = new DeleteObjectCommand({
Bucket: props.bucketName, Bucket: props.bucketName,
Key: key, Key: key,
...@@ -432,11 +442,16 @@ async function downloadObject(key: string, bucket: string) { ...@@ -432,11 +442,16 @@ async function downloadObject(key: string, bucket: string) {
document.body.removeChild(element); document.body.removeChild(element);
} }
function deleteFolder(folderPath: string) {
objectState.potentialObjectToDelete = folderPath;
objectState.deleteFolder = true;
}
/** /**
* Delete a folder in the current Bucket * Delete a folder in the current Bucket
* @param folderPath Path to the folder with a trailing "/", e.g. some/path/to/a/folder/ * @param folderPath Path to the folder with a trailing "/", e.g. some/path/to/a/folder/
*/ */
function deleteFolder(folderPath: string) { function confirmedDeleteFolder(folderPath: string) {
const command = new DeleteObjectsCommand({ const command = new DeleteObjectsCommand({
Bucket: props.bucketName, Bucket: props.bucketName,
Delete: { Delete: {
...@@ -506,6 +521,13 @@ watch( ...@@ -506,6 +521,13 @@ watch(
</div> </div>
</div> </div>
</div> </div>
<DeleteModal
modalID="delete-object-modal"
modal-label="some-label"
:object-name-delete="objectState.potentialObjectToDelete"
:back-modal-id="undefined"
@confirm-delete="objectState.deleteFolder ? confirmedDeleteFolder(objectState.potentialObjectToDelete) : confirmedDeleteObject(objectState.potentialObjectToDelete)"
/>
<!-- Navbar Breadcrumb --> <!-- Navbar Breadcrumb -->
<nav aria-label="breadcrumb" class="fs-2"> <nav aria-label="breadcrumb" class="fs-2">
<ol class="breadcrumb"> <ol class="breadcrumb">
...@@ -805,6 +827,8 @@ watch( ...@@ -805,6 +827,8 @@ watch(
class="dropdown-item text-danger align-middle" class="dropdown-item text-danger align-middle"
type="button" type="button"
@click="deleteObject(obj.key)" @click="deleteObject(obj.key)"
data-bs-toggle="modal"
data-bs-target="#delete-object-modal"
:disabled="!writeS3Permission" :disabled="!writeS3Permission"
> >
<bootstrap-icon <bootstrap-icon
...@@ -825,6 +849,8 @@ watch( ...@@ -825,6 +849,8 @@ watch(
type="button" type="button"
class="btn btn-danger btn-sm align-middle" class="btn btn-danger btn-sm align-middle"
:disabled="!writeS3Permission" :disabled="!writeS3Permission"
data-bs-toggle="modal"
data-bs-target="#delete-object-modal"
@click=" @click="
deleteFolder( deleteFolder(
obj.parentFolder.concat(['']).join('/') + obj.name + '/' obj.parentFolder.concat(['']).join('/') + obj.name + '/'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment