From c82facd6ffd90c429f92d4a3df3ad189eeaa2db1 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sat, 20 Jan 2024 11:50:20 +1100 Subject: [PATCH] Move startURL calculation to assetserver --- v3/internal/assetserver/assetserver.go | 35 +++++++++++++++++++ .../assetserver/assetserver_windows.go | 3 ++ v3/pkg/application/webview_window_windows.go | 33 ++--------------- 3 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 v3/internal/assetserver/assetserver_windows.go diff --git a/v3/internal/assetserver/assetserver.go b/v3/internal/assetserver/assetserver.go index 4d5f04498..fcaa38a4d 100644 --- a/v3/internal/assetserver/assetserver.go +++ b/v3/internal/assetserver/assetserver.go @@ -6,6 +6,8 @@ import ( "net/http" "net/http/httptest" "net/http/httputil" + "net/url" + "path" "strings" "time" ) @@ -165,3 +167,36 @@ func (a *AssetServer) AddPluginScript(pluginName string, script string) { pluginScriptName := fmt.Sprintf("/wails/plugin/%s.js", pluginName) a.pluginScripts[pluginScriptName] = script } + +func GetStartURL(userURL string) (string, error) { + devServerURL := GetDevServerURL() + if devServerURL != "" { + // Parse the port + parsedURL, err := url.Parse(devServerURL) + if err != nil { + return "", fmt.Errorf("Error parsing environment variable 'FRONTEND_DEVSERVER_URL`: " + err.Error() + ". Please check your `Taskfile.yml` file") + } + port := parsedURL.Port() + if port != "" { + startURL += ":" + port + } + } else { + if userURL != "" { + // parse the url + parsedURL, err := url.Parse(userURL) + if err != nil { + return "", fmt.Errorf("Error parsing URL: " + err.Error()) + } + if parsedURL.Scheme == "" { + startURL = path.Join(startURL, userURL) + // if the original URL had a trailing slash, add it back + if strings.HasSuffix(userURL, "/") { + startURL = startURL + "/" + } + } else { + startURL = userURL + } + } + } + return startURL, nil +} diff --git a/v3/internal/assetserver/assetserver_windows.go b/v3/internal/assetserver/assetserver_windows.go new file mode 100644 index 000000000..288a213da --- /dev/null +++ b/v3/internal/assetserver/assetserver_windows.go @@ -0,0 +1,3 @@ +package assetserver + +var startURL = "http://wails.localhost" diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index 4db536b7a..a546cf84a 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -7,7 +7,6 @@ import ( "fmt" "github.com/wailsapp/wails/v3/internal/assetserver" "net/url" - "path" "strconv" "strings" "sync" @@ -1457,35 +1456,9 @@ func (w *windowsWebviewWindow) setupChromium() { chromium.Init(script) chromium.NavigateToString(w.parent.options.HTML) } else { - var startURL = "http://wails.localhost" - devServerURL := assetserver.GetDevServerURL() - if devServerURL != "" { - // Parse the port - parsedURL, err := url.Parse(devServerURL) - if err != nil { - globalApplication.fatal("Error parsing environment variable 'FRONTEND_DEVSERVER_URL`: " + err.Error() + ". Please check your `Taskfile.yml` file") - } - port := parsedURL.Port() - if port != "" { - startURL += ":" + port - } - } else { - if w.parent.options.URL != "" { - // parse the url - parsedURL, err := url.Parse(w.parent.options.URL) - if err != nil { - globalApplication.fatal("Error parsing URL: " + err.Error()) - } - if parsedURL.Scheme == "" { - startURL = path.Join(startURL, w.parent.options.URL) - // if the original URL had a trailing slash, add it back - if strings.HasSuffix(w.parent.options.URL, "/") { - startURL = startURL + "/" - } - } else { - startURL = w.parent.options.URL - } - } + startURL, err := assetserver.GetStartURL(w.parent.options.URL) + if err != nil { + globalApplication.fatal(err.Error()) } chromium.Navigate(startURL) }