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

@ -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, "")
}
}