From c16bb9715fcd4a29d869e6c646026d707eaef498 Mon Sep 17 00:00:00 2001 From: "Lea\\Anthony" Date: Thu, 30 Dec 2021 17:34:06 +1100 Subject: [PATCH] Fix for bad default directories in dialog options. Fixes #1052 --- v2/pkg/runtime/dialog.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/v2/pkg/runtime/dialog.go b/v2/pkg/runtime/dialog.go index c8b6333a8..d53a89c15 100644 --- a/v2/pkg/runtime/dialog.go +++ b/v2/pkg/runtime/dialog.go @@ -2,7 +2,9 @@ package runtime import ( "context" + "fmt" "github.com/wailsapp/wails/v2/internal/frontend" + "github.com/wailsapp/wails/v2/internal/fs" ) // FileFilter defines a filter for dialog boxes @@ -29,24 +31,44 @@ type MessageDialogOptions = frontend.MessageDialogOptions // OpenDirectoryDialog prompts the user to select a directory func OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error) { appFrontend := getFrontend(ctx) + if dialogOptions.DefaultDirectory != "" { + if !fs.DirExists(dialogOptions.DefaultDirectory) { + return "", fmt.Errorf("default directory '%s' does not exist", dialogOptions.DefaultDirectory) + } + } return appFrontend.OpenDirectoryDialog(dialogOptions) } // OpenFileDialog prompts the user to select a file func OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error) { appFrontend := getFrontend(ctx) + if dialogOptions.DefaultDirectory != "" { + if !fs.DirExists(dialogOptions.DefaultDirectory) { + return "", fmt.Errorf("default directory '%s' does not exist", dialogOptions.DefaultDirectory) + } + } return appFrontend.OpenFileDialog(dialogOptions) } // OpenMultipleFilesDialog prompts the user to select a file func OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error) { appFrontend := getFrontend(ctx) + if dialogOptions.DefaultDirectory != "" { + if !fs.DirExists(dialogOptions.DefaultDirectory) { + return nil, fmt.Errorf("default directory '%s' does not exist", dialogOptions.DefaultDirectory) + } + } return appFrontend.OpenMultipleFilesDialog(dialogOptions) } // SaveFileDialog prompts the user to select a file func SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error) { appFrontend := getFrontend(ctx) + if dialogOptions.DefaultDirectory != "" { + if !fs.DirExists(dialogOptions.DefaultDirectory) { + return "", fmt.Errorf("default directory '%s' does not exist", dialogOptions.DefaultDirectory) + } + } return appFrontend.SaveFileDialog(dialogOptions) }