From 18cb861b520eab6451f4aec7ef2c1dbc7119c65f Mon Sep 17 00:00:00 2001 From: Shubham Parihar Date: Tue, 30 Jan 2024 05:38:46 +0530 Subject: [PATCH] type: add OpenDialogReturn generic type (#919) * type: add OpenDialogReturn generic type * chore: run pnpm format * type: export OpenDialogReturn type * chore: run pnpm format --- plugins/dialog/guest-js/index.ts | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/plugins/dialog/guest-js/index.ts b/plugins/dialog/guest-js/index.ts index e53cfcf7..1f1b6135 100644 --- a/plugins/dialog/guest-js/index.ts +++ b/plugins/dialog/guest-js/index.ts @@ -98,18 +98,14 @@ interface ConfirmDialogOptions { cancelLabel?: string; } -async function open( - options?: OpenDialogOptions & { multiple?: false; directory?: false }, -): Promise; -async function open( - options?: OpenDialogOptions & { multiple?: true; directory?: false }, -): Promise; -async function open( - options?: OpenDialogOptions & { multiple?: false; directory?: true }, -): Promise; -async function open( - options?: OpenDialogOptions & { multiple?: true; directory?: true }, -): Promise; +type OpenDialogReturn = T["directory"] extends true + ? T["multiple"] extends true + ? string[] | null + : string | null + : T["multiple"] extends true + ? FileResponse[] | null + : FileResponse | null; + /** * Open a file/directory selection dialog. * @@ -162,9 +158,9 @@ async function open( * * @since 2.0.0 */ -async function open( - options: OpenDialogOptions = {}, -): Promise { +async function open( + options: T = {} as T, +): Promise> { if (typeof options === "object") { Object.freeze(options); } @@ -298,6 +294,7 @@ export type { DialogFilter, FileResponse, OpenDialogOptions, + OpenDialogReturn, SaveDialogOptions, MessageDialogOptions, ConfirmDialogOptions,