Skip to content
This repository has been archived by the owner on Mar 29, 2024. It is now read-only.

Commit

Permalink
Revert webview back to v0.1.1, fix opening paths via system
Browse files Browse the repository at this point in the history
  • Loading branch information
dhaavi committed May 8, 2020
1 parent 20b45e8 commit ceba98c
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 42 deletions.
6 changes: 3 additions & 3 deletions app/Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ ignored = ["github.com/safing/portbase/*"]

[[constraint]]
name = "github.com/zserge/webview"
branch = "master"
version = "v0.1.1"
6 changes: 6 additions & 0 deletions app/build
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ if [[ $GOOS == "windows" ]]; then
# custom
export CGO_ENABLED=1
EXTRA_LD_FLAGS='-H windowsgui' # needed for GUI
# check if we have goversioninfo installed
if [[ $(which goversioninfo) == "" ]]; then
echo "goversioninfo command not found"
echo "install with: go get -u github.com/josephspurrier/goversioninfo/cmd/goversioninfo"
exit 1
fi
# generate resource.syso for windows metadata / icon
go generate
fi
Expand Down
48 changes: 38 additions & 10 deletions app/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,25 +83,53 @@ func main() {
os.Exit(1)
}

// create webview
wv := webview.New(true)
go shutdownHandler(wv)

// configure
wv.SetTitle("Portmaster")
wv.SetSize(1400, 900, webview.HintNone)
wv.Navigate(url)
// using v0.1.1: https://github.com/zserge/webview/tree/0.1.1
settings := webview.Settings{
// WebView main window title
Title: "Portmaster",
// URL to open in a webview
URL: url,
// Window width in pixels
Width: 1400,
// Window height in pixels
Height: 900,
// Allows/disallows window resizing
Resizable: true,
// Enable debugging tools (Linux/BSD/MacOS, on Windows use Firebug)
Debug: true,
// handle invokes
ExternalInvokeCallback: handleExternalInvokeCallback,
}
wv := webview.New(settings)

// register helper to open links in default browser
err = registerUrlOpener(wv)
err = registerSystemAPI(wv)
if err != nil {
log.Warningf("failed to register URL opener: %s", err)
log.Warningf("failed to register system api: %s", err)
}

// listen for interrupts
go shutdownHandler(wv)

// render
wv.SetColor(68, 68, 68, 1)
wv.Run()
}

func handleExternalInvokeCallback(wv webview.WebView, data string) {
switch data {
case "DOMContentLoaded":
// finished loading

// register helper to open links in default browser
err := registerSystemAPI(wv)
if err != nil {
log.Warningf("failed to register system api: %s", err)
}
}
}

func shutdownHandler(wv webview.WebView) {
// catch interrupt for clean shutdown
signalCh := make(chan os.Signal, 1)
Expand All @@ -120,5 +148,5 @@ func shutdownHandler(wv webview.WebView) {
log.Warning("program was interrupted, shutting down")

// exit
wv.Dispatch(wv.Destroy)
wv.Dispatch(wv.Exit)
}
20 changes: 0 additions & 20 deletions app/openurl.go

This file was deleted.

42 changes: 42 additions & 0 deletions app/system-api.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package main

import (
"runtime"

"github.com/safing/portbase/info"
"github.com/safing/portbase/log"

"github.com/skratchdot/open-golang/open"
"github.com/zserge/webview"
)

// using v0.1.1 - example: https://github.com/zserge/webview/tree/0.1.1/examples/counter-go

type SystemAPI struct {
OsName string
OsArch string
AppVersion string
DataDir string
}

func registerSystemAPI(wv webview.WebView) error {
_, err := wv.Bind("system", &SystemAPI{
OsName: runtime.GOOS,
OsArch: runtime.GOARCH,
AppVersion: info.Version(),
DataDir: dataDir,
})
return err
}

func (api *SystemAPI) Open(thing string) error {
err := open.Run(thing)
if err != nil {
log.Warningf("failed to open %s: %s", thing, err)
}
return err
}

func (api *SystemAPI) OpenDataDir() error {
return api.Open(dataDir)
}
25 changes: 19 additions & 6 deletions modules/base/src/components/Base.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,22 @@
<div v-on:click="selectHome()" class="ui basic inverted segment mess center aligned">
<div class="centered">
<h4 style="margin-bottom: 0;">Portmaster</h4>
<small v-if="versions">
v{{ versions.Core.Version }} <span style="color: #FF0000A0;">(pre-alpha)</span>
</small>
<small v-else>
loading...
</small>
<p v-if="versions" class="ui small text">
<span class="ui small text">
v{{ versions.Core.Version }} <span class="ui red text">(pre-alpha)</span>
</span>
</p>
<p v-else>
<span class="ui small text">
loading core version...
</span>
</p>
<p v-if="!runningInApp">
<span class="ui small yellow text" style="line-height: 1em;">
running in browser<br />
functionality may be impaired
</span>
</p>
</div>
</div>

Expand Down Expand Up @@ -255,6 +265,9 @@ export default {
},
selectExpertiseLevel(level) {
this.selectedExpertiseLevel = level;
},
runningInApp() {
return typeof system !== 'undefined' // eslint-disable-line
}
}
};
Expand Down
14 changes: 12 additions & 2 deletions modules/base/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@ Vue.use(PortAPI, {
debug: true
});

// notify app that we have finished loading
document.addEventListener('DOMContentLoaded', () => {
try {
window.external['invoke']('DOMContentLoaded');
}
catch(e) {
console.warn(`failed to notify app that we have finished loading: ${e}`);
}
});

// handle URLs via OS
function handleClick(e) {
var target = e.target || e.srcElement;
Expand All @@ -25,8 +35,8 @@ function handleClick(e) {
e.preventDefault();
// open with OS
var href = target.getAttribute("href");
if (typeof openWithOS !== 'undefined') { // eslint-disable-line
openWithOS(href); // eslint-disable-line
if (typeof system !== 'undefined') { // eslint-disable-line
system.open(href); // eslint-disable-line
} else {
window.location.href = href;
}
Expand Down

0 comments on commit ceba98c

Please sign in to comment.