diff --git a/v2/internal/app/default.go b/v2/internal/app/default.go index 8af8e415e..a2a0eb09b 100644 --- a/v2/internal/app/default.go +++ b/v2/internal/app/default.go @@ -8,9 +8,10 @@ package app // will be unknown and the application will not work as expected. import ( - "github.com/wailsapp/wails/v2/internal/logger" "os" + "github.com/wailsapp/wails/v2/internal/logger" + "github.com/wailsapp/wails/v2/pkg/options" ) @@ -38,7 +39,3 @@ func (a *App) Run() error { os.Exit(1) return nil } - -// Bind the dummy interface -func (a *App) Bind(_ interface{}) { -} diff --git a/v2/internal/app/desktop.go b/v2/internal/app/desktop.go index a7b15cfde..c8e9336d6 100644 --- a/v2/internal/app/desktop.go +++ b/v2/internal/app/desktop.go @@ -86,7 +86,7 @@ func CreateApp(appoptions *options.App) (*App, error) { window: window, servicebus: servicebus.New(myLogger), logger: myLogger, - bindings: binding.NewBindings(myLogger), + bindings: binding.NewBindings(myLogger, appoptions.Bind), menuManager: menuManager, startupCallback: appoptions.Startup, shutdownCallback: appoptions.Shutdown, @@ -216,14 +216,3 @@ func (a *App) Run() error { return result } - -// Bind a struct to the application by passing in -// a pointer to it -func (a *App) Bind(structPtr interface{}) { - - // Add the struct to the bindings - err := a.bindings.Add(structPtr) - if err != nil { - a.logger.Fatal("Error during binding: " + err.Error()) - } -} diff --git a/v2/internal/app/hybrid.go b/v2/internal/app/hybrid.go index d273e2610..8c95c2879 100644 --- a/v2/internal/app/hybrid.go +++ b/v2/internal/app/hybrid.go @@ -75,7 +75,7 @@ func CreateApp(options *Options) *App { webserver: webserver.NewWebServer(myLogger), servicebus: servicebus.New(myLogger), logger: myLogger, - bindings: binding.NewBindings(myLogger), + bindings: binding.NewBindings(myLogger, options.Bind), } // Initialise the app @@ -192,14 +192,3 @@ func (a *App) Run() error { return cli.Run() } - -// Bind a struct to the application by passing in -// a pointer to it -func (a *App) Bind(structPtr interface{}) { - - // Add the struct to the bindings - err := a.bindings.Add(structPtr) - if err != nil { - a.logger.Fatal("Error during binding: " + err.Error()) - } -} diff --git a/v2/internal/app/server.go b/v2/internal/app/server.go index 24f7733bf..52b8ca28a 100644 --- a/v2/internal/app/server.go +++ b/v2/internal/app/server.go @@ -3,10 +3,11 @@ package app import ( - "github.com/wailsapp/wails/v2/pkg/options" "os" "path/filepath" + "github.com/wailsapp/wails/v2/pkg/options" + "github.com/leaanthony/clir" "github.com/wailsapp/wails/v2/internal/binding" "github.com/wailsapp/wails/v2/internal/logger" @@ -58,7 +59,7 @@ func CreateApp(appoptions *options.App) (*App, error) { result := &App{ appType: "server", - bindings: binding.NewBindings(myLogger), + bindings: binding.NewBindings(myLogger, options.Bind), logger: myLogger, servicebus: servicebus.New(myLogger), webserver: webserver.NewWebServer(myLogger), @@ -170,14 +171,3 @@ func (a *App) Run() error { return cli.Run() } - -// Bind a struct to the application by passing in -// a pointer to it -func (a *App) Bind(structPtr interface{}) { - - // Add the struct to the bindings - err := a.bindings.Add(structPtr) - if err != nil { - a.logger.Fatal("Error during binding: " + err.Error()) - } -} diff --git a/v2/internal/binding/binding.go b/v2/internal/binding/binding.go index 6e831fadd..3159f1628 100755 --- a/v2/internal/binding/binding.go +++ b/v2/internal/binding/binding.go @@ -13,11 +13,21 @@ type Bindings struct { } // NewBindings returns a new Bindings object -func NewBindings(logger *logger.Logger) *Bindings { - return &Bindings{ +func NewBindings(logger *logger.Logger, structPointersToBind []interface{}) *Bindings { + result := &Bindings{ db: newDB(), logger: logger.CustomLogger("Bindings"), } + + // Add the structs to bind + for _, ptr := range structPointersToBind { + err := result.Add(ptr) + if err != nil { + logger.Fatal("Error during binding: " + err.Error()) + } + } + + return result } // Add the given struct methods to the Bindings diff --git a/v2/pkg/options/options.go b/v2/pkg/options/options.go index 0c5d42c72..1deefcd71 100644 --- a/v2/pkg/options/options.go +++ b/v2/pkg/options/options.go @@ -1,11 +1,12 @@ package options import ( - wailsruntime "github.com/wailsapp/wails/v2/internal/runtime" - "github.com/wailsapp/wails/v2/pkg/menu" "log" "runtime" + wailsruntime "github.com/wailsapp/wails/v2/internal/runtime" + "github.com/wailsapp/wails/v2/pkg/menu" + "github.com/imdario/mergo" "github.com/wailsapp/wails/v2/pkg/logger" "github.com/wailsapp/wails/v2/pkg/options/mac" @@ -33,6 +34,7 @@ type App struct { LogLevel logger.LogLevel Startup func(*wailsruntime.Runtime) `json:"-"` Shutdown func() `json:"-"` + Bind []interface{} } // MergeDefaults will set the minimum default values for an application