# HG changeset patch # User Ted Unangst # Date 1712455968 14400 # Sat Apr 06 22:12:48 2024 -0400 # Node ID c156daa8d77984640a1bfeeb680c473f169d5a47 # Parent f5e84e7fe357aadfd4ba7e8ff66423700e77c658 only fetch once for a search diff --git a/activity.go b/activity.go --- a/activity.go +++ b/activity.go @@ -1891,22 +1891,23 @@ return href } -func investigate(name string) (*SomeThing, error) { +func investigate(name string) (*SomeThing, junk.Junk, error) { if name == "" { - return nil, fmt.Errorf("no name") + return nil, nil, fmt.Errorf("no name") } if name[0] == '@' { name = gofish(name) } if name == "" { - return nil, fmt.Errorf("no name") + return nil, nil, fmt.Errorf("no name") } obj, err := GetJunkFast(readyLuserOne, name) if err != nil { - return nil, err + return nil, nil, err } allinjest(originate(name), obj) - return somethingabout(obj) + info, err := somethingabout(obj) + return info, obj, err } func somethingabout(obj junk.Junk) (*SomeThing, error) { diff --git a/database.go b/database.go --- a/database.go +++ b/database.go @@ -1007,7 +1007,7 @@ owner = url } else { - info, err := investigate(url) + info, _, err := investigate(url) if err != nil { ilog.Printf("failed to investigate honker: %s", err) return 0, "", err diff --git a/fun.go b/fun.go --- a/fun.go +++ b/fun.go @@ -636,7 +636,7 @@ handle := getxonker(xid, "handle") if handle == "" { dlog.Printf("need to get a handle: %s", xid) - info, err := investigate(xid) + info, _, err := investigate(xid) if err != nil { m := re_unurl.FindStringSubmatch(xid) if len(m) > 2 { diff --git a/web.go b/web.go --- a/web.go +++ b/web.go @@ -694,21 +694,17 @@ xid := strings.TrimSpace(r.FormValue("q")) xonk := getxonk(UserID(u.UserID), xid) if xonk == nil { - p, _ := investigate(xid) - if p != nil { - xid = p.XID - } - j, err := GetJunk(UserID(u.UserID), xid) - if err != nil { + info, j, err := investigate(xid) + if j == nil { http.Error(w, "error getting external object", http.StatusInternalServerError) ilog.Printf("error getting external object: %s", err) return } - allinjest(originate(xid), j) - dlog.Printf("importing %s", xid) + if info != nil { + xid = info.XID + } user, _ := butwhatabout(u.Username) - info, _ := somethingabout(j) if info == nil { xonk = xonksaver(user, j, originate(xid)) } else if info.What == SomeActor {