Fix: pass username in ctx; more test words

This commit is contained in:
Grail Finder
2025-05-07 06:56:17 +03:00
parent 7bd8e8af06
commit 86ef35160c
4 changed files with 45 additions and 25 deletions

View File

@ -29,20 +29,17 @@ func HandleHideCreateForm(w http.ResponseWriter, r *http.Request) {
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
}
session, ok := ctx.Value(models.CtxSessionKey).(*models.Session)
if !ok {
// trying to get color without a session -> error
abortWithError(w, "session not found")
http.Redirect(w, r, "/", 302)
return
}
// // get room by room-id
// room, err := getRoomByID(session.CurrentRoom)
// if err != nil {
// log.Error("failed to get room", "error", err, "session", session)
// abortWithError(w, "failed to get room")
// return
// }
// log.Debug("got room", "room", room)
state, err := loadState(session.Username)
if err != nil {
abortWithError(w, err.Error())
@ -56,11 +53,6 @@ func HandleShowColor(w http.ResponseWriter, r *http.Request) {
abortWithError(w, "word is not found")
return
}
tmpl, err := template.ParseGlob("components/*.html")
if err != nil {
abortWithError(w, err.Error())
return
}
cardword := models.WordCard{
Word: word,
Color: models.StrToWordColor(color),

View File

@ -2,6 +2,7 @@ package handlers
import (
"golias/config"
"golias/models"
"golias/pkg/cache"
"html/template"
"log/slog"
@ -35,6 +36,21 @@ var roundWords = map[string]string{
"rat": "white",
"perplexity": "blue",
"notion": "red",
"guitar": "blue",
"ocean": "blue",
"moon": "blue",
"coffee": "blue",
"mountain": "blue",
"book": "blue",
"camera": "blue",
"apple": "red",
"fire": "red",
"rose": "red",
"sun": "red",
"cherry": "red",
"heart": "red",
"tomato": "red",
"cloud": "white",
}
func HandlePing(w http.ResponseWriter, r *http.Request) {
@ -47,16 +63,13 @@ func HandleHome(w http.ResponseWriter, r *http.Request) {
abortWithError(w, err.Error())
return
}
// check if user in a room
// roomID := getRoomIDFromCtx(r.Context())
// roomID = "test-id"
// if roomID != "" {
// // get room data
// userState := models.MakeTestState()
// tmpl.ExecuteTemplate(w, "room", userState)
// return
// }
// userState := models.MakeTestState()
userState, _ := getStateByCtx(r.Context())
if userState == nil {
userState = &models.UserState{}
}
// if err != nil {
// abortWithError(w, err.Error())
// return
// }
tmpl.ExecuteTemplate(w, "base", userState)
}

View File

@ -94,7 +94,7 @@ func GetSession(next http.Handler) http.Handler {
}
ctx := context.WithValue(r.Context(),
models.CtxUsernameKey, userSession.Username)
ctx = context.WithValue(r.Context(),
ctx = context.WithValue(ctx,
models.CtxSessionKey, userSession)
if err := cacheSetSession(sessionToken,
userSession); err != nil {

View File

@ -59,6 +59,21 @@ func MakeTestState() *UserState {
{Word: "rat", Color: "white"},
{Word: "perplexity", Color: "blue"},
{Word: "notion", Color: "red"},
{Word: "guitar", Color: "blue"},
{Word: "ocean", Color: "blue"},
{Word: "moon", Color: "blue"},
{Word: "coffee", Color: "blue"},
{Word: "mountain", Color: "blue"},
{Word: "book", Color: "blue"},
{Word: "camera", Color: "blue"},
{Word: "apple", Color: "red"},
{Word: "fire", Color: "red"},
{Word: "rose", Color: "red"},
{Word: "sun", Color: "red"},
{Word: "cherry", Color: "red"},
{Word: "heart", Color: "red"},
{Word: "tomato", Color: "red"},
{Word: "cloud", Color: "white"},
}
room := Room{
ID: "test-id",