This commit is contained in:
syuilo 2025-05-13 14:20:43 +09:00
parent 6c7f24fbb8
commit 90c40cd153
6 changed files with 39 additions and 24 deletions

View File

@ -316,9 +316,9 @@ function onDrop(ev: DragEvent) {
//
if (ev.dataTransfer.files.length > 0) {
for (const file of Array.from(ev.dataTransfer.files)) {
upload(file, folder.value);
}
os.launchUploader(Array.from(ev.dataTransfer.files), {
folderId: folder.value?.id ?? null,
});
return;
}

View File

@ -729,7 +729,7 @@ function onDrop(ev: DragEvent): void {
//
if (ev.dataTransfer && ev.dataTransfer.files.length > 0) {
ev.preventDefault();
for (const x of Array.from(ev.dataTransfer.files)) upload(x);
os.launchUploader(Array.from(ev.dataTransfer.files), {});
return;
}

View File

@ -773,3 +773,22 @@ export function checkExistence(fileData: ArrayBuffer): Promise<any> {
});
});
}*/
export function launchUploader(
files: File[],
options?: {
folderId?: string | null;
},
): Promise<Misskey.entities.DriveFile[]> {
return new Promise((res, rej) => {
const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkUploaderDialog.vue')), {
files: markRaw(files),
folderId: options?.folderId,
}, {
done: driveFiles => {
res(driveFiles);
},
closed: () => dispose(),
});
});
}

View File

@ -128,7 +128,7 @@ function onDrop(ev: DragEvent): void {
//
if (ev.dataTransfer.files.length === 1) {
ev.preventDefault();
upload(ev.dataTransfer.files[0]);
os.launchUploader([Array.from(ev.dataTransfer.files)[0]], {});
return;
} else if (ev.dataTransfer.files.length > 1) {
ev.preventDefault();
@ -173,7 +173,11 @@ function chooseFile(ev: MouseEvent) {
function onChangeFile() {
if (fileEl.value == null || fileEl.value.files == null) return;
if (fileEl.value.files[0]) upload(fileEl.value.files[0]);
if (fileEl.value.files[0]) {
os.launchUploader(Array.from(fileEl.value.files), {}).then(driveFiles => {
file.value = driveFiles[0];
});
}
}
function send() {

View File

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { defineAsyncComponent, markRaw, ref } from 'vue';
import { } from 'vue';
import * as Misskey from 'misskey-js';
import * as os from '@/os.js';
import { misskeyApi } from '@/utility/misskey-api.js';
@ -12,30 +12,22 @@ import { i18n } from '@/i18n.js';
import { prefer } from '@/preferences.js';
export function chooseFileFromPc(
multiple: boolean,
options?: {
uploadFolder?: string | null;
nameConverter?: (file: File) => string | undefined;
},
options: {
multiple?: boolean;
folderId?: string | null;
} = {},
): Promise<Misskey.entities.DriveFile[]> {
const uploadFolder = options?.uploadFolder ?? prefer.s.uploadFolder;
const nameConverter = options?.nameConverter ?? (() => undefined);
return new Promise((res, rej) => {
const input = window.document.createElement('input');
input.type = 'file';
input.multiple = multiple;
input.multiple = options.multiple ?? false;
input.onchange = () => {
if (!input.files) return res([]);
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkUploadDialog.vue')), {
files: markRaw(Array.from(input.files)),
folderId: uploadFolder,
}, {
done: driveFiles => {
res(driveFiles);
},
closed: () => dispose(),
os.launchUploader(Array.from(input.files), {
folderId: options.folderId,
}).then(driveFiles => {
res(driveFiles);
});
// 一応廃棄