# HG changeset patch # User Peter Sanchez # Date 1712753388 21600 # Wed Apr 10 06:49:48 2024 -0600 # Node ID 55b78e8fd3087abd8c98a9e98dafe3215738b551 # Parent 90fa787be803b32faf25f1196b35c68d8851ac02 # Parent 3f628b52fa275370c7fed85701e20dfb52a19868 Merge tedu upstream diff --git a/TODO b/TODO --- a/TODO +++ b/TODO @@ -11,7 +11,3 @@ Several columns and indices have potentially long shared prefixes. These could be stored rearranged, perhaps with last four bytes prepended. https://here/there/9876 -> 9876https://here/there/9876 - -Stop double fetching when doing a search. - -Fix click to expand images. diff --git a/activity.go b/activity.go --- a/activity.go +++ b/activity.go @@ -1728,15 +1728,17 @@ rcpts[h.XID] = true } } - for _, f := range getbacktracks(honk.XID) { - if f[0] == '%' { - rcpts[f] = true - } else { - box, ok := boxofboxes.Get(f) - if ok && box.Shared != "" { - rcpts["%"+box.Shared] = true + if honk.What == "update" { + for _, f := range getbacktracks(honk.XID) { + if f[0] == '%' { + rcpts[f] = true } else { - rcpts[f] = true + box, ok := boxofboxes.Get(f) + if ok && box.Shared != "" { + rcpts["%"+box.Shared] = true + } else { + rcpts[f] = true + } } } } @@ -1744,7 +1746,7 @@ for a := range rcpts { go deliverate(user.ID, a, msg) } - if honk.Public && len(honk.Onts) > 0 { + if (honk.What == "honk" || honk.What == "bonk") && honk.Public && len(honk.Onts) > 0 { collectiveaction(honk) } } @@ -1892,22 +1894,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/views/common.js b/views/common.js new file mode 100644 --- /dev/null +++ b/views/common.js @@ -0,0 +1,62 @@ + +function hotkey(e) { + if (e.ctrlKey || e.altKey) + return + if (e.code == "Escape") { + var menu = document.getElementById("topmenu") + menu.open = false + return + } + if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) + return + + switch (e.code) { + case "KeyR": + refreshhonks(document.getElementById("honkrefresher")); + break; + case "KeyS": + oldestnewest(document.getElementById("newerscroller")); + break; + case "KeyJ": + scrollnexthonk(); + break; + case "KeyK": + scrollprevioushonk(); + break; + case "KeyM": + var menu = document.getElementById("topmenu") + if (!menu.open) { + menu.open = true + menu.querySelector("a").focus() + } else { + menu.open = false + } + break + case "Slash": + document.getElementById("topmenu").open = true + document.getElementById("searchbox").focus() + e.preventDefault() + break + } +} + +(function() { + document.addEventListener("keydown", hotkey) + var totop = document.querySelector(".nophone") + if (totop) { + totop.onclick = function() { + window.scrollTo(0,0) + } + } + var els = document.getElementsByClassName("donklink") + while (els.length) { + let el = els[0] + el.onclick = function() { + el.classList.remove("donk") + el.onclick = null + return false + } + el.classList.remove("donklink") + } + +})() diff --git a/views/header.html b/views/header.html --- a/views/header.html +++ b/views/header.html @@ -6,6 +6,7 @@ {{ if .LocalStyleParam }} {{ end }} + {{ .APAltLink }} {{ .Honkology }} diff --git a/views/honkpage.js b/views/honkpage.js --- a/views/honkpage.js +++ b/views/honkpage.js @@ -460,49 +460,6 @@ } } -function hotkey(e) { - if (e.ctrlKey || e.altKey) - return - if (e.code == "Escape") { - var menu = document.getElementById("topmenu") - menu.open = false - return - } - if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) - return - - switch (e.code) { - case "KeyR": - refreshhonks(document.getElementById("honkrefresher")); - break; - case "KeyS": - oldestnewest(document.getElementById("newerscroller")); - break; - case "KeyJ": - scrollnexthonk(); - break; - case "KeyK": - scrollprevioushonk(); - break; - case "KeyM": - var menu = document.getElementById("topmenu") - if (!menu.open) { - menu.open = true - menu.querySelector("a").focus() - } else { - menu.open = false - } - break - case "Slash": - document.getElementById("topmenu").open = true - document.getElementById("searchbox").focus() - e.preventDefault() - break - } -} - -document.addEventListener("keydown", hotkey) - function addemu(elem) { const data = elem.alt const box = document.getElementById("honknoise"); @@ -548,13 +505,6 @@ el = document.getElementById("longagolink") el.onclick = pageswitcher("longago", "") - var totop = document.querySelector(".nophone") - if (totop) { - totop.onclick = function() { - window.scrollTo(0,0) - } - } - var refreshbox = document.getElementById("refreshbox") if (refreshbox) { refreshbox.querySelectorAll("button").forEach(function(el) { diff --git a/web.go b/web.go --- a/web.go +++ b/web.go @@ -91,6 +91,7 @@ templinfo := make(map[string]interface{}) templinfo["StyleParam"] = getassetparam(viewDir + "/views/style.css") templinfo["LocalStyleParam"] = getassetparam(dataDir + "/views/local.css") + templinfo["CommonJSParam"] = getassetparam(viewDir + "/views/common.js") templinfo["JSParam"] = getassetparam(viewDir + "/views/honkpage.js") templinfo["MiscJSParam"] = getassetparam(viewDir + "/views/misc.js") templinfo["LocalJSParam"] = getassetparam(dataDir + "/views/local.js") @@ -696,21 +697,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 { @@ -3197,6 +3194,7 @@ assets := []string{ viewDir + "/views/style.css", dataDir + "/views/local.css", + viewDir + "/views/common.js", viewDir + "/views/honkpage.js", viewDir + "/views/misc.js", dataDir + "/views/local.js", @@ -3255,6 +3253,7 @@ posters.HandleFunc("/csp-violation", fiveoh) getters.HandleFunc("/style.css", serveviewasset) + getters.HandleFunc("/common.js", serveviewasset) getters.HandleFunc("/honkpage.js", serveviewasset) getters.HandleFunc("/misc.js", serveviewasset) getters.HandleFunc("/local.css", servedataasset)