htmgo/examples/chat/partials/chat.go

36 lines
804 B
Go
Raw Permalink Normal View History

2024-10-02 03:26:03 +00:00
package partials
import (
"chat/components"
2024-10-04 16:15:57 +00:00
"chat/sse"
2024-10-02 03:26:03 +00:00
"github.com/maddalax/htmgo/framework/h"
"github.com/maddalax/htmgo/framework/service"
)
func SendMessage(ctx *h.RequestContext) *h.Partial {
locator := ctx.ServiceLocator()
2024-10-04 16:15:57 +00:00
socketManager := service.Get[sse.SocketManager](locator)
2024-10-02 03:26:03 +00:00
sessionCookie, err := ctx.Request.Cookie("session_id")
if err != nil {
return h.SwapPartial(ctx, components.FormError("Session not found"))
}
message := ctx.Request.FormValue("message")
if message == "" {
return h.SwapPartial(ctx, components.FormError("Message is required"))
}
if len(message) > 200 {
return h.SwapPartial(ctx, components.FormError("Message is too long"))
}
socketManager.OnMessage(sessionCookie.Value, map[string]any{
"message": message,
})
return h.EmptyPartial()
}