From be0a9ddf6bf7e69d1515d4f34606885845d3b3f6 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Fri, 1 Jan 2021 12:39:59 +1100 Subject: [PATCH] Handle WailsInit() errors --- v2/internal/subsystem/binding.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/v2/internal/subsystem/binding.go b/v2/internal/subsystem/binding.go index c10c7dc35..8890a6319 100644 --- a/v2/internal/subsystem/binding.go +++ b/v2/internal/subsystem/binding.go @@ -5,6 +5,8 @@ import ( "github.com/wailsapp/wails/v2/internal/logger" "github.com/wailsapp/wails/v2/internal/runtime" "github.com/wailsapp/wails/v2/internal/servicebus" + "os" + "time" ) // Binding is the Binding subsystem. It manages all service bus messages @@ -24,6 +26,13 @@ type Binding struct { runtime *runtime.Runtime } +func showError(err error) { + // Add a slight delay so log buffer clears + time.Sleep(1 * time.Second) + println("\n\n\n\n\n\n") + println("Fatal Error in WailsInit(): " + err.Error()) +} + // NewBinding creates a new binding subsystem. Uses the given bindings db for reference. func NewBinding(bus *servicebus.ServiceBus, logger *logger.Logger, bindings *binding.Bindings, runtime *runtime.Runtime) (*Binding, error) { @@ -48,11 +57,13 @@ func NewBinding(bus *servicebus.ServiceBus, logger *logger.Logger, bindings *bin } // Call WailsInit methods once the frontend is loaded - // TODO: Double check that this is actually being emitted - // when we want it to be runtime.Events.On("wails:loaded", func(...interface{}) { result.logger.Trace("Calling WailsInit() methods") - result.CallWailsInit() + err := result.CallWailsInit() + if err != nil { + showError(err) + os.Exit(1) + } }) return result, nil @@ -108,6 +119,9 @@ func (b *Binding) CallWailsShutdown() error { } func (b *Binding) shutdown() { - b.CallWailsShutdown() + err := b.CallWailsShutdown() + if err != nil { + showError(err) + } b.logger.Trace("Shutdown") }