Files
golias/handlers/elements.go
2025-05-10 11:03:23 +03:00

75 lines
1.7 KiB
Go

package handlers
import (
"errors"
"golias/models"
"html/template"
"net/http"
)
func HandleShowCreateForm(w http.ResponseWriter, r *http.Request) {
show := true
tmpl, err := template.ParseGlob("components/*.html")
if err != nil {
abortWithError(w, err.Error())
return
}
tmpl.ExecuteTemplate(w, "createform", show)
}
func HandleHideCreateForm(w http.ResponseWriter, r *http.Request) {
show := false
tmpl, err := template.ParseGlob("components/*.html")
if err != nil {
abortWithError(w, err.Error())
return
}
tmpl.ExecuteTemplate(w, "createform", show)
}
func HandleShowColor(w http.ResponseWriter, r *http.Request) {
word := r.URL.Query().Get("word")
ctx := r.Context()
tmpl, err := template.ParseGlob("components/*.html")
if err != nil {
abortWithError(w, err.Error())
return
}
fi, err := getFullInfoByCtx(ctx)
if err != nil {
abortWithError(w, err.Error())
return
}
if fi.State.Role != "guesser" {
err = errors.New("need to guesser to open the card")
abortWithError(w, err.Error())
return
}
// whos move it is?
if fi.State.Team != models.UserTeam(fi.Room.TeamTurn) {
err = errors.New("not your team's move")
abortWithError(w, err.Error())
return
}
log.Debug("got state", "state", fi)
// TODO: update room score
color, exists := roundWords[word]
log.Debug("got show-color request", "word", word, "color", color)
if !exists {
abortWithError(w, "word is not found")
return
}
cardword := models.WordCard{
Word: word,
Color: models.StrToWordColor(color),
Revealed: true,
}
fi.Room.RevealSpecificWord(word)
if err := saveFullInfo(fi); err != nil {
abortWithError(w, err.Error())
return
}
notify(models.NotifyRoomUpdatePrefix+fi.Room.ID, "")
tmpl.ExecuteTemplate(w, "cardword", cardword)
}