From 86ef35160c8f192a1f11a68ced4ee656572a3762 Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Wed, 7 May 2025 06:56:17 +0300 Subject: [PATCH] Fix: pass username in ctx; more test words --- handlers/elements.go | 20 ++++++-------------- handlers/handlers.go | 33 +++++++++++++++++++++++---------- handlers/middleware.go | 2 +- models/state.go | 15 +++++++++++++++ 4 files changed, 45 insertions(+), 25 deletions(-) diff --git a/handlers/elements.go b/handlers/elements.go index 406b3a0..53473c2 100644 --- a/handlers/elements.go +++ b/handlers/elements.go @@ -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), diff --git a/handlers/handlers.go b/handlers/handlers.go index 286e352..7c70fcf 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -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) } diff --git a/handlers/middleware.go b/handlers/middleware.go index 20cbc65..6e6ec66 100644 --- a/handlers/middleware.go +++ b/handlers/middleware.go @@ -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 { diff --git a/models/state.go b/models/state.go index a200d0b..70944ce 100644 --- a/models/state.go +++ b/models/state.go @@ -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",