package main import ( "context" "embed" "net/http" "strings" "github.com/theplant/htmlgo" ) // embed ui files //go:embed ui/dist/* var dist embed.FS func inviteTreeHandler(w http.ResponseWriter, r *http.Request) { content := inviteTreePageHTML(r.Context(), InviteTreePageParams{}) htmlgo.Fprint(w, baseHTML(content), r.Context()) } func addToWhitelistHandler(w http.ResponseWriter, r *http.Request) { pubkey := r.PostFormValue("pubkey") if err := addToWhitelist(r.Context(), pubkey, s.RelayPubkey); err != nil { http.Error(w, "failed to add to whitelist: "+err.Error(), 500) return } content := buildInviteTree(r.Context(), s.RelayPubkey) htmlgo.Fprint(w, content, r.Context()) } func removeFromWhitelistHandler(w http.ResponseWriter, r *http.Request) { pubkey := r.PostFormValue("pubkey") if err := removeFromWhitelist(r.Context(), pubkey); err != nil { http.Error(w, "failed to remove from whitelist: "+err.Error(), 500) return } content := buildInviteTree(r.Context(), s.RelayPubkey) htmlgo.Fprint(w, content, r.Context()) } func reportsViewerHandler(w http.ResponseWriter, r *http.Request) { // var formattedReportsData template.HTML = "" // events, _ := db.QueryEvents(context.Background(), nostr.Filter{ // Kinds: []int{1984}, // Limit: 52, // }) // type Report struct { // ID string // ByUser string // AboutUser string // AboutEvent string // Type string // Content string // } // for ev := range events { // pTag := ev.Tags.GetFirst([]string{"p"}) // eTag := ev.Tags.GetFirst([]string{"e"}) // if pTag != nil { // typeReport := eTag.Relay()[6:] // if typeReport == "" { // typeReport = pTag.Relay()[6:] // } // report := Report{ // ID: ev.ID, // ByUser: ev.PubKey, // AboutUser: pTag.Value(), // AboutEvent: eTag.Value(), // Type: typeReport, // Content: ev.Content, // } // // get AboutEvent content, note1 ect // formattedReportsData += template.HTML(fmt.Sprintf(` //
Report %v
//By User: %v
//About User: %v
`, // report.ID, // getUserInfo(context.Background(), report.ByUser).Npub, // getUserInfo(context.Background(), report.ByUser).Name, // getUserInfo(context.Background(), report.AboutUser).Npub, // getUserInfo(context.Background(), report.AboutUser).Name, // )) // if report.AboutEvent != "" { // // fetch event data // aboutEvents, _ := db.QueryEvents(context.TODO(), nostr.Filter{ // IDs: []string{report.AboutEvent}, // }) // for aboutEvent := range aboutEvents { // formattedReportsData += template.HTML(fmt.Sprintf(` //// About Event:
Kind: %v
//Tags: %v
//Content: %v
//Type: %v
`, // report.Type, // )) // if report.Content != "" { // formattedReportsData += template.HTML(fmt.Sprintf(` //Content: %v
//