This commit is contained in:
syuilo 2025-05-11 09:46:52 +09:00
parent db09744ce8
commit 4ff3cdde87
3 changed files with 8 additions and 30 deletions

View File

@ -43,7 +43,7 @@ import { i18n } from '@/i18n.js';
import { claimAchievement } from '@/utility/achievements.js'; import { claimAchievement } from '@/utility/achievements.js';
import { copyToClipboard } from '@/utility/copy-to-clipboard.js'; import { copyToClipboard } from '@/utility/copy-to-clipboard.js';
import { prefer } from '@/preferences.js'; import { prefer } from '@/preferences.js';
import { DATA_TRANSFER_DRIVE_FILE, DATA_TRANSFER_DRIVE_FOLDER } from '@/consts.js'; import { DATA_TRANSFER_DRIVE_FILE, DATA_TRANSFER_DRIVE_FILES, DATA_TRANSFER_DRIVE_FOLDER, DATA_TRANSFER_DRIVE_FOLDERS } from '@/consts.js';
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
folder: Misskey.entities.DriveFolder; folder: Misskey.entities.DriveFolder;
@ -59,8 +59,6 @@ const emit = defineEmits<{
(ev: 'unchose', v: Misskey.entities.DriveFolder): void; (ev: 'unchose', v: Misskey.entities.DriveFolder): void;
(ev: 'move', v: Misskey.entities.DriveFolder): void; (ev: 'move', v: Misskey.entities.DriveFolder): void;
(ev: 'upload', file: File, folder: Misskey.entities.DriveFolder); (ev: 'upload', file: File, folder: Misskey.entities.DriveFolder);
(ev: 'removeFile', v: Misskey.entities.DriveFile['id']): void;
(ev: 'removeFolder', v: Misskey.entities.DriveFolder['id']): void;
(ev: 'dragstart'): void; (ev: 'dragstart'): void;
(ev: 'dragend'): void; (ev: 'dragend'): void;
}>(); }>();
@ -103,9 +101,11 @@ function onDragover(ev: DragEvent) {
const isFile = ev.dataTransfer.items[0].kind === 'file'; const isFile = ev.dataTransfer.items[0].kind === 'file';
const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE; const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE;
const isDriveFiles = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILES;
const isDriveFolder = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FOLDER; const isDriveFolder = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FOLDER;
const isDriveFolders = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FOLDERS;
if (isFile || isDriveFile || isDriveFolder) { if (isFile || isDriveFile || isDriveFolder || isDriveFiles || isDriveFolders) {
switch (ev.dataTransfer.effectAllowed) { switch (ev.dataTransfer.effectAllowed) {
case 'all': case 'all':
case 'uninitialized': case 'uninitialized':
@ -152,7 +152,6 @@ function onDrop(ev: DragEvent) {
const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE); const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE);
if (driveFile != null && driveFile !== '') { if (driveFile != null && driveFile !== '') {
const file = JSON.parse(driveFile); const file = JSON.parse(driveFile);
emit('removeFile', file.id);
misskeyApi('drive/files/update', { misskeyApi('drive/files/update', {
fileId: file.id, fileId: file.id,
folderId: props.folder.id, folderId: props.folder.id,
@ -168,7 +167,6 @@ function onDrop(ev: DragEvent) {
// reject // reject
if (folder.id === props.folder.id) return; if (folder.id === props.folder.id) return;
emit('removeFolder', folder.id);
misskeyApi('drive/folders/update', { misskeyApi('drive/folders/update', {
folderId: folder.id, folderId: folder.id,
parentId: props.folder.id, parentId: props.folder.id,

View File

@ -32,8 +32,6 @@ const props = defineProps<{
const emit = defineEmits<{ const emit = defineEmits<{
(ev: 'move', v?: Misskey.entities.DriveFolder): void; (ev: 'move', v?: Misskey.entities.DriveFolder): void;
(ev: 'upload', file: File, folder?: Misskey.entities.DriveFolder | null): void; (ev: 'upload', file: File, folder?: Misskey.entities.DriveFolder | null): void;
(ev: 'removeFile', v: Misskey.entities.DriveFile['id']): void;
(ev: 'removeFolder', v: Misskey.entities.DriveFolder['id']): void;
}>(); }>();
const hover = ref(false); const hover = ref(false);
@ -112,7 +110,6 @@ function onDrop(ev: DragEvent) {
const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE); const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE);
if (driveFile != null && driveFile !== '') { if (driveFile != null && driveFile !== '') {
const file = JSON.parse(driveFile); const file = JSON.parse(driveFile);
emit('removeFile', file.id);
misskeyApi('drive/files/update', { misskeyApi('drive/files/update', {
fileId: file.id, fileId: file.id,
folderId: props.folder ? props.folder.id : null, folderId: props.folder ? props.folder.id : null,
@ -126,7 +123,6 @@ function onDrop(ev: DragEvent) {
const folder = JSON.parse(driveFolder); const folder = JSON.parse(driveFolder);
// reject // reject
if (props.folder && folder.id === props.folder.id) return; if (props.folder && folder.id === props.folder.id) return;
emit('removeFolder', folder.id);
misskeyApi('drive/folders/update', { misskeyApi('drive/folders/update', {
folderId: folder.id, folderId: folder.id,
parentId: props.folder ? props.folder.id : null, parentId: props.folder ? props.folder.id : null,

View File

@ -13,8 +13,6 @@ SPDX-License-Identifier: AGPL-3.0-only
:parentFolder="folder" :parentFolder="folder"
@move="move" @move="move"
@upload="upload" @upload="upload"
@removeFile="removeFile"
@removeFolder="removeFolder"
/> />
<template v-for="f in hierarchyFolders"> <template v-for="f in hierarchyFolders">
<span :class="[$style.navPathItem, $style.navSeparator]"><i class="ti ti-chevron-right"></i></span> <span :class="[$style.navPathItem, $style.navSeparator]"><i class="ti ti-chevron-right"></i></span>
@ -24,8 +22,6 @@ SPDX-License-Identifier: AGPL-3.0-only
:class="[$style.navPathItem]" :class="[$style.navPathItem]"
@move="move" @move="move"
@upload="upload" @upload="upload"
@removeFile="removeFile"
@removeFolder="removeFolder"
/> />
</template> </template>
<span v-if="folder != null" :class="[$style.navPathItem, $style.navSeparator]"><i class="ti ti-chevron-right"></i></span> <span v-if="folder != null" :class="[$style.navPathItem, $style.navSeparator]"><i class="ti ti-chevron-right"></i></span>
@ -79,8 +75,6 @@ SPDX-License-Identifier: AGPL-3.0-only
@unchose="unchoseFolder" @unchose="unchoseFolder"
@move="move" @move="move"
@upload="upload" @upload="upload"
@removeFile="removeFile"
@removeFolder="removeFolder"
@dragstart="isDragSource = true" @dragstart="isDragSource = true"
@dragend="isDragSource = false" @dragend="isDragSource = false"
/> />
@ -257,9 +251,11 @@ function onFileDragstart(file: Misskey.entities.DriveFile, ev: DragEvent) {
selectedFiles.value.push(file); selectedFiles.value.push(file);
} }
if (ev.dataTransfer) {
ev.dataTransfer.effectAllowed = 'move'; ev.dataTransfer.effectAllowed = 'move';
ev.dataTransfer.setData(DATA_TRANSFER_DRIVE_FILES, JSON.stringify(selectedFiles.value)); ev.dataTransfer.setData(DATA_TRANSFER_DRIVE_FILES, JSON.stringify(selectedFiles.value));
} }
}
isDragSource.value = true; isDragSource.value = true;
} }
@ -327,7 +323,6 @@ function onDrop(ev: DragEvent) {
if (driveFile != null && driveFile !== '') { if (driveFile != null && driveFile !== '') {
const file = JSON.parse(driveFile); const file = JSON.parse(driveFile);
if (filesPaginator.items.value.some(f => f.id === file.id)) return; if (filesPaginator.items.value.some(f => f.id === file.id)) return;
removeFile(file.id);
misskeyApi('drive/files/update', { misskeyApi('drive/files/update', {
fileId: file.id, fileId: file.id,
folderId: folder.value ? folder.value.id : null, folderId: folder.value ? folder.value.id : null,
@ -343,7 +338,6 @@ function onDrop(ev: DragEvent) {
// reject // reject
if (folder.value && droppedFolder.id === folder.value.id) return false; if (folder.value && droppedFolder.id === folder.value.id) return false;
if (foldersPaginator.items.value.some(f => f.id === droppedFolder.id)) return false; if (foldersPaginator.items.value.some(f => f.id === droppedFolder.id)) return false;
removeFolder(droppedFolder.id);
misskeyApi('drive/folders/update', { misskeyApi('drive/folders/update', {
folderId: droppedFolder.id, folderId: droppedFolder.id,
parentId: folder.value ? folder.value.id : null, parentId: folder.value ? folder.value.id : null,
@ -542,16 +536,6 @@ async function moveFilesBulk() {
globalEvents.emit('driveFilesMoved', selectedFiles.value, toFolder[0]); globalEvents.emit('driveFilesMoved', selectedFiles.value, toFolder[0]);
} }
function removeFolder(folderToRemove: Misskey.entities.DriveFolder | string) {
const folderIdToRemove = typeof folderToRemove === 'object' ? folderToRemove.id : folderToRemove;
foldersPaginator.removeItem(folderIdToRemove);
}
function removeFile(file: Misskey.entities.DriveFile | string) {
const fileId = typeof file === 'object' ? file.id : file;
filesPaginator.removeItem(fileId);
}
function goRoot() { function goRoot() {
// root // root
if (folder.value == null) return; if (folder.value == null) return;