mirror of
https://github.com/taigrr/wails.git
synced 2026-04-02 05:08:54 -07:00
Unify Browser runtime
This commit is contained in:
@@ -22,13 +22,14 @@ func runtimeMessageParser(message string) (*parsedMessage, error) {
|
||||
|
||||
// processBrowserMessage expects messages of the following format:
|
||||
// RB<METHOD><DATA>
|
||||
// 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)
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
3
v2/internal/runtime/js/runtime/runtime.d.ts
vendored
3
v2/internal/runtime/js/runtime/runtime.d.ts
vendored
@@ -17,8 +17,7 @@ interface Level {
|
||||
|
||||
declare const wailsapp__runtime: {
|
||||
Browser: {
|
||||
OpenFile(filename: string): Promise<any>;
|
||||
OpenURL(url: string): Promise<any>;
|
||||
Open(target: string): Promise<any>;
|
||||
};
|
||||
Events: {
|
||||
Emit(eventName: string, data?: any): void;
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user