M TODO +0 -4
@@ 11,7 11,3 @@ The gob encoding for backend rpc uses mo
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.
M activity.go +17 -14
@@ 1728,15 1728,17 @@ func honkworldwide(user *WhatAbout, honk
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 @@ func honkworldwide(user *WhatAbout, honk
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 @@ func gofish(name string) string {
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) {
M database.go +1 -1
@@ 1007,7 1007,7 @@ func savehonker(user *WhatAbout, url, na
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
M fun.go +1 -1
@@ 636,7 636,7 @@ var allhandles = gencache.New(gencache.O
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 {
A => views/common.js +62 -0
@@ 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")
+ }
+
+})()
M +1 -0
@@ 6,6 6,7 @@
{{ if .LocalStyleParam }}
<link href="/local.css{{ .LocalStyleParam }}" rel="stylesheet">
{{ end }}
<script src="/common.js{{ .CommonJSParam }}" defer></script>
{{ .APAltLink }}
{{ .Honkology }}
<link href="/icon.png" rel="icon">
M views/honkpage.js +0 -50
@@ 460,49 460,6 @@ function scrollprevioushonk() {
}
}
-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 @@ function loademus() {
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) {
M web.go +8 -9
@@ 91,6 91,7 @@ func getInfo(r *http.Request) map[string
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 @@ func ximport(w http.ResponseWriter, r *h
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 @@ func serve() {
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 @@ func serve() {
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)