option to desub part of a thread. somewhat suspect implementation...
This commit is contained in:
parent
f7d33094fe
commit
71b204db5e
|
@ -680,7 +680,7 @@ var stmtHonksBySearch, stmtHonksByHonker, stmtSaveHonk, stmtUserByName, stmtUser
|
|||
var stmtEventHonks, stmtOneBonk, stmtFindZonk, stmtFindXonk, stmtSaveDonk *sql.Stmt
|
||||
var stmtFindFile, stmtGetFileData, stmtSaveFileData, stmtSaveFile *sql.Stmt
|
||||
var stmtAddDoover, stmtGetDoovers, stmtLoadDoover, stmtZapDoover, stmtOneHonker *sql.Stmt
|
||||
var stmtThumbBiters, stmtDeleteHonk, stmtDeleteDonks, stmtDeleteOnts, stmtSaveZonker *sql.Stmt
|
||||
var stmtDesubbed, stmtDeleteHonk, stmtDeleteDonks, stmtDeleteOnts, stmtSaveZonker *sql.Stmt
|
||||
var stmtGetZonkers, stmtRecentHonkers, stmtGetXonker, stmtSaveXonker, stmtDeleteXonker *sql.Stmt
|
||||
var stmtAllOnts, stmtSaveOnt, stmtUpdateFlags, stmtClearFlags *sql.Stmt
|
||||
var stmtHonksForUserFirstClass, stmtSaveMeta, stmtDeleteMeta, stmtUpdateHonk *sql.Stmt
|
||||
|
@ -746,7 +746,7 @@ func prepareStatements(db *sql.DB) {
|
|||
stmtGetDoovers = preparetodie(db, "select dooverid, dt from doovers")
|
||||
stmtLoadDoover = preparetodie(db, "select tries, userid, rcpt, msg from doovers where dooverid = ?")
|
||||
stmtZapDoover = preparetodie(db, "delete from doovers where dooverid = ?")
|
||||
stmtThumbBiters = preparetodie(db, "select userid, name, wherefore from zonkers")
|
||||
stmtDesubbed = preparetodie(db, "select name from zonkers where userid = ? and wherefore = 'desub'")
|
||||
stmtFindZonk = preparetodie(db, "select zonkerid from zonkers where userid = ? and name = ? and wherefore = 'zonk'")
|
||||
stmtGetZonkers = preparetodie(db, "select zonkerid, name, wherefore from zonkers where userid = ? and wherefore <> 'zonk'")
|
||||
stmtSaveZonker = preparetodie(db, "insert into zonkers (userid, name, wherefore) values (?, ?, ?)")
|
||||
|
|
2
go.mod
2
go.mod
|
@ -10,7 +10,7 @@ require (
|
|||
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859
|
||||
humungus.tedunangst.com/r/go-sqlite3 v1.1.3
|
||||
humungus.tedunangst.com/r/webs v0.6.19
|
||||
humungus.tedunangst.com/r/webs v0.6.20
|
||||
)
|
||||
|
||||
go 1.11
|
||||
|
|
2
go.sum
2
go.sum
|
@ -36,3 +36,5 @@ humungus.tedunangst.com/r/go-sqlite3 v1.1.3 h1:G2N4wzDS0NbuvrZtQJhh4F+3X+s7BF8b9
|
|||
humungus.tedunangst.com/r/go-sqlite3 v1.1.3/go.mod h1:FtEEmQM7U2Ey1TuEEOyY1BmphTZnmiEjPsNLEAkpf/M=
|
||||
humungus.tedunangst.com/r/webs v0.6.19 h1:0cxR4JmHDMQmMwboRlycRO+67OPtgtCwLX8fuDu9IRo=
|
||||
humungus.tedunangst.com/r/webs v0.6.19/go.mod h1:S9sXpVSbgAIa24yYhnMN0C94LKHG+2rioS+NsiDimps=
|
||||
humungus.tedunangst.com/r/webs v0.6.20 h1:fKTjJ+EQUlxj8vWBtFMhX7aYbMwAnUWbDhY7hotkXq0=
|
||||
humungus.tedunangst.com/r/webs v0.6.20/go.mod h1:S9sXpVSbgAIa24yYhnMN0C94LKHG+2rioS+NsiDimps=
|
||||
|
|
43
hfcs.go
43
hfcs.go
|
@ -302,9 +302,48 @@ func unsee(userid int64, h *Honk) {
|
|||
}
|
||||
}
|
||||
|
||||
func osmosis(honks []*Honk, userid int64) []*Honk {
|
||||
filts := getfilters(userid, filtHide)
|
||||
var desubbed = cache.New(cache.Options{Filler: func(userid int64) (map[string]bool, bool) {
|
||||
rows, err := stmtDesubbed.Query(userid)
|
||||
if err != nil {
|
||||
log.Printf("error query desubbed: %s", err)
|
||||
return nil, false
|
||||
}
|
||||
defer rows.Close()
|
||||
m := make(map[string]bool)
|
||||
for rows.Next() {
|
||||
var xid string
|
||||
err = rows.Scan(&xid)
|
||||
if err != nil {
|
||||
log.Printf("error scanning desub: %s", err)
|
||||
continue
|
||||
}
|
||||
log.Printf("bad parent: %s", xid)
|
||||
m[xid] = true
|
||||
}
|
||||
return m, true
|
||||
}})
|
||||
|
||||
func osmosis(honks []*Honk, userid int64, withfilt bool) []*Honk {
|
||||
var badparents map[string]bool
|
||||
desubbed.GetAndLock(userid, &badparents)
|
||||
j := 0
|
||||
reversehonks(honks)
|
||||
for _, h := range honks {
|
||||
if badparents[h.RID] {
|
||||
badparents[h.XID] = true
|
||||
continue
|
||||
}
|
||||
honks[j] = h
|
||||
j++
|
||||
}
|
||||
desubbed.Unlock()
|
||||
honks = honks[0:j]
|
||||
reversehonks(honks)
|
||||
if !withfilt {
|
||||
return honks
|
||||
}
|
||||
filts := getfilters(userid, filtHide)
|
||||
j = 0
|
||||
outer:
|
||||
for _, h := range honks {
|
||||
for _, f := range filts {
|
||||
|
|
|
@ -112,6 +112,7 @@ in reply to: <a href="{{ .RID }}" rel=noreferrer>{{ .RID }}</a>
|
|||
{{ else }}
|
||||
<button onclick="return flogit(this, 'save', '{{ .Honk.XID }}');">save</button>
|
||||
{{ end }}
|
||||
<button onclick="return flogit(this, 'desub', '{{ .Honk.XID }}');">desub</button>
|
||||
<button><a href="/edit?xid={{ .Honk.XID }}">edit</a></button>
|
||||
</div>
|
||||
</details>
|
||||
|
|
18
web.go
18
web.go
|
@ -101,15 +101,16 @@ func homepage(w http.ResponseWriter, r *http.Request) {
|
|||
templinfo["ServerMessage"] = "at me!"
|
||||
templinfo["PageName"] = "atme"
|
||||
honks = gethonksforme(userid, 0)
|
||||
honks = osmosis(honks, userid, false)
|
||||
case "/events":
|
||||
templinfo["ServerMessage"] = "some recent and upcoming events"
|
||||
templinfo["PageName"] = "events"
|
||||
honks = geteventhonks(userid)
|
||||
honks = osmosis(honks, userid)
|
||||
honks = osmosis(honks, userid, true)
|
||||
case "/first":
|
||||
templinfo["PageName"] = "first"
|
||||
honks = gethonksforuser(userid, 0)
|
||||
honks = osmosis(honks, userid)
|
||||
honks = osmosis(honks, userid, true)
|
||||
case "/saved":
|
||||
templinfo["ServerMessage"] = "saved honks"
|
||||
templinfo["PageName"] = "saved"
|
||||
|
@ -117,7 +118,7 @@ func homepage(w http.ResponseWriter, r *http.Request) {
|
|||
default:
|
||||
templinfo["PageName"] = "home"
|
||||
honks = gethonksforuser(userid, 0)
|
||||
honks = osmosis(honks, userid)
|
||||
honks = osmosis(honks, userid, true)
|
||||
}
|
||||
templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r)
|
||||
}
|
||||
|
@ -723,7 +724,7 @@ func showcombo(w http.ResponseWriter, r *http.Request) {
|
|||
name := mux.Vars(r)["name"]
|
||||
u := login.GetUserInfo(r)
|
||||
honks := gethonksbycombo(u.UserID, name, 0)
|
||||
honks = osmosis(honks, u.UserID)
|
||||
honks = osmosis(honks, u.UserID, true)
|
||||
templinfo := getInfo(r)
|
||||
templinfo["PageName"] = "combo"
|
||||
templinfo["PageArg"] = name
|
||||
|
@ -739,6 +740,7 @@ func showconvoy(w http.ResponseWriter, r *http.Request) {
|
|||
if len(honks) > 0 {
|
||||
templinfo["TopHID"] = honks[0].ID
|
||||
}
|
||||
honks = osmosis(honks, u.UserID, false)
|
||||
reversehonks(honks)
|
||||
templinfo["PageName"] = "convoy"
|
||||
templinfo["PageArg"] = c
|
||||
|
@ -1822,14 +1824,15 @@ func webhydra(w http.ResponseWriter, r *http.Request) {
|
|||
switch page {
|
||||
case "atme":
|
||||
honks = gethonksforme(userid, wanted)
|
||||
honks = osmosis(honks, userid, false)
|
||||
templinfo["ServerMessage"] = "at me!"
|
||||
case "home":
|
||||
honks = gethonksforuser(userid, wanted)
|
||||
honks = osmosis(honks, userid)
|
||||
honks = osmosis(honks, userid, true)
|
||||
templinfo["ServerMessage"] = serverMsg
|
||||
case "first":
|
||||
honks = gethonksforuserfirstclass(userid, wanted)
|
||||
honks = osmosis(honks, userid)
|
||||
honks = osmosis(honks, userid, true)
|
||||
templinfo["ServerMessage"] = "first class only"
|
||||
case "saved":
|
||||
honks = getsavedhonks(userid, wanted)
|
||||
|
@ -1838,11 +1841,12 @@ func webhydra(w http.ResponseWriter, r *http.Request) {
|
|||
case "combo":
|
||||
c := r.FormValue("c")
|
||||
honks = gethonksbycombo(userid, c, wanted)
|
||||
honks = osmosis(honks, userid)
|
||||
honks = osmosis(honks, userid, false)
|
||||
templinfo["ServerMessage"] = "honks by combo: " + c
|
||||
case "convoy":
|
||||
c := r.FormValue("c")
|
||||
honks = gethonksbyconvoy(userid, c, wanted)
|
||||
honks = osmosis(honks, userid, false)
|
||||
templinfo["ServerMessage"] = "honks in convoy: " + c
|
||||
case "honker":
|
||||
xid := r.FormValue("xid")
|
||||
|
|
Loading…
Reference in New Issue