@ -12,6 +12,7 @@ import (
gonostr "github.com/nbd-wtf/go-nostr"
gonostr "github.com/nbd-wtf/go-nostr"
"gitcitadel-online/internal/cache"
"gitcitadel-online/internal/cache"
"gitcitadel-online/internal/generator"
"gitcitadel-online/internal/nostr"
"gitcitadel-online/internal/nostr"
)
)
@ -119,11 +120,8 @@ func (s *Server) handleContact(w http.ResponseWriter, r *http.Request) {
}
}
}
}
// Get feed items from cache
// Render the contact form (feed items not needed - only on landing page)
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
html , err := s . htmlGenerator . GenerateContactPage ( false , "" , "" , nil , repoAnnouncement , [ ] generator . FeedItemInfo { } )
// Render the contact form
html , err := s . htmlGenerator . GenerateContactPage ( false , "" , "" , nil , repoAnnouncement , feedItems )
if err != nil {
if err != nil {
http . Error ( w , "Failed to generate contact page" , http . StatusInternalServerError )
http . Error ( w , "Failed to generate contact page" , http . StatusInternalServerError )
return
return
@ -140,8 +138,7 @@ func (s *Server) handleContact(w http.ResponseWriter, r *http.Request) {
// Parse form data
// Parse form data
if err := r . ParseForm ( ) ; err != nil {
if err := r . ParseForm ( ) ; err != nil {
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Failed to parse form data" , "" , nil , nil , [ ] generator . FeedItemInfo { } )
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Failed to parse form data" , "" , nil , nil , feedItems )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Write ( [ ] byte ( html ) )
w . Write ( [ ] byte ( html ) )
return
return
@ -153,13 +150,12 @@ func (s *Server) handleContact(w http.ResponseWriter, r *http.Request) {
// Validate required fields
// Validate required fields
if subject == "" || content == "" {
if subject == "" || content == "" {
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
formData := map [ string ] string {
formData := map [ string ] string {
"subject" : subject ,
"subject" : subject ,
"content" : content ,
"content" : content ,
"labels" : labelsStr ,
"labels" : labelsStr ,
}
}
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Subject and message are required" , "" , formData , nil , feedItems )
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Subject and message are required" , "" , formData , nil , [ ] generator . FeedItemInfo { } )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Write ( [ ] byte ( html ) )
w . Write ( [ ] byte ( html ) )
return
return
@ -184,13 +180,12 @@ func (s *Server) handleContact(w http.ResponseWriter, r *http.Request) {
repoAnnouncement , err := s . issueService . FetchRepoAnnouncement ( ctx , s . repoAnnouncement )
repoAnnouncement , err := s . issueService . FetchRepoAnnouncement ( ctx , s . repoAnnouncement )
if err != nil {
if err != nil {
log . Printf ( "Failed to fetch repo announcement: %v" , err )
log . Printf ( "Failed to fetch repo announcement: %v" , err )
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
formData := map [ string ] string {
formData := map [ string ] string {
"subject" : subject ,
"subject" : subject ,
"content" : content ,
"content" : content ,
"labels" : labelsStr ,
"labels" : labelsStr ,
}
}
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Failed to connect to repository. Please try again later." , "" , formData , nil , feedItems )
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Failed to connect to repository. Please try again later." , "" , formData , nil , [ ] generator . FeedItemInfo { } )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Write ( [ ] byte ( html ) )
w . Write ( [ ] byte ( html ) )
return
return
@ -207,21 +202,19 @@ func (s *Server) handleContact(w http.ResponseWriter, r *http.Request) {
eventID , err := s . issueService . PublishIssue ( ctx , repoAnnouncement , issueReq , "" )
eventID , err := s . issueService . PublishIssue ( ctx , repoAnnouncement , issueReq , "" )
if err != nil {
if err != nil {
log . Printf ( "Failed to publish issue: %v" , err )
log . Printf ( "Failed to publish issue: %v" , err )
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
formData := map [ string ] string {
formData := map [ string ] string {
"subject" : subject ,
"subject" : subject ,
"content" : content ,
"content" : content ,
"labels" : labelsStr ,
"labels" : labelsStr ,
}
}
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Failed to submit your message. Please try again later." , "" , formData , nil , feedItems )
html , _ := s . htmlGenerator . GenerateContactPage ( false , "Failed to submit your message. Please try again later." , "" , formData , nil , [ ] generator . FeedItemInfo { } )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Header ( ) . Set ( "Content-Type" , "text/html; charset=utf-8" )
w . Write ( [ ] byte ( html ) )
w . Write ( [ ] byte ( html ) )
return
return
}
}
// Success - render success page
// Success - render success page
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
html , err := s . htmlGenerator . GenerateContactPage ( true , "" , eventID , nil , repoAnnouncement , [ ] generator . FeedItemInfo { } )
html , err := s . htmlGenerator . GenerateContactPage ( true , "" , eventID , nil , repoAnnouncement , feedItems )
if err != nil {
if err != nil {
http . Error ( w , "Failed to generate success page" , http . StatusInternalServerError )
http . Error ( w , "Failed to generate success page" , http . StatusInternalServerError )
return
return
@ -315,8 +308,7 @@ func (s *Server) handleRobots(w http.ResponseWriter, r *http.Request) {
// handle404 handles 404 errors
// handle404 handles 404 errors
func ( s * Server ) handle404 ( w http . ResponseWriter , _ * http . Request ) {
func ( s * Server ) handle404 ( w http . ResponseWriter , _ * http . Request ) {
w . WriteHeader ( http . StatusNotFound )
w . WriteHeader ( http . StatusNotFound )
feedItems := s . convertFeedItemsToInfo ( s . feedCache . Get ( ) )
html , err := s . htmlGenerator . GenerateErrorPage ( 404 , [ ] generator . FeedItemInfo { } )
html , err := s . htmlGenerator . GenerateErrorPage ( 404 , feedItems )
if err != nil {
if err != nil {
w . Write ( [ ] byte ( "404 - Page Not Found" ) )
w . Write ( [ ] byte ( "404 - Page Not Found" ) )
return
return