Merge pull request #601 from anvme/fix/csat-feedback-utf8

fix: truncate CSAT feedback by runes to preserve valid UTF-8
This commit is contained in:
Abhinav Raut
2026-09-14 18:49:20 +05:30
committed by GitHub
+13 -7
View File
@@ -152,10 +152,7 @@ func handleSubmitCSATResponse(r *fastglue.Request) error {
return r.SendErrorEnvelope(fasthttp.StatusBadRequest, "Invalid UUID", nil, envelope.InputError)
}
// Trim feedback if it exceeds max length.
if len(req.Feedback) > maxCsatFeedbackLength {
req.Feedback = req.Feedback[:maxCsatFeedbackLength]
}
req.Feedback = truncateFeedback(req.Feedback)
// Update CSAT response
if err := app.csat.UpdateResponse(uuid, req.Rating, req.Feedback, nil); err != nil {
@@ -187,9 +184,7 @@ func validateCSATForm(r *fastglue.Request) (int, string, json.RawMessage, string
return 0, "", nil, "csat.pleaseFillRequired"
}
if len(feedback) > maxCsatFeedbackLength {
feedback = feedback[:maxCsatFeedbackLength]
}
feedback = truncateFeedback(feedback)
// Collect extra form fields into meta, skipping the known fields.
meta := make(map[string]string)
@@ -220,3 +215,14 @@ func validateCSATForm(r *fastglue.Request) (int, string, json.RawMessage, string
return rating, feedback, metaJSON, ""
}
func truncateFeedback(s string) string {
if len(s) <= maxCsatFeedbackLength {
return s
}
r := []rune(s)
if len(r) <= maxCsatFeedbackLength {
return s
}
return string(r[:maxCsatFeedbackLength])
}