diff --git a/frontend/components/DirectoryEntry.vue b/frontend/components/DirectoryEntry.vue index f222001..a3b27ae 100644 --- a/frontend/components/DirectoryEntry.vue +++ b/frontend/components/DirectoryEntry.vue @@ -10,6 +10,7 @@ import { deleteWarrenDirectory, deleteWarrenFile, fetchFile, + moveFile, } from '~/lib/api/warrens'; import type { DirectoryEntry } from '#shared/types'; @@ -78,6 +79,38 @@ async function onClick() { } } } + +function onDragStart(e: DragEvent) { + if (e.dataTransfer == null) { + return; + } + + e.dataTransfer.setData('application/warren', entry.name); + e.dataTransfer.dropEffect = 'move'; +} + +async function onDrop(e: DragEvent) { + if (e.dataTransfer == null || warrenStore.current == null) { + return; + } + + if (entry.fileType !== 'directory') { + return; + } + + const fileName = e.dataTransfer.getData('application/warren'); + + if (entry.name === fileName) { + return; + } + + await moveFile( + warrenStore.current.warrenId, + warrenStore.current.path, + fileName, + `${warrenStore.current.path}/${entry.name}` + ); +}