Compare commits

..

2 commits

Author SHA1 Message Date
32a33dc684 feat: update variable and function name for started pomodoro
- change variable name from pomodoroRunning to pomodoroOngoing
- update function name from IsPomodoroRunning to IsPomodoroOngoing
- modify client command checks to use IsPomodoroActive instead of IsPomodoroRunning

🤖
2024-10-20 18:08:12 +02:00
b71d04aad2 fix: remove duplicate client registration
- delete the client creation logic from handleClientCommands
2024-10-20 17:38:45 +02:00
3 changed files with 12 additions and 17 deletions

View file

@ -14,7 +14,7 @@ var PomodoroConfig = models.GoTomatoTimerConfig{
Sessions: 4,
}
var pomodoroRunning bool
var pomodoroOngoing bool
var pomodoroPaused bool
var pomodoroResetChannel = make(chan bool, 1)
@ -26,7 +26,7 @@ var mu sync.Mutex // to synchronize access to shared state
// RunPomodoroTimer iterates the Pomodoro work/break sessions.
func RunPomodoroTimer(clients map[*websocket.Conn]*models.Client) {
mu.Lock()
pomodoroRunning = true
pomodoroOngoing = true
pomodoroPaused = false
mu.Unlock()
@ -46,14 +46,14 @@ func RunPomodoroTimer(clients map[*websocket.Conn]*models.Client) {
}
mu.Lock()
pomodoroRunning = false
pomodoroOngoing = false
mu.Unlock()
}
// ResetPomodoro resets the running Pomodoro timer.
func ResetPomodoro(clients map[*websocket.Conn]*models.Client) {
mu.Lock()
pomodoroRunning = false // Reset the running state
pomodoroOngoing = false // Reset the running state
pomodoroPaused = false // Reset the paused state
mu.Unlock()
@ -84,10 +84,10 @@ func ResumePomodoro() {
pomodoroResumeChannel <- true
}
func IsPomodoroRunning() bool {
func IsPomodoroOngoing() bool {
mu.Lock()
defer mu.Unlock() // Ensures that the mutex is unlocked after the function is done
return pomodoroRunning
return pomodoroOngoing
}
func IsPomodoroPaused() bool {

View file

@ -15,13 +15,6 @@ var mu sync.Mutex // Mutex to protect access to the Clients map
// handleClientCommands listens for commands from WebSocket clients and dispatches to the timer.
func handleClientCommands(ws *websocket.Conn) {
// Create a new Client and add it to the Clients map
mu.Lock()
Clients[ws] = &models.Client{
Conn: ws,
}
mu.Unlock()
for {
_, message, err := ws.ReadMessage()
if err != nil {
@ -41,19 +34,19 @@ func handleClientCommands(ws *websocket.Conn) {
// Process the command
switch command.Command {
case "start":
if !pomodoro.IsPomodoroRunning() {
if !pomodoro.IsPomodoroActive() {
go pomodoro.RunPomodoroTimer(Clients) // Start the timer with the list of clients
}
case "stop":
if pomodoro.IsPomodoroRunning() {
if pomodoro.IsPomodoroActive() {
pomodoro.ResetPomodoro(Clients) // Reset Pomodoro
}
case "pause":
if pomodoro.IsPomodoroRunning() && !pomodoro.IsPomodoroPaused() {
if pomodoro.IsPomodoroActive() && !pomodoro.IsPomodoroPaused() {
pomodoro.PausePomodoro() // Pause the timer
}
case "resume":
if pomodoro.IsPomodoroRunning() && pomodoro.IsPomodoroPaused() {
if pomodoro.IsPomodoroActive() && pomodoro.IsPomodoroPaused() {
pomodoro.ResumePomodoro() // Resume the timer
}
}

View file

@ -23,9 +23,11 @@ func HandleConnections(w http.ResponseWriter, r *http.Request) {
defer ws.Close()
// Register the new client
mu.Lock()
Clients[ws] = &models.Client{
Conn: ws, // Store the WebSocket connection
}
mu.Unlock()
// Listen for commands from the connected client
handleClientCommands(ws)