diff --git a/packages/frontend/src/components/MkDrive.folder.vue b/packages/frontend/src/components/MkDrive.folder.vue index 2fa3972360..81b71dd41a 100644 --- a/packages/frontend/src/components/MkDrive.folder.vue +++ b/packages/frontend/src/components/MkDrive.folder.vue @@ -166,7 +166,7 @@ function onDrop(ev: DragEvent) { folderId: droppedFolder.id, parentId: props.folder.id, }).then(() => { - // noop + globalEvents.emit('driveFoldersMoved', [droppedFolder], props.folder); }).catch(err => { switch (err.code) { case 'RECURSIVE_NESTING': diff --git a/packages/frontend/src/components/MkDrive.navFolder.vue b/packages/frontend/src/components/MkDrive.navFolder.vue index 7be031f8ac..11890d89e8 100644 --- a/packages/frontend/src/components/MkDrive.navFolder.vue +++ b/packages/frontend/src/components/MkDrive.navFolder.vue @@ -113,6 +113,8 @@ function onDrop(ev: DragEvent) { misskeyApi('drive/folders/update', { folderId: droppedFolder.id, parentId: props.folder ? props.folder.id : null, + }).then(() => { + globalEvents.emit('driveFoldersMoved', [droppedFolder], props.folder ?? null); }); } } diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue index 06447d5a33..03762851e9 100644 --- a/packages/frontend/src/components/MkDrive.vue +++ b/packages/frontend/src/components/MkDrive.vue @@ -348,7 +348,7 @@ function onDrop(ev: DragEvent) { folderId: droppedFolder.id, parentId: folder.value ? folder.value.id : null, }).then(() => { - // noop + globalEvents.emit('driveFoldersMoved', [droppedFolder], folder.value); }).catch(err => { switch (err.code) { case 'RECURSIVE_NESTING': @@ -659,6 +659,15 @@ useGlobalEvent('driveFilesMoved', (files, to) => { } }); +useGlobalEvent('driveFoldersMoved', (folders, to) => { + for (const f of folders) { + foldersPaginator.removeItem(f.id); + } + if ((to?.id ?? null) === (folder.value?.id ?? null)) { + foldersPaginator.unshiftItems(folders); + } +}); + let connection: Misskey.ChannelConnection | null = null; onMounted(() => { diff --git a/packages/frontend/src/events.ts b/packages/frontend/src/events.ts index c1bbec724e..b4e97c654c 100644 --- a/packages/frontend/src/events.ts +++ b/packages/frontend/src/events.ts @@ -15,6 +15,7 @@ type Events = { noteDeleted: (noteId: Misskey.entities.Note['id']) => void; driveFileCreated: (file: Misskey.entities.DriveFile) => void; driveFilesMoved: (files: Misskey.entities.DriveFile[], to: Misskey.entities.DriveFolder | null) => void; + driveFoldersMoved: (folders: Misskey.entities.DriveFolder[], to: Misskey.entities.DriveFolder | null) => void; }; export const globalEvents = new EventEmitter();