From b7efbdaeeaeebc34e19ad79c8dab23f994dcdc11 Mon Sep 17 00:00:00 2001 From: makeworld Date: Wed, 4 Nov 2020 20:01:11 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fixes=20#81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + display/download.go | 10 ++++++---- display/private.go | 33 ++++++++++++++++++++------------- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cf9e34..23724c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - XDG user dir file is parsed instead of looking for XDG env vars (#97, #100) - Support paths with spaces in HTTP browser config setting (#77) - Clicking "Change" on an existing bookmark without changing the text no longer removes it (#91) +- Display HTTP Error if "Open In Portal" fails (#81) ## [v1.5.0] - 2020-09-01 diff --git a/display/download.go b/display/download.go index a150166..6a30b4e 100644 --- a/display/download.go +++ b/display/download.go @@ -117,10 +117,12 @@ func dlChoice(text, u string, resp *gemini.Response) { portalURL = parsed.String() + "%3F" + query } portalURL = strings.TrimPrefix(portalURL, "gemini://") + "?raw=1" - handleHTTP("https://portal.mozz.us/gemini/"+portalURL, false) - tabPages.SwitchToPage(strconv.Itoa(curTab)) - App.SetFocus(tabs[curTab].view) - App.Draw() + ok := handleHTTP("https://portal.mozz.us/gemini/"+portalURL, false) + if ok { + tabPages.SwitchToPage(strconv.Itoa(curTab)) + App.SetFocus(tabs[curTab].view) + App.Draw() + } return } tabPages.SwitchToPage(strconv.Itoa(curTab)) diff --git a/display/private.go b/display/private.go index a189931..936d9c0 100644 --- a/display/private.go +++ b/display/private.go @@ -145,35 +145,42 @@ func setPage(t *tab, p *structs.Page) { // handleHTTP is used by handleURL. // It opens HTTP links and displays Info and Error modals. -func handleHTTP(u string, showInfo bool) { +// Returns false if there was an error. +func handleHTTP(u string, showInfo bool) bool { if len(config.HTTPCommand) == 1 { // Possibly a non-command switch strings.TrimSpace(config.HTTPCommand[0]) { case "", "off": Error("HTTP Error", "Opening HTTP URLs is turned off.") + return false case "default": s, err := webbrowser.Open(u) if err != nil { Error("Webbrowser Error", err.Error()) - } else if showInfo { + return false + } + if showInfo { Info(s) } - } - } else { - // Custom command - var err error = nil - if len(config.HTTPCommand) > 1 { - err = exec.Command(config.HTTPCommand[0], append(config.HTTPCommand[1:], u)...).Start() - } else { - err = exec.Command(config.HTTPCommand[0], u).Start() - } - if err != nil { - Error("HTTP Error", "Error executing custom browser command: "+err.Error()) + return true } } + // Custom command + var err error = nil + if len(config.HTTPCommand) > 1 { + err = exec.Command(config.HTTPCommand[0], append(config.HTTPCommand[1:], u)...).Start() + } else { + err = exec.Command(config.HTTPCommand[0], u).Start() + } + if err != nil { + Error("HTTP Error", "Error executing custom browser command: "+err.Error()) + return false + } + App.Draw() + return true } // handleOther is used by handleURL.