diff --git a/activity.go b/activity.go index 5e78837..e71593f 100644 --- a/activity.go +++ b/activity.go @@ -804,6 +804,18 @@ func jonkjonk(user *WhatAbout, h *Honk) (junk.Junk, junk.Junk) { jo["sensitive"] = true } + var replies []string + for _, reply := range h.Replies { + replies = append(replies, reply.XID) + } + if len(replies) > 0 { + jr := junk.New() + jr["type"] = "Collection" + jr["totalItems"] = len(replies) + jr["items"] = replies + jo["replies"] = jr + } + var tags []junk.Junk g := bunchofgrapes(h.Noise) for _, m := range g { diff --git a/honk.go b/honk.go index dbbec1d..ae38792 100644 --- a/honk.go +++ b/honk.go @@ -71,6 +71,7 @@ type Honk struct { Audience []string Public bool Whofore int64 + Replies []*Honk Flags int64 HTML template.HTML Style string @@ -617,8 +618,8 @@ func showhonk(w http.ResponseWriter, r *http.Request) { } xid := fmt.Sprintf("https://%s%s", serverName, r.URL.Path) - h := getxonk(user.ID, xid) - if h == nil { + honk := getxonk(user.ID, xid) + if honk == nil { http.NotFound(w, r) return } @@ -626,24 +627,29 @@ func showhonk(w http.ResponseWriter, r *http.Request) { if u != nil && u.UserID != user.ID { u = nil } - if !h.Public { + if !honk.Public { if u == nil { http.NotFound(w, r) return } - honkpage(w, r, u, nil, []*Honk{h}, "one honk maybe more") + honkpage(w, r, u, nil, []*Honk{honk}, "one honk maybe more") return } + rawhonks := gethonksbyconvoy(honk.UserID, honk.Convoy) if friendorfoe(r.Header.Get("Accept")) { - donksforhonks([]*Honk{h}) - _, j := jonkjonk(user, h) + for _, h := range rawhonks { + if h.RID == honk.XID && h.Public && (h.Whofore == 2 || honkIsAcked(h.Flags)) { + honk.Replies = append(honk.Replies, h) + } + } + donksforhonks([]*Honk{honk}) + _, j := jonkjonk(user, honk) j["@context"] = itiswhatitis w.Header().Set("Content-Type", theonetruename) j.Write(w) return } - rawhonks := gethonksbyconvoy(h.UserID, h.Convoy) var honks []*Honk for _, h := range rawhonks { if h.Public && (h.Whofore == 2 || honkIsAcked(h.Flags)) {