diff --git a/cmd/gui/window/mainwindow/mainwindow.go b/cmd/gui/window/mainwindow/mainwindow.go index 19193fa..8570016 100644 --- a/cmd/gui/window/mainwindow/mainwindow.go +++ b/cmd/gui/window/mainwindow/mainwindow.go @@ -43,6 +43,14 @@ func Make(a fyne.App, d *data.Service) fyne.Window { toolbar := widget.NewToolbar( widget.NewToolbarAction(theme.FolderNewIcon(), func() { folderSelection := dialog.NewFolderOpen(func(lu fyne.ListableURI, err error) { + if err != nil { + d := dialog.NewError(fmt.Errorf("failed to open window: %w", err), w) + d.Show() + return + } + if lu == nil { + return + } confirmDialog := dialog.NewConfirm("Add", "Do you want to add and scan '"+lu.Path()+"'?", func(accepted bool) { if !accepted { return @@ -55,22 +63,32 @@ func Make(a fyne.App, d *data.Service) fyne.Window { go func() { gameID, err := d.Add(name, lu.Path(), "") if err != nil { - d := dialog.NewError(fmt.Errorf("failed to create metadata the directory: %w", err), w) - d.Show() + fyne.Do(func() { + d := dialog.NewError(fmt.Errorf("failed to create metadata the directory: %w", err), w) + d.Show() + loadingDialog.Hide() + }) return } _, err = d.Scan(gameID) if err != nil { - d := dialog.NewError(fmt.Errorf("failed to scan the directory: %w", err), w) - d.Show() + fyne.Do(func() { + d := dialog.NewError(fmt.Errorf("failed to scan the directory: %w", err), w) + d.Show() + loadingDialog.Hide() + }) return } games, err = d.AllGames() if err != nil { - d := dialog.NewError(fmt.Errorf("failed to load datastore: %w", err), w) - d.Show() + fyne.Do(func() { + d := dialog.NewError(fmt.Errorf("failed to load datastore: %w", err), w) + d.Show() + loadingDialog.Hide() + }) + return } fyne.Do(func() {