refactor: 返り値の型を明記、`selectDriveFolder`は`File`のほうに合わせるよう返り値を変更
This commit is contained in:
parent
1af3041b39
commit
c8c16c5357
|
@ -39,13 +39,13 @@ withDefaults(defineProps<{
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'done', r?: Misskey.entities.DriveFile[]): void;
|
(ev: 'done', r?: Misskey.entities.DriveFile[] | Misskey.entities.DriveFolder[]): void;
|
||||||
(ev: 'closed'): void;
|
(ev: 'closed'): void;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
|
const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
|
||||||
|
|
||||||
const selected = ref<Misskey.entities.DriveFile[]>([]);
|
const selected = ref<Misskey.entities.DriveFile[] | Misskey.entities.DriveFolder[]>([]);
|
||||||
|
|
||||||
function ok() {
|
function ok() {
|
||||||
emit('done', selected.value);
|
emit('done', selected.value);
|
||||||
|
@ -57,7 +57,7 @@ function cancel() {
|
||||||
dialog.value?.close();
|
dialog.value?.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onChangeSelection(files: Misskey.entities.DriveFile[]) {
|
function onChangeSelection(v: Misskey.entities.DriveFile[] | Misskey.entities.DriveFolder[]) {
|
||||||
selected.value = files;
|
selected.value = v;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -162,7 +162,12 @@ type EmitsExtractor<T> = {
|
||||||
[K in keyof T as K extends `onVnode${string}` ? never : K extends `on${infer E}` ? Uncapitalize<E> : K extends string ? never : K]: T[K];
|
[K in keyof T as K extends `onVnode${string}` ? never : K extends `on${infer E}` ? Uncapitalize<E> : K extends string ? never : K]: T[K];
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function popup<T extends Component>(component: T, props: ComponentProps<T>, events: ComponentEmit<T> = {} as ComponentEmit<T>, disposeEvent?: keyof ComponentEmit<T>) {
|
export async function popup<T extends Component>(
|
||||||
|
component: T,
|
||||||
|
props: ComponentProps<T>,
|
||||||
|
events: ComponentEmit<T> = {} as ComponentEmit<T>,
|
||||||
|
disposeEvent?: keyof ComponentEmit<T>,
|
||||||
|
): Promise<{ dispose: () => void }> {
|
||||||
markRaw(component);
|
markRaw(component);
|
||||||
|
|
||||||
const id = ++popupIdCount;
|
const id = ++popupIdCount;
|
||||||
|
@ -246,7 +251,9 @@ export function actions<T extends {
|
||||||
title?: string;
|
title?: string;
|
||||||
text?: string;
|
text?: string;
|
||||||
actions: T;
|
actions: T;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{
|
||||||
|
canceled: true; result: undefined;
|
||||||
|
} | {
|
||||||
canceled: false; result: T[number]['value'];
|
canceled: false; result: T[number]['value'];
|
||||||
}> {
|
}> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
@ -277,7 +284,9 @@ export function inputText(props: {
|
||||||
default?: string | null;
|
default?: string | null;
|
||||||
minLength?: number;
|
minLength?: number;
|
||||||
maxLength?: number;
|
maxLength?: number;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{
|
||||||
|
canceled: true; result: undefined;
|
||||||
|
} | {
|
||||||
canceled: false; result: string;
|
canceled: false; result: string;
|
||||||
}> {
|
}> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
@ -306,7 +315,9 @@ export function inputNumber(props: {
|
||||||
placeholder?: string | null;
|
placeholder?: string | null;
|
||||||
autocomplete?: string;
|
autocomplete?: string;
|
||||||
default?: number | null;
|
default?: number | null;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{
|
||||||
|
canceled: true; result: undefined;
|
||||||
|
} | {
|
||||||
canceled: false; result: number;
|
canceled: false; result: number;
|
||||||
}> {
|
}> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
@ -332,7 +343,9 @@ export function inputDate(props: {
|
||||||
text?: string;
|
text?: string;
|
||||||
placeholder?: string | null;
|
placeholder?: string | null;
|
||||||
default?: string | null;
|
default?: string | null;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{
|
||||||
|
canceled: true; result: undefined;
|
||||||
|
} | {
|
||||||
canceled: false; result: Date;
|
canceled: false; result: Date;
|
||||||
}> {
|
}> {
|
||||||
return new Promise(resolve => {
|
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; };
|
canceled: false; result: { password: string; token: string | null; };
|
||||||
}> {
|
}> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
@ -372,7 +387,9 @@ export function select<C = any>(props: {
|
||||||
value: C;
|
value: C;
|
||||||
text: string;
|
text: string;
|
||||||
}[];
|
}[];
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{
|
||||||
|
canceled: true; result: undefined;
|
||||||
|
} | {
|
||||||
canceled: false; result: C;
|
canceled: false; result: C;
|
||||||
}> {
|
}> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
@ -418,7 +435,7 @@ export function waiting(): Promise<void> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function form(title: string, form: any) {
|
export function form(title: string, form: any): Promise<unknown> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkFormDialog.vue')), { title, form }, {
|
popup(defineAsyncComponent(() => import('@/components/MkFormDialog.vue')), { title, form }, {
|
||||||
done: result => {
|
done: result => {
|
||||||
|
@ -456,7 +473,7 @@ export async function selectDriveFile(multiple: boolean): Promise<Misskey.entiti
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function selectDriveFolder(multiple: boolean) {
|
export async function selectDriveFolder(multiple: boolean): Promise<Misskey.entities.DriveFolder[]> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), {
|
||||||
type: 'folder',
|
type: 'folder',
|
||||||
|
@ -464,14 +481,14 @@ export async function selectDriveFolder(multiple: boolean) {
|
||||||
}, {
|
}, {
|
||||||
done: folders => {
|
done: folders => {
|
||||||
if (folders) {
|
if (folders) {
|
||||||
resolve(multiple ? folders : folders[0]);
|
resolve(folders);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}, 'closed');
|
}, 'closed');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function pickEmoji(src: HTMLElement | null, opts) {
|
export async function pickEmoji(src: HTMLElement | null, opts): Promise<unknown> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
popup(MkEmojiPickerDialog, {
|
popup(MkEmojiPickerDialog, {
|
||||||
src,
|
src,
|
||||||
|
|
|
@ -113,7 +113,7 @@ if (defaultStore.state.uploadFolder) {
|
||||||
|
|
||||||
function chooseUploadFolder() {
|
function chooseUploadFolder() {
|
||||||
os.selectDriveFolder(false).then(async folder => {
|
os.selectDriveFolder(false).then(async folder => {
|
||||||
defaultStore.set('uploadFolder', folder ? folder.id : null);
|
defaultStore.set('uploadFolder', folder[0] ? folder[0].id : null);
|
||||||
os.success();
|
os.success();
|
||||||
if (defaultStore.state.uploadFolder) {
|
if (defaultStore.state.uploadFolder) {
|
||||||
uploadFolder.value = await misskeyApi('drive/folders/show', {
|
uploadFolder.value = await misskeyApi('drive/folders/show', {
|
||||||
|
|
|
@ -93,10 +93,10 @@ const fetch = () => {
|
||||||
|
|
||||||
const choose = () => {
|
const choose = () => {
|
||||||
os.selectDriveFolder(false).then(folder => {
|
os.selectDriveFolder(false).then(folder => {
|
||||||
if (folder == null) {
|
if (folder[0] == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
widgetProps.folderId = folder.id;
|
widgetProps.folderId = folder[0].id;
|
||||||
save();
|
save();
|
||||||
fetch();
|
fetch();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue