From c8c16c5357ba0dad4660f85dd3c5b89068f0f91b Mon Sep 17 00:00:00 2001 From: zyoshoka Date: Wed, 7 Feb 2024 00:43:15 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=BF=94=E3=82=8A=E5=80=A4?= =?UTF-8?q?=E3=81=AE=E5=9E=8B=E3=82=92=E6=98=8E=E8=A8=98=E3=80=81`selectDr?= =?UTF-8?q?iveFolder`=E3=81=AF`File`=E3=81=AE=E3=81=BB=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=90=88=E3=82=8F=E3=81=9B=E3=82=8B=E3=82=88=E3=81=86=E8=BF=94?= =?UTF-8?q?=E3=82=8A=E5=80=A4=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/MkDriveSelectDialog.vue | 8 ++-- packages/frontend/src/os.ts | 39 +++++++++++++------ .../frontend/src/pages/settings/drive.vue | 2 +- .../frontend/src/widgets/WidgetSlideshow.vue | 4 +- 4 files changed, 35 insertions(+), 18 deletions(-) diff --git a/packages/frontend/src/components/MkDriveSelectDialog.vue b/packages/frontend/src/components/MkDriveSelectDialog.vue index e65f4dd403..cd756d50ff 100644 --- a/packages/frontend/src/components/MkDriveSelectDialog.vue +++ b/packages/frontend/src/components/MkDriveSelectDialog.vue @@ -39,13 +39,13 @@ withDefaults(defineProps<{ }); const emit = defineEmits<{ - (ev: 'done', r?: Misskey.entities.DriveFile[]): void; + (ev: 'done', r?: Misskey.entities.DriveFile[] | Misskey.entities.DriveFolder[]): void; (ev: 'closed'): void; }>(); const dialog = shallowRef>(); -const selected = ref([]); +const selected = ref([]); function ok() { emit('done', selected.value); @@ -57,7 +57,7 @@ function cancel() { dialog.value?.close(); } -function onChangeSelection(files: Misskey.entities.DriveFile[]) { - selected.value = files; +function onChangeSelection(v: Misskey.entities.DriveFile[] | Misskey.entities.DriveFolder[]) { + selected.value = v; } diff --git a/packages/frontend/src/os.ts b/packages/frontend/src/os.ts index f04aced4db..77d74b0bef 100644 --- a/packages/frontend/src/os.ts +++ b/packages/frontend/src/os.ts @@ -162,7 +162,12 @@ type EmitsExtractor = { [K in keyof T as K extends `onVnode${string}` ? never : K extends `on${infer E}` ? Uncapitalize : K extends string ? never : K]: T[K]; }; -export async function popup(component: T, props: ComponentProps, events: ComponentEmit = {} as ComponentEmit, disposeEvent?: keyof ComponentEmit) { +export async function popup( + component: T, + props: ComponentProps, + events: ComponentEmit = {} as ComponentEmit, + disposeEvent?: keyof ComponentEmit, +): Promise<{ dispose: () => void }> { markRaw(component); const id = ++popupIdCount; @@ -246,7 +251,9 @@ export function actions { return new Promise(resolve => { @@ -277,7 +284,9 @@ export function inputText(props: { default?: string | null; minLength?: number; maxLength?: number; -}): Promise<{ canceled: true; result: undefined; } | { +}): Promise<{ + canceled: true; result: undefined; +} | { canceled: false; result: string; }> { return new Promise(resolve => { @@ -306,7 +315,9 @@ export function inputNumber(props: { placeholder?: string | null; autocomplete?: string; default?: number | null; -}): Promise<{ canceled: true; result: undefined; } | { +}): Promise<{ + canceled: true; result: undefined; +} | { canceled: false; result: number; }> { return new Promise(resolve => { @@ -332,7 +343,9 @@ export function inputDate(props: { text?: string; placeholder?: string | null; default?: string | null; -}): Promise<{ canceled: true; result: undefined; } | { +}): Promise<{ + canceled: true; result: undefined; +} | { canceled: false; result: Date; }> { return new Promise(resolve => { @@ -352,7 +365,9 @@ export function inputDate(props: { }); } -export function authenticateDialog(): Promise<{ canceled: true; result: undefined; } | { +export function authenticateDialog(): Promise<{ + canceled: true; result: undefined; +} | { canceled: false; result: { password: string; token: string | null; }; }> { return new Promise(resolve => { @@ -372,7 +387,9 @@ export function select(props: { value: C; text: string; }[]; -}): Promise<{ canceled: true; result: undefined; } | { +}): Promise<{ + canceled: true; result: undefined; +} | { canceled: false; result: C; }> { return new Promise(resolve => { @@ -418,7 +435,7 @@ export function waiting(): Promise { }); } -export function form(title: string, form: any) { +export function form(title: string, form: any): Promise { return new Promise(resolve => { popup(defineAsyncComponent(() => import('@/components/MkFormDialog.vue')), { title, form }, { done: result => { @@ -456,7 +473,7 @@ export async function selectDriveFile(multiple: boolean): Promise { return new Promise(resolve => { popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), { type: 'folder', @@ -464,14 +481,14 @@ export async function selectDriveFolder(multiple: boolean) { }, { done: folders => { if (folders) { - resolve(multiple ? folders : folders[0]); + resolve(folders); } }, }, 'closed'); }); } -export async function pickEmoji(src: HTMLElement | null, opts) { +export async function pickEmoji(src: HTMLElement | null, opts): Promise { return new Promise(resolve => { popup(MkEmojiPickerDialog, { src, diff --git a/packages/frontend/src/pages/settings/drive.vue b/packages/frontend/src/pages/settings/drive.vue index c3ce89d144..1c0e182080 100644 --- a/packages/frontend/src/pages/settings/drive.vue +++ b/packages/frontend/src/pages/settings/drive.vue @@ -113,7 +113,7 @@ if (defaultStore.state.uploadFolder) { function chooseUploadFolder() { os.selectDriveFolder(false).then(async folder => { - defaultStore.set('uploadFolder', folder ? folder.id : null); + defaultStore.set('uploadFolder', folder[0] ? folder[0].id : null); os.success(); if (defaultStore.state.uploadFolder) { uploadFolder.value = await misskeyApi('drive/folders/show', { diff --git a/packages/frontend/src/widgets/WidgetSlideshow.vue b/packages/frontend/src/widgets/WidgetSlideshow.vue index f2fc24ddf7..a98f6fb8a1 100644 --- a/packages/frontend/src/widgets/WidgetSlideshow.vue +++ b/packages/frontend/src/widgets/WidgetSlideshow.vue @@ -93,10 +93,10 @@ const fetch = () => { const choose = () => { os.selectDriveFolder(false).then(folder => { - if (folder == null) { + if (folder[0] == null) { return; } - widgetProps.folderId = folder.id; + widgetProps.folderId = folder[0].id; save(); fetch(); });