Chore: remove seconds tracking inside of settings

This commit is contained in:
Grail Finder
2025-07-04 16:58:23 +03:00
parent 2a2bf4e23d
commit a4dc8f4bbb
10 changed files with 37 additions and 49 deletions

View File

@ -9,6 +9,7 @@ import (
"gralias/models"
"gralias/utils"
"html/template"
"log/slog"
"net/http"
"strings"
"time"
@ -89,7 +90,6 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
// userstate, err := loadState(cleanName)
userstate, err := repo.PlayerGetByName(r.Context(), cleanName)
if err != nil || userstate == nil {
userstate = models.InitPlayer(cleanName)
makeplayer = true
}
@ -181,7 +181,12 @@ func makeCookie(username string, remote string) (*http.Cookie, error) {
cookie.Secure = false
log.Info("changing cookie domain", "domain", cookie.Domain)
}
// set ctx?
// make player first, since username is fk to players table
player := models.InitPlayer(username)
if err := repo.PlayerAdd(context.Background(), player); err != nil {
slog.Error("failed to create player", "username", username)
return nil, err
}
if err := repo.SessionCreate(context.Background(), session); err != nil {
return nil, err
}

View File

@ -40,22 +40,11 @@ func HandleCreateRoom(w http.ResponseWriter, r *http.Request) {
}
fi.State.RoomID = &room.ID
fi.Room = room
// if err := repo.RoomCreate(r.Context(), room); err != nil {
// log.Error("failed to create a room", "error", err)
// abortWithError(w, err.Error())
// return
// }
if err := repo.PlayerSetRoomID(r.Context(), fi.State.Username, room.ID); err != nil {
if err := repo.PlayerSetRoomID(r.Context(), room.ID, fi.State.Username); err != nil {
log.Error("failed to set room id", "error", err)
abortWithError(w, err.Error())
return
}
// if err := saveFullInfo(r.Context(), fi); err != nil {
// msg := "failed to set current room to session"
// log.Error(msg, "error", err)
// abortWithError(w, msg)
// return
// }
notify(models.NotifyRoomListUpdate, "")
tmpl, err := template.ParseGlob("components/*.html")
if err != nil {
@ -348,7 +337,6 @@ func HandleGiveClue(w http.ResponseWriter, r *http.Request) {
fi.Room.ThisTurnLimit = 9
}
fi.Room.OpenedThisTurn = 0
fi.Room.Settings.TurnSecondsLeft = fi.Room.Settings.RoundTime
StartTurnTimer(fi.Room.ID, time.Duration(fi.Room.Settings.RoundTime)*time.Second)
log.Debug("given clue", "clue", clue, "limit", fi.Room.ThisTurnLimit)
notify(models.NotifyBacklogPrefix+fi.Room.ID, clue+num)

View File

@ -28,39 +28,31 @@ func StartTurnTimer(roomID string, duration time.Duration) {
done := make(chan bool)
timers[roomID] = &roomTimer{ticker: ticker, done: done}
go func() {
settings, err := repo.SettingsGetByRoomID(context.Background(), roomID)
room, err := repo.RoomGetByID(context.Background(), roomID)
if err != nil {
log.Error("failed to get settings by room id", "error", err)
log.Error("failed to get room by id", "error", err)
StopTurnTimer(roomID)
return
}
timeLeft := room.Settings.RoundTime
for {
select {
case <-done:
return
case <-ticker.C:
if settings.TurnSecondsLeft <= 0 {
if timeLeft <= 0 {
log.Info("turn time is over", "room_id", roomID)
room, err := repo.RoomGetByID(context.Background(), roomID)
if err != nil {
log.Error("failed to get room by id", "error", err)
StopTurnTimer(roomID)
return
}
room.ChangeTurn()
room.MimeDone = false
if err := repo.RoomUpdate(context.Background(), room); err != nil {
log.Error("failed to save room", "error", err)
}
notify(models.NotifyTurnTimerPrefix+room.ID, strconv.FormatUint(uint64(room.Settings.TurnSecondsLeft), 10))
notify(models.NotifyTurnTimerPrefix+room.ID, strconv.FormatUint(uint64(room.Settings.RoundTime), 10))
notifyBotIfNeeded(room)
StopTurnTimer(roomID)
return
}
settings.TurnSecondsLeft--
if err := repo.SettingsUpdate(context.Background(), settings); err != nil {
log.Error("failed to update settings", "error", err)
}
timeLeft--
notify(models.NotifyRoomUpdatePrefix+roomID, "")
}
}