From b173ca9cb2a6d463efda27cf143a81e0d6caedb8 Mon Sep 17 00:00:00 2001 From: tjp Date: Wed, 10 Jan 2024 18:03:32 -0700 Subject: more messages in interface --- actions.go | 14 ++++++++++++-- identity.go | 37 +++++++++++++++++++++++++++++++------ mark.go | 16 +++++++++++++--- tour.go | 35 +++++++++++++++++++++++------------ 4 files changed, 79 insertions(+), 23 deletions(-) diff --git a/actions.go b/actions.go index a3cd1d7..fa861fd 100644 --- a/actions.go +++ b/actions.go @@ -447,7 +447,7 @@ func parseURL(str string, state *BrowserState, defaultScheme string) (*url.URL, if i, err := strconv.Atoi(str[idx+2:]); err != nil { return nil, -1, ErrInvalidLink } else { - tour, err := findTour(state, str[2:idx]) + _, tour, err := findTour(state, str[2:idx]) if err != nil { return nil, -1, err } @@ -584,6 +584,9 @@ func Outline(state *BrowserState, conf *Config) error { } state.Modal = []byte(formatted) + if len(state.Modal) == 0 { + state.Modal = []byte("No headers on the current page\n") + } return Print(state) } @@ -602,6 +605,9 @@ func Links(state *BrowserState, conf *Config) error { return err } state.Modal = []byte(formatted) + if len(state.Links) == 0 { + state.Modal = []byte("There are no links on the current page\n") + } return Print(state) } @@ -652,7 +658,11 @@ func Save(state *BrowserState, filename string, conf *Config) error { i += 1 } - return os.WriteFile(p, state.Body, 0o644) + if err := os.WriteFile(p, state.Body, 0o644); err != nil { + return err + } + state.Modal = []byte(fmt.Sprintf("Saved page to %s\n", p)) + return Print(state) } func Mark(state *BrowserState, args []string, conf *Config) error { diff --git a/identity.go b/identity.go index 306c6e9..e864171 100644 --- a/identity.go +++ b/identity.go @@ -67,7 +67,12 @@ func IdentityCreate(state *BrowserState, name string) error { return err } state.Identities.ByName[name] = ident - return saveIdentities(state.Identities) + if err := saveIdentities(state.Identities); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Created new identity %s\n", name)) + return Print(state) } func IdentityList(state *BrowserState) error { @@ -102,7 +107,7 @@ func IdentityList(state *BrowserState) error { state.Modal = buf.Bytes() if len(state.Modal) == 0 { - state.Modal = []byte("(empty)\n") + state.Modal = []byte("(no identities)\n") } return Print(state) } @@ -135,7 +140,12 @@ func IdentityDelete(state *BrowserState, name string) error { if err := removeIdentity(name); err != nil { return err } - return saveIdentities(state.Identities) + if err := saveIdentities(state.Identities); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Removed identity %s\n", name)) + return Print(state) } func IdentityUseDomain(state *BrowserState, name string, domain string) error { @@ -159,7 +169,12 @@ func IdentityUseDomain(state *BrowserState, name string, domain string) error { } state.Identities.ByDomain[u.Hostname()] = ident - return saveIdentities(state.Identities) + if err := saveIdentities(state.Identities); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Identity %s will be used across domain %s\n", name, u.Hostname())) + return Print(state) } func IdentityUseFolder(state *BrowserState, name string, domain string) error { @@ -184,7 +199,12 @@ func IdentityUseFolder(state *BrowserState, name string, domain string) error { u.Path = strings.TrimRight(u.Path, "/") state.Identities.ByFolder[u.Hostname()+u.Path] = ident - return saveIdentities(state.Identities) + if err := saveIdentities(state.Identities); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Identity %s will be used within folder %s%s\n", name, u.Hostname(), u.Path)) + return Print(state) } func IdentityUsePage(state *BrowserState, name string, domain string) error { @@ -208,7 +228,12 @@ func IdentityUsePage(state *BrowserState, name string, domain string) error { } state.Identities.ByPage[u.String()] = ident - return saveIdentities(state.Identities) + if err := saveIdentities(state.Identities); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Identity %s will be used on page %s\n", name, u.String())) + return Print(state) } func showIdent(ident *tls.Config) string { diff --git a/mark.go b/mark.go index 0cfe6bc..c162144 100644 --- a/mark.go +++ b/mark.go @@ -19,7 +19,12 @@ func MarkAdd(state *BrowserState, conf *Config, name, target string) error { } state.Marks[name] = u.String() - return saveMarks(state.Marks) + if err := saveMarks(state.Marks); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Saved mark %s to %s\n", name, u.String())) + return Print(state) } func MarkGo(state *BrowserState, conf *Config, name string) error { @@ -41,7 +46,7 @@ func MarkList(state *BrowserState) error { } state.Modal = buf.Bytes() if len(state.Modal) == 0 { - state.Modal = []byte("(empty)\n") + state.Modal = []byte("(no marks)\n") } return Print(state) } @@ -52,7 +57,12 @@ func MarkDelete(state *BrowserState, name string) error { return err } delete(state.Marks, name) - return saveMarks(state.Marks) + if err := saveMarks(state.Marks); err != nil { + return err + } + + state.Modal = []byte(fmt.Sprintf("Deleted mark %s\n", name)) + return Print(state) } func findMark(state *BrowserState, prefix string) (string, string, error) { diff --git a/tour.go b/tour.go index 328af5e..1f60ee9 100644 --- a/tour.go +++ b/tour.go @@ -64,7 +64,9 @@ func TourAdd(state *BrowserState, conf *Config, targets []string) error { if state.CurrentTour != &state.DefaultTour { return saveTours(state.NamedTours) } - return nil + + state.Modal = []byte(fmt.Sprintf("Added %d urls to the tour\n", len(newurls))) + return Print(state) } func TourAddNext(state *BrowserState, conf *Config, targets []string) error { @@ -86,7 +88,9 @@ func TourAddNext(state *BrowserState, conf *Config, targets []string) error { if state.CurrentTour != &state.DefaultTour { return saveTours(state.NamedTours) } - return nil + + state.Modal = []byte(fmt.Sprintf("Added %d urls to go next on the tour\n", len(newurls))) + return Print(state) } func TourShow(state *BrowserState) error { @@ -141,7 +145,9 @@ func TourClear(state *BrowserState) error { if state.CurrentTour != &state.DefaultTour { return saveTours(state.NamedTours) } - return nil + + state.Modal = []byte("Tour is cleared\n") + return Print(state) } func TourList(state *BrowserState) error { @@ -180,24 +186,29 @@ func TourGo(state *BrowserState, conf *Config, pos string) error { } func TourSelect(state *BrowserState, name string) error { - tour, err := findTour(state, name) - if err == nil { - state.CurrentTour = tour + tourName, tour, err := findTour(state, name) + if err != nil { + return err } - return err + state.CurrentTour = tour + + state.Modal = []byte(fmt.Sprintf("Tour %s is now active\n", tourName)) + return Print(state) } -func findTour(state *BrowserState, prefix string) (*Tour, error) { +func findTour(state *BrowserState, prefix string) (string, *Tour, error) { if prefix == "" { - return &state.DefaultTour, nil + return "", &state.DefaultTour, nil } found := 0 var value *Tour + var tourName string for name, tour := range state.NamedTours { if strings.HasPrefix(name, prefix) { found += 1 value = tour + tourName = name } } @@ -205,10 +216,10 @@ func findTour(state *BrowserState, prefix string) (*Tour, error) { case 0: tour := &Tour{} state.NamedTours[prefix] = tour - return tour, nil + return "", tour, nil case 1: - return value, nil + return tourName, value, nil default: - return nil, fmt.Errorf("too ambiguous - found %d matching tours", found) + return "", nil, fmt.Errorf("too ambiguous - found %d matching tours", found) } } -- cgit v1.2.3