wip
This commit is contained in:
parent
db09744ce8
commit
4ff3cdde87
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,8 +251,10 @@ function onFileDragstart(file: Misskey.entities.DriveFile, ev: DragEvent) {
|
||||||
selectedFiles.value.push(file);
|
selectedFiles.value.push(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
ev.dataTransfer.effectAllowed = 'move';
|
if (ev.dataTransfer) {
|
||||||
ev.dataTransfer.setData(DATA_TRANSFER_DRIVE_FILES, JSON.stringify(selectedFiles.value));
|
ev.dataTransfer.effectAllowed = 'move';
|
||||||
|
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;
|
||||||
|
|
Loading…
Reference in New Issue