From 27e8e289205cc6f9fbd26065c1f0967da4a09e7b Mon Sep 17 00:00:00 2001 From: blob42 Date: Sat, 9 Sep 2023 10:31:00 +0200 Subject: [PATCH] more nil pointer checks, fix firefox hook calling --- firefox/firefox.go | 36 +++++++++++++++++++++--------------- modules/browser.go | 7 ++++++- parsing/tags.go | 6 +++++- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/firefox/firefox.go b/firefox/firefox.go index 4163b2a..f39b730 100644 --- a/firefox/firefox.go +++ b/firefox/firefox.go @@ -154,6 +154,7 @@ func (f *Firefox) loadBookmarksToTree(bookmarks []*MozBookmark) { if fOk { tree.AddChild(folderNode, urlNode) } + } } @@ -431,9 +432,11 @@ func (f *Firefox) Shutdown() error { func (f *Firefox) addURLNode(url, title, desc string) (bool, *tree.Node) { var urlNode *tree.Node - iUrlNode, exists := f.URLIndex.Get(url) + var created bool + + iURLNode, exists := f.URLIndex.Get(url) if !exists { - urlNode := &tree.Node{ + urlNode = &tree.Node{ Name: title, Type: tree.URLNode, URL: url, @@ -445,20 +448,23 @@ func (f *Firefox) addURLNode(url, title, desc string) (bool, *tree.Node) { f.URLIndexList = append(f.URLIndexList, url) f.CurrentNodeCount++ - // Call hooks - //TEST: - err := f.CallHooks(urlNode) - if err != nil { - log.Errorf("error calling hooks for <%s>: %s", url, err) - } - + created = true - return true, urlNode } else { - urlNode = iUrlNode.(*tree.Node) + urlNode = iURLNode.(*tree.Node) + //TEST: + // update title and desc + urlNode.Name = title + urlNode.Desc = desc } - return false, urlNode + // Call hooks + err := f.CallHooks(urlNode) + if err != nil { + log.Errorf("error calling hooks for <%s>: %s", url, err) + } + + return created, urlNode } // adds a new tagNode if it is not yet in the tagMap @@ -603,9 +609,9 @@ func loadBookmarks(f *Firefox) { */ for rows.Next() { var url, title, tagTitle, desc string - var tagId sqlid + var tagID sqlid - err = rows.Scan(&url, &title, &desc, &tagId, &tagTitle) + err = rows.Scan(&url, &title, &desc, &tagID, &tagTitle) // log.Debugf("%s|%s|%s|%d|%s", url, title, desc, tagId, tagTitle) if err != nil { log.Error(err) @@ -666,7 +672,7 @@ func (f *Firefox) initPlacesCopy() (mozilla.PlaceCopyJob, error) { // init is required to register the module as a plugin when it is imported func init() { - // modules.RegisterBrowser(Firefox{FirefoxConfig: FFConfig}) + modules.RegisterBrowser(Firefox{FirefoxConfig: FFConfig}) //TIP: cmd.RegisterModCommand(BrowserName, &cli.Command{ // Name: "test", // }) diff --git a/modules/browser.go b/modules/browser.go index 1993ea7..66e127e 100644 --- a/modules/browser.go +++ b/modules/browser.go @@ -114,8 +114,13 @@ func (b BrowserConfig) BookmarkDir() (string, error) { // usually done within the parsing logic of a browser module, typically in the // Run() method. func (b BrowserConfig) CallHooks(node *tree.Node) error { + + if node == nil { + return fmt.Errorf("hook node is nil") + } + for _, hook := range b.hooks { - log.Debugf("calling hook <%s> on node", hook.Name) + log.Debugf("<%s> calling hook <%s> on node <%s>",b.Name, hook.Name, node.URL) if err := hook.Func(node); err != nil { return err } diff --git a/parsing/tags.go b/parsing/tags.go index a8b6d35..18e13cd 100644 --- a/parsing/tags.go +++ b/parsing/tags.go @@ -32,7 +32,11 @@ func ParseTags(node *Node) error { matches := regex.FindAllStringSubmatch(node.Name, -1) for _, m := range matches { - node.Tags = append(node.Tags, m[1]) + if node.Tags == nil { + node.Tags = []string{m[1]} + } else { + node.Tags = append(node.Tags, m[1]) + } } //res := regex.FindAllStringSubmatch(bk.Metadata, -1)