mirror of
https://github.com/github-tijlxyz/khatru-pyramid.git
synced 2025-04-19 10:21:18 +00:00
button to delete all events from removed users.
This commit is contained in:
parent
83b962b1fd
commit
18e098b536
40
handler.go
40
handler.go
@ -10,10 +10,11 @@ import (
|
||||
)
|
||||
|
||||
func inviteTreeHandler(w http.ResponseWriter, r *http.Request) {
|
||||
loggedUser := getLoggedUser(r)
|
||||
content := inviteTreePageHTML(r.Context(), InviteTreePageParams{
|
||||
loggedUser: getLoggedUser(r),
|
||||
loggedUser: loggedUser,
|
||||
})
|
||||
htmlgo.Fprint(w, baseHTML(content), r.Context())
|
||||
htmlgo.Fprint(w, baseHTML(content, loggedUser), r.Context())
|
||||
}
|
||||
|
||||
func addToWhitelistHandler(w http.ResponseWriter, r *http.Request) {
|
||||
@ -49,6 +50,41 @@ func removeFromWhitelistHandler(w http.ResponseWriter, r *http.Request) {
|
||||
htmlgo.Fprint(w, content, r.Context())
|
||||
}
|
||||
|
||||
// this deletes all events from users not in the relay anymore
|
||||
func cleanupStuffFromExcludedUsersHandler(w http.ResponseWriter, r *http.Request) {
|
||||
loggedUser := getLoggedUser(r)
|
||||
if loggedUser != s.RelayPubkey {
|
||||
http.Error(w, "unauthorized, only the relay owner can do this", 403)
|
||||
return
|
||||
}
|
||||
|
||||
oldLimit := db.MaxLimit
|
||||
db.MaxLimit = 999999
|
||||
ch, err := db.QueryEvents(r.Context(), nostr.Filter{Limit: db.MaxLimit})
|
||||
if err != nil {
|
||||
http.Error(w, "failed to query", 500)
|
||||
return
|
||||
}
|
||||
db.MaxLimit = oldLimit
|
||||
|
||||
count := 0
|
||||
|
||||
for evt := range ch {
|
||||
if isPublicKeyInWhitelist(evt.PubKey) {
|
||||
continue
|
||||
}
|
||||
|
||||
if err := db.DeleteEvent(r.Context(), evt); err != nil {
|
||||
http.Error(w, fmt.Sprintf(
|
||||
"failed to delete %s: %s -- stopping, %d events were deleted before this error", evt, err, count), 500)
|
||||
return
|
||||
}
|
||||
count++
|
||||
}
|
||||
|
||||
fmt.Fprintf(w, "deleted %d events", count)
|
||||
}
|
||||
|
||||
func reportsViewerHandler(w http.ResponseWriter, r *http.Request) {
|
||||
events, err := db.QueryEvents(r.Context(), nostr.Filter{
|
||||
Kinds: []int{1984},
|
||||
|
1
main.go
1
main.go
@ -106,6 +106,7 @@ func main() {
|
||||
// http routes
|
||||
relay.Router().HandleFunc("/add-to-whitelist", addToWhitelistHandler)
|
||||
relay.Router().HandleFunc("/remove-from-whitelist", removeFromWhitelistHandler)
|
||||
relay.Router().HandleFunc("/cleanup", cleanupStuffFromExcludedUsersHandler)
|
||||
relay.Router().HandleFunc("/reports", reportsViewerHandler)
|
||||
relay.Router().HandleFunc("/browse/", joubleHandler)
|
||||
relay.Router().Handle("/static/", http.FileServer(http.FS(static)))
|
||||
|
9
pages.go
9
pages.go
@ -9,9 +9,14 @@ import (
|
||||
|
||||
const buttonClass = "rounded-md text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300"
|
||||
|
||||
func baseHTML(inside HTMLComponent) HTMLComponent {
|
||||
func baseHTML(inside HTMLComponent, loggedUser string) HTMLComponent {
|
||||
navItemClass := "text-gray-600 hover:bg-gray-200 rounded-md px-3 py-2 font-medium"
|
||||
|
||||
cleanupButton := Span("")
|
||||
if loggedUser == s.RelayPubkey {
|
||||
cleanupButton = A().Text("clear stuff").Href("/cleanup").Class(navItemClass)
|
||||
}
|
||||
|
||||
return HTML(
|
||||
Head(
|
||||
Meta().Charset("utf-8"),
|
||||
@ -30,6 +35,7 @@ func baseHTML(inside HTMLComponent) HTMLComponent {
|
||||
A().Text("invite tree").Href("/").Class(navItemClass).Attr("hx-boost", "true", "hx-target", "main", "hx-select", "main"),
|
||||
A().Text("browse").Href("/browse").Class(navItemClass),
|
||||
A().Text("reports").Href("/reports").Class(navItemClass).Attr("hx-boost", "true", "hx-target", "main", "hx-select", "main"),
|
||||
cleanupButton,
|
||||
A().Text("").Href("#").Class(navItemClass).
|
||||
Attr("_", `
|
||||
on click if my innerText is equal to "login" get window.nostr.signEvent({created_at: Math.round(Date.now()/1000), kind: 27235, tags: [['domain', "`+s.Domain+`"]], content: ''}) then get JSON.stringify(it) then set cookies['nip98'] to it otherwise call cookies.clear('nip98') end then call location.reload()
|
||||
@ -137,5 +143,6 @@ func reportsPageHTML(ctx context.Context, params ReportsPageParams) HTMLComponen
|
||||
H1("reports received").Class("text-xl p-4"),
|
||||
Div(items...),
|
||||
),
|
||||
params.loggedUser,
|
||||
)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user