From 77f661fa2ce2d120a4760d5c55f32f58ba8cd12a Mon Sep 17 00:00:00 2001 From: agent-company Date: Thu, 26 Mar 2026 17:07:37 +0000 Subject: [PATCH] fix: validate owner/repo split in create_issue.html before submission Add client-side validation to ensure a repository is selected before form submission. Split owner/repo on both change and submit events. Show inline error messages via form-error div. Update CreateIssue handler to return HTMX-friendly HTML error fragments on 400/500. Closes leeworks-agents/gitea-mobile#30 Co-Authored-By: Claude Opus 4.6 (1M context) --- internal/handlers/handlers.go | 12 +++++++ internal/templates/create_issue.html | 48 ++++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index bd3dab4..a69232f 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -493,6 +493,12 @@ func (h *Handler) CreateIssue(w http.ResponseWriter, r *http.Request) { body := r.FormValue("body") if owner == "" || repo == "" || title == "" { + if isHTMX(r) { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + w.WriteHeader(http.StatusBadRequest) + fmt.Fprint(w, `owner, repo, and title are required`) + return + } http.Error(w, "owner, repo, and title are required", http.StatusBadRequest) return } @@ -500,6 +506,12 @@ func (h *Handler) CreateIssue(w http.ResponseWriter, r *http.Request) { issue, err := h.Client.CreateIssue(r.Context(), token, owner, repo, title, body, nil) if err != nil { slog.Error("failed to create issue", "error", err) + if isHTMX(r) { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + w.WriteHeader(http.StatusInternalServerError) + fmt.Fprint(w, `Failed to create issue. Please try again.`) + return + } http.Error(w, "failed to create issue", http.StatusInternalServerError) return } diff --git a/internal/templates/create_issue.html b/internal/templates/create_issue.html index ac1c6f7..f317de6 100644 --- a/internal/templates/create_issue.html +++ b/internal/templates/create_issue.html @@ -1,7 +1,9 @@ {{define "content"}}

Create Issue

-
+ + +