From 83d6dac7cf24145b236eeef346d29b648afc25fb Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 26 Jan 2021 06:40:41 +1100 Subject: [PATCH] Add appType to builds. Update server code to compile --- v2/internal/app/debug.go | 7 +++- v2/internal/app/desktop.go | 3 ++ v2/internal/app/server.go | 65 +++++++++++++++++++---------- v2/internal/webserver/websockets.go | 8 ++++ 4 files changed, 60 insertions(+), 23 deletions(-) diff --git a/v2/internal/app/debug.go b/v2/internal/app/debug.go index 41be6bd27..22bc7cdc0 100644 --- a/v2/internal/app/debug.go +++ b/v2/internal/app/debug.go @@ -12,8 +12,11 @@ import ( func (a *App) Init() error { // Indicate debug mode a.debug = true - // Enable dev tools - a.options.DevTools = true + + if a.appType == "desktop" { + // Enable dev tools + a.options.DevTools = true + } // Set log levels greeting := flag.String("loglevel", "debug", "Loglevel to use - Trace, Debug, Info, Warning, Error") diff --git a/v2/internal/app/desktop.go b/v2/internal/app/desktop.go index 35c7f6b2f..a7b15cfde 100644 --- a/v2/internal/app/desktop.go +++ b/v2/internal/app/desktop.go @@ -17,6 +17,8 @@ import ( // App defines a Wails application structure type App struct { + appType string + window *ffenestri.Application servicebus *servicebus.ServiceBus logger *logger.Logger @@ -80,6 +82,7 @@ func CreateApp(appoptions *options.App) (*App, error) { window := ffenestri.NewApplicationWithConfig(appoptions, myLogger, menuManager) result := &App{ + appType: "desktop", window: window, servicebus: servicebus.New(myLogger), logger: myLogger, diff --git a/v2/internal/app/server.go b/v2/internal/app/server.go index 0530de58f..24f7733bf 100644 --- a/v2/internal/app/server.go +++ b/v2/internal/app/server.go @@ -3,6 +3,7 @@ package app import ( + "github.com/wailsapp/wails/v2/pkg/options" "os" "path/filepath" @@ -10,6 +11,7 @@ import ( "github.com/wailsapp/wails/v2/internal/binding" "github.com/wailsapp/wails/v2/internal/logger" "github.com/wailsapp/wails/v2/internal/messagedispatcher" + "github.com/wailsapp/wails/v2/internal/runtime" "github.com/wailsapp/wails/v2/internal/servicebus" "github.com/wailsapp/wails/v2/internal/subsystem" "github.com/wailsapp/wails/v2/internal/webserver" @@ -17,12 +19,16 @@ import ( // App defines a Wails application structure type App struct { + appType string + binding *subsystem.Binding call *subsystem.Call event *subsystem.Event log *subsystem.Log runtime *subsystem.Runtime + options *options.App + bindings *binding.Bindings logger *logger.Logger dispatcher *messagedispatcher.Dispatcher @@ -30,28 +36,40 @@ type App struct { webserver *webserver.WebServer debug bool + + // Application Stores + loglevelStore *runtime.Store + appconfigStore *runtime.Store + + // Startup/Shutdown + startupCallback func(*runtime.Runtime) + shutdownCallback func() } // Create App -func CreateApp(options *Options) *App { - options.mergeDefaults() - // We ignore the inputs (for now) +func CreateApp(appoptions *options.App) (*App, error) { - // TODO: Allow logger output override on CLI - myLogger := logger.New(os.Stdout) - myLogger.SetLogLevel(logger.TRACE) + // Merge default options + options.MergeDefaults(appoptions) + + // Set up logger + myLogger := logger.New(appoptions.Logger) + myLogger.SetLogLevel(appoptions.LogLevel) result := &App{ - bindings: binding.NewBindings(myLogger), - logger: myLogger, - servicebus: servicebus.New(myLogger), - webserver: webserver.NewWebServer(myLogger), + appType: "server", + bindings: binding.NewBindings(myLogger), + logger: myLogger, + servicebus: servicebus.New(myLogger), + webserver: webserver.NewWebServer(myLogger), + startupCallback: appoptions.Startup, + shutdownCallback: appoptions.Shutdown, } // Initialise app result.Init() - return result + return result, nil } // Run the application @@ -88,8 +106,21 @@ func (a *App) Run() error { if debugMode { a.servicebus.Debug() } + + // Start the runtime + runtime, err := subsystem.NewRuntime(a.servicebus, a.logger, a.startupCallback, a.shutdownCallback) + if err != nil { + return err + } + a.runtime = runtime + a.runtime.Start() + + // Application Stores + a.loglevelStore = a.runtime.GoRuntime().Store.New("wails:loglevel", a.options.LogLevel) + a.appconfigStore = a.runtime.GoRuntime().Store.New("wails:appconfig", a.options) + a.servicebus.Start() - log, err := subsystem.NewLog(a.servicebus, a.logger) + log, err := subsystem.NewLog(a.servicebus, a.logger, a.loglevelStore) if err != nil { return err } @@ -102,14 +133,6 @@ func (a *App) Run() error { a.dispatcher = dispatcher a.dispatcher.Start() - // Start the runtime - runtime, err := subsystem.NewRuntime(a.servicebus, a.logger) - if err != nil { - return err - } - a.runtime = runtime - a.runtime.Start() - // Start the binding subsystem binding, err := subsystem.NewBinding(a.servicebus, a.logger, a.bindings, runtime.GoRuntime()) if err != nil { @@ -127,7 +150,7 @@ func (a *App) Run() error { a.event.Start() // Start the call subsystem - call, err := subsystem.NewCall(a.servicebus, a.logger, a.bindings.DB()) + call, err := subsystem.NewCall(a.servicebus, a.logger, a.bindings.DB(), a.runtime.GoRuntime()) if err != nil { return err } diff --git a/v2/internal/webserver/websockets.go b/v2/internal/webserver/websockets.go index 7e3b1c090..98a209bec 100644 --- a/v2/internal/webserver/websockets.go +++ b/v2/internal/webserver/websockets.go @@ -20,6 +20,14 @@ type WebClient struct { running bool } +func (wc *WebClient) SetTrayMenu(trayMenuJSON string) { + wc.logger.Info("Not implemented in server build") +} + +func (wc *WebClient) UpdateTrayMenuLabel(trayMenuJSON string) { + wc.logger.Info("Not implemented in server build") +} + func (wc *WebClient) MessageDialog(dialogOptions *dialog.MessageDialog, callbackID string) { wc.logger.Info("Not implemented in server build") }