From 95369d7c3d95c2b3f1c2f326182b8290283c9d76 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 20 Oct 2020 09:10:09 +1100 Subject: [PATCH] Unify Browser runtime --- .../messagedispatcher/message/runtime.go | 7 ++++--- v2/internal/runtime/browser.go | 10 +++++----- v2/internal/runtime/js/core/browser.js | 18 ++++-------------- v2/internal/runtime/js/runtime/runtime.d.ts | 3 +-- v2/internal/subsystem/runtime.go | 10 +++++----- 5 files changed, 19 insertions(+), 29 deletions(-) diff --git a/v2/internal/messagedispatcher/message/runtime.go b/v2/internal/messagedispatcher/message/runtime.go index 6b8feea1..fc3a4425 100644 --- a/v2/internal/messagedispatcher/message/runtime.go +++ b/v2/internal/messagedispatcher/message/runtime.go @@ -22,13 +22,14 @@ func runtimeMessageParser(message string) (*parsedMessage, error) { // processBrowserMessage expects messages of the following format: // RB +// O = Open func processBrowserMessage(message string) (*parsedMessage, error) { method := message[2] switch method { - case 'U': + case 'O': // Open URL - url := message[3:] - return &parsedMessage{Topic: "runtime:browser:openurl", Data: url}, nil + target := message[3:] + return &parsedMessage{Topic: "runtime:browser:open", Data: target}, nil } return nil, fmt.Errorf("unknown browser message: %s", message) diff --git a/v2/internal/runtime/browser.go b/v2/internal/runtime/browser.go index c4fb8b5f..0b1941ba 100644 --- a/v2/internal/runtime/browser.go +++ b/v2/internal/runtime/browser.go @@ -8,23 +8,23 @@ import ( // Browser defines all browser related operations type Browser interface { - Open(url string) error + Open(target string) error } type browser struct{} // Open a url / file using the system default application // Credit: https://gist.github.com/hyg/9c4afcd91fe24316cbf0 -func (b *browser) Open(url string) error { +func (b *browser) Open(target string) error { var err error switch runtime.GOOS { case "linux": - err = exec.Command("xdg-open", url).Start() + err = exec.Command("xdg-open", target).Start() case "windows": - err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start() + err = exec.Command("rundll32", "url.dll,FileProtocolHandler", target).Start() case "darwin": - err = exec.Command("open", url).Start() + err = exec.Command("open", target).Start() default: err = fmt.Errorf("unsupported platform") } diff --git a/v2/internal/runtime/js/core/browser.js b/v2/internal/runtime/js/core/browser.js index 46c4e16b..2d05d072 100644 --- a/v2/internal/runtime/js/core/browser.js +++ b/v2/internal/runtime/js/core/browser.js @@ -12,23 +12,13 @@ The lightweight framework for web-like apps import { SendMessage } from 'ipc'; /** - * Opens the given URL in the system browser + * Opens the given URL / filename in the system browser * * @export - * @param {string} url + * @param {string} target * @returns */ -export function OpenURL(url) { - return SendMessage('RBU' + url); +export function Open(target) { + return SendMessage('RBO' + target); } -/** - * Opens the given filename using the system's default file handler - * - * @export - * @param {sting} filename - * @returns - */ -export function OpenFile(filename) { - return SendMessage('runtime:browser:openfile', filename); -} diff --git a/v2/internal/runtime/js/runtime/runtime.d.ts b/v2/internal/runtime/js/runtime/runtime.d.ts index e55b63df..f73d5220 100644 --- a/v2/internal/runtime/js/runtime/runtime.d.ts +++ b/v2/internal/runtime/js/runtime/runtime.d.ts @@ -17,8 +17,7 @@ interface Level { declare const wailsapp__runtime: { Browser: { - OpenFile(filename: string): Promise; - OpenURL(url: string): Promise; + Open(target: string): Promise; }; Events: { Emit(eventName: string, data?: any): void; diff --git a/v2/internal/subsystem/runtime.go b/v2/internal/subsystem/runtime.go index 4a2efb91..1f3a5745 100644 --- a/v2/internal/subsystem/runtime.go +++ b/v2/internal/subsystem/runtime.go @@ -32,7 +32,7 @@ func NewRuntime(bus *servicebus.ServiceBus, logger *logger.Logger) (*Runtime, er } // Subscribe to log messages - runtimeChannel, err := bus.Subscribe("runtime") + runtimeChannel, err := bus.Subscribe("runtime:") if err != nil { return nil, err } @@ -103,12 +103,12 @@ func (r *Runtime) shutdown() { func (r *Runtime) processBrowserMessage(method string, data interface{}) error { switch method { - case "openurl": - url, ok := data.(string) + case "open": + target, ok := data.(string) if !ok { - return fmt.Errorf("expected 1 string parameter for runtime:browser:openurl") + return fmt.Errorf("expected 1 string parameter for runtime:browser:open") } - go r.runtime.Browser.Open(url) + go r.runtime.Browser.Open(target) default: return fmt.Errorf("unknown method runtime:browser:%s", method) }