more nil pointer checks, fix firefox hook calling

This commit is contained in:
blob42 2023-09-09 10:31:00 +02:00
parent 535b287842
commit 27e8e28920
3 changed files with 32 additions and 17 deletions

View File

@ -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",
// })

View File

@ -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
}

View File

@ -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)