Update MkDrive.vue

This commit is contained in:
syuilo 2025-05-11 09:16:16 +09:00
parent 40c5cd0013
commit 4d185b49cd
1 changed files with 41 additions and 88 deletions

View File

@ -245,7 +245,9 @@ async function initialize() {
} }
function onStreamDriveFileCreated(file: Misskey.entities.DriveFile) { function onStreamDriveFileCreated(file: Misskey.entities.DriveFile) {
addFile(file, true); if (file.folderId === (folder.value?.id ?? null)) {
filesPaginator.prepend(file);
}
} }
function onDragover(ev: DragEvent) { function onDragover(ev: DragEvent) {
@ -354,55 +356,55 @@ function onDrop(ev: DragEvent) {
//#endregion //#endregion
} }
function urlUpload() { async function urlUpload() {
os.inputText({ const { canceled, result: url } = await os.inputText({
title: i18n.ts.uploadFromUrl, title: i18n.ts.uploadFromUrl,
type: 'url', type: 'url',
placeholder: i18n.ts.uploadFromUrlDescription, placeholder: i18n.ts.uploadFromUrlDescription,
}).then(({ canceled, result: url }) => { });
if (canceled || !url) return; if (canceled || !url) return;
misskeyApi('drive/files/upload-from-url', {
url: url,
folderId: folder.value ? folder.value.id : undefined,
});
os.alert({ await os.apiWithDialog('drive/files/upload-from-url', {
title: i18n.ts.uploadFromUrlRequested, url: url,
text: i18n.ts.uploadFromUrlMayTakeTime, folderId: folder.value ? folder.value.id : undefined,
}); });
os.alert({
title: i18n.ts.uploadFromUrlRequested,
text: i18n.ts.uploadFromUrlMayTakeTime,
}); });
} }
function createFolder() { async function createFolder() {
os.inputText({ const { canceled, result: name } = await os.inputText({
title: i18n.ts.createFolder, title: i18n.ts.createFolder,
placeholder: i18n.ts.folderName, placeholder: i18n.ts.folderName,
}).then(({ canceled, result: name }) => {
if (canceled || name == null) return;
misskeyApi('drive/folders/create', {
name: name,
parentId: folder.value ? folder.value.id : undefined,
}).then(createdFolder => {
addFolder(createdFolder, true);
});
}); });
if (canceled || name == null) return;
const createdFolder = await os.apiWithDialog('drive/folders/create', {
name: name,
parentId: folder.value ? folder.value.id : undefined,
});
foldersPaginator.prepend(createdFolder);
} }
function renameFolder(folderToRename: Misskey.entities.DriveFolder) { async function renameFolder(folderToRename: Misskey.entities.DriveFolder) {
os.inputText({ const { canceled, result: name } = await os.inputText({
title: i18n.ts.renameFolder, title: i18n.ts.renameFolder,
placeholder: i18n.ts.inputNewFolderName, placeholder: i18n.ts.inputNewFolderName,
default: folderToRename.name, default: folderToRename.name,
}).then(({ canceled, result: name }) => {
if (canceled) return;
misskeyApi('drive/folders/update', {
folderId: folderToRename.id,
name: name,
}).then(updatedFolder => {
// FIXME:
move(updatedFolder);
});
}); });
if (canceled) return;
const updatedFolder = await os.apiWithDialog('drive/folders/update', {
folderId: folderToRename.id,
name: name,
});
// FIXME:
move(updatedFolder);
} }
function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) { function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
@ -431,7 +433,9 @@ function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
function upload(file: File, folderToUpload?: Misskey.entities.DriveFolder | null, keepOriginal?: boolean) { function upload(file: File, folderToUpload?: Misskey.entities.DriveFolder | null, keepOriginal?: boolean) {
uploadFile(file, (folderToUpload && typeof folderToUpload === 'object') ? folderToUpload.id : null, undefined, keepOriginal).then(res => { uploadFile(file, (folderToUpload && typeof folderToUpload === 'object') ? folderToUpload.id : null, undefined, keepOriginal).then(res => {
addFile(res, true); if (res.folderId === (folder.value?.id ?? null)) {
filesPaginator.prepend(res);
}
}); });
} }
@ -524,67 +528,16 @@ async function moveFilesBulk() {
globalEvents.emit('driveFilesMoved', selectedFiles.value, toFolder[0]); globalEvents.emit('driveFilesMoved', selectedFiles.value, toFolder[0]);
} }
function addFolder(folderToAdd: Misskey.entities.DriveFolder, unshift = false) {
const current = folder.value ? folder.value.id : null;
if (current !== folderToAdd.parentId) return;
if (foldersPaginator.items.value.some(f => f.id === folderToAdd.id)) {
const exist = foldersPaginator.items.value.map(f => f.id).indexOf(folderToAdd.id);
foldersPaginator.items.value[exist] = folderToAdd;
return;
}
if (unshift) {
foldersPaginator.items.value.unshift(folderToAdd);
} else {
foldersPaginator.items.value.push(folderToAdd);
}
}
function addFile(fileToAdd: Misskey.entities.DriveFile, unshift = false) {
const current = folder.value ? folder.value.id : null;
if (current !== fileToAdd.folderId) return;
if (filesPaginator.items.value.some(f => f.id === fileToAdd.id)) {
const exist = filesPaginator.items.value.map(f => f.id).indexOf(fileToAdd.id);
filesPaginator.items.value[exist] = fileToAdd;
return;
}
if (unshift) {
filesPaginator.items.value.unshift(fileToAdd);
} else {
filesPaginator.items.value.push(fileToAdd);
}
}
function removeFolder(folderToRemove: Misskey.entities.DriveFolder | string) { function removeFolder(folderToRemove: Misskey.entities.DriveFolder | string) {
const folderIdToRemove = typeof folderToRemove === 'object' ? folderToRemove.id : folderToRemove; const folderIdToRemove = typeof folderToRemove === 'object' ? folderToRemove.id : folderToRemove;
foldersPaginator.items.value = foldersPaginator.items.value.filter(f => f.id !== folderIdToRemove); foldersPaginator.removeItem(folderIdToRemove);
} }
function removeFile(file: Misskey.entities.DriveFile | string) { function removeFile(file: Misskey.entities.DriveFile | string) {
const fileId = typeof file === 'object' ? file.id : file; const fileId = typeof file === 'object' ? file.id : file;
filesPaginator.items.value = filesPaginator.items.value.filter(f => f.id !== fileId); filesPaginator.removeItem(fileId);
} }
function appendFile(file: Misskey.entities.DriveFile) {
addFile(file);
}
function appendFolder(folderToAppend: Misskey.entities.DriveFolder) {
addFolder(folderToAppend);
}
/*
function prependFile(file: Misskey.entities.DriveFile) {
addFile(file, true);
}
function prependFolder(folderToPrepend: Misskey.entities.DriveFolder) {
addFolder(folderToPrepend, true);
}
*/
function goRoot() { function goRoot() {
// root // root
if (folder.value == null) return; if (folder.value == null) return;