This commit is contained in:
syuilo 2025-05-13 21:04:22 +09:00
parent cfd95ce9ac
commit 0126523bc4
4 changed files with 73 additions and 21 deletions

View File

@ -147,7 +147,11 @@ function onDrop(ev: DragEvent) {
fileIds: droppedData.map(f => f.id),
folderId: props.folder.id,
}).then(() => {
globalEvents.emit('driveFilesMoved', droppedData, props.folder);
globalEvents.emit('driveFilesUpdated', droppedData.map(x => ({
...x,
folderId: props.folder.id,
folder: props.folder,
})));
});
}
}
@ -166,7 +170,11 @@ function onDrop(ev: DragEvent) {
folderId: droppedFolder.id,
parentId: props.folder.id,
}).then(() => {
globalEvents.emit('driveFoldersMoved', [droppedFolder], props.folder);
globalEvents.emit('driveFoldersUpdated', [droppedFolder].map(x => ({
...x,
parentId: props.folder.id,
parent: props.folder,
})));
}).catch(err => {
switch (err.code) {
case 'RECURSIVE_NESTING':
@ -216,6 +224,11 @@ function rename() {
misskeyApi('drive/folders/update', {
folderId: props.folder.id,
name: name,
}).then(() => {
globalEvents.emit('driveFoldersUpdated', [{
...props.folder,
name: name,
}]);
});
});
}
@ -227,6 +240,12 @@ function move() {
misskeyApi('drive/folders/update', {
folderId: props.folder.id,
parentId: folder[0] ? folder[0].id : null,
}).then(() => {
globalEvents.emit('driveFoldersUpdated', [{
...props.folder,
parentId: folder[0] ? folder[0].id : null,
parent: folder[0] ?? null,
}]);
});
});
}

View File

@ -97,7 +97,11 @@ function onDrop(ev: DragEvent) {
fileIds: droppedData.map(f => f.id),
folderId: props.folder ? props.folder.id : null,
}).then(() => {
globalEvents.emit('driveFilesMoved', droppedData, props.folder ?? null);
globalEvents.emit('driveFilesUpdated', droppedData.map(x => ({
...x,
folderId: props.folder ? props.folder.id : null,
folder: props.folder ?? null,
})));
});
}
}
@ -114,7 +118,11 @@ function onDrop(ev: DragEvent) {
folderId: droppedFolder.id,
parentId: props.folder ? props.folder.id : null,
}).then(() => {
globalEvents.emit('driveFoldersMoved', [droppedFolder], props.folder ?? null);
globalEvents.emit('driveFoldersUpdated', [droppedFolder].map(x => ({
...x,
parentId: props.folder ? props.folder.id : null,
parent: props.folder ?? null,
})));
});
}
}

View File

@ -330,7 +330,11 @@ function onDrop(ev: DragEvent) {
fileIds: droppedData.map(f => f.id),
folderId: folder.value ? folder.value.id : null,
}).then(() => {
globalEvents.emit('driveFilesMoved', droppedData, folder.value);
globalEvents.emit('driveFilesUpdated', droppedData.map(x => ({
...x,
folderId: folder.value ? folder.value.id : null,
folder: folder.value,
})));
});
}
}
@ -348,7 +352,11 @@ function onDrop(ev: DragEvent) {
folderId: droppedFolder.id,
parentId: folder.value ? folder.value.id : null,
}).then(() => {
globalEvents.emit('driveFoldersMoved', [droppedFolder], folder.value);
globalEvents.emit('driveFoldersUpdated', [droppedFolder].map(x => ({
...x,
parentId: folder.value ? folder.value.id : null,
parent: folder.value,
})));
}).catch(err => {
switch (err.code) {
case 'RECURSIVE_NESTING':
@ -418,8 +426,7 @@ async function renameFolder(folderToRename: Misskey.entities.DriveFolder) {
name: name,
});
// FIXME:
cd(updatedFolder);
globalEvents.emit('driveFoldersUpdated', [updatedFolder]);
}
function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
@ -533,7 +540,11 @@ async function moveFilesBulk() {
folderId: toFolder[0] ? toFolder[0].id : null,
});
globalEvents.emit('driveFilesMoved', selectedFiles.value, toFolder[0]);
globalEvents.emit('driveFilesUpdated', selectedFiles.value.map(x => ({
...x,
folderId: toFolder[0] ? toFolder[0].id : null,
folder: toFolder[0] ?? null,
})));
}
function goRoot() {
@ -651,12 +662,19 @@ useGlobalEvent('driveFileCreated', (file) => {
}
});
useGlobalEvent('driveFilesMoved', (files, to) => {
useGlobalEvent('driveFilesUpdated', (files) => {
for (const f of files) {
filesPaginator.removeItem(f.id);
}
if ((to?.id ?? null) === (folder.value?.id ?? null)) {
filesPaginator.unshiftItems(files);
if (filesPaginator.items.value.some(x => x.id === f.id)) {
if (f.folderId === (folder.value?.id ?? null)) {
filesPaginator.updateItem(f.id, () => f);
} else {
filesPaginator.removeItem(f.id);
}
} else {
if (f.folderId === (folder.value?.id ?? null)) {
filesPaginator.prepend(f);
}
}
}
});
@ -666,12 +684,19 @@ useGlobalEvent('driveFilesDeleted', (files) => {
}
});
useGlobalEvent('driveFoldersMoved', (folders, to) => {
useGlobalEvent('driveFoldersUpdated', (folders) => {
for (const f of folders) {
foldersPaginator.removeItem(f.id);
}
if ((to?.id ?? null) === (folder.value?.id ?? null)) {
foldersPaginator.unshiftItems(folders);
if (foldersPaginator.items.value.some(x => x.id === f.id)) {
if (f.parentId === (folder.value?.id ?? null)) {
foldersPaginator.updateItem(f.id, () => f);
} else {
foldersPaginator.removeItem(f.id);
}
} else {
if (f.parentId === (folder.value?.id ?? null)) {
foldersPaginator.prepend(f);
}
}
}
});

View File

@ -14,9 +14,9 @@ type Events = {
notePosted: (note: Misskey.entities.Note) => void;
noteDeleted: (noteId: Misskey.entities.Note['id']) => void;
driveFileCreated: (file: Misskey.entities.DriveFile) => void;
driveFilesMoved: (files: Misskey.entities.DriveFile[], to: Misskey.entities.DriveFolder | null) => void;
driveFilesUpdated: (files: Misskey.entities.DriveFile[]) => void;
driveFilesDeleted: (files: Misskey.entities.DriveFile[]) => void;
driveFoldersMoved: (folders: Misskey.entities.DriveFolder[], to: Misskey.entities.DriveFolder | null) => void;
driveFoldersUpdated: (folders: Misskey.entities.DriveFolder[]) => void;
driveFoldersDeleted: (folders: Misskey.entities.DriveFolder[]) => void;
};