feat: add keyboard controls

- add keyboard listener for space, r, and q keys
- create shared state for server messages
- update desktop and terminal notifications to use shared state

🤖
This commit is contained in:
Sebastian Mark 2024-10-23 13:16:30 +02:00
parent 11c599a371
commit 4dcc984784
7 changed files with 107 additions and 9 deletions

View file

@ -1,12 +1,14 @@
package notifications
import (
"ChronoTomato/internal/shared"
"fmt"
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
"github.com/gen2brain/beeep"
)
func DesktopNotifications(msg models.ServerMessage) {
func DesktopNotifications() {
msg := &shared.ServerMessage
var duration int
var notification string

View file

@ -1,13 +1,15 @@
package notifications
import (
"ChronoTomato/internal/shared"
"fmt"
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
)
func TerminalOutput(msg models.ServerMessage) {
func TerminalOutput() {
var timerOutput string
msg := &shared.ServerMessage
fmt.Print("\033[H\033[2J") // Clears the screen
fmt.Printf("Work: %d | Break: %d | Longbreak: %d\n",

7
internal/shared/state.go Normal file
View file

@ -0,0 +1,7 @@
package shared
import (
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
)
var ServerMessage models.ServerMessage

View file

@ -2,9 +2,9 @@ package websocket
import (
"ChronoTomato/internal/notifications"
"ChronoTomato/internal/shared"
"encoding/json"
"fmt"
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
"github.com/charmbracelet/log"
"github.com/gorilla/websocket"
)
@ -12,7 +12,6 @@ import (
var Done = make(chan struct{})
func ProcessServerMessages(conn *websocket.Conn) {
var serverMessage models.ServerMessage
defer close(Done)
@ -24,14 +23,14 @@ func ProcessServerMessages(conn *websocket.Conn) {
return
}
err = json.Unmarshal(message, &serverMessage)
err = json.Unmarshal(message, &shared.ServerMessage)
if err != nil {
log.Error("Error unmarshalling!", "reason", err)
continue
}
notifications.DesktopNotifications(serverMessage)
notifications.TerminalOutput(serverMessage)
notifications.DesktopNotifications()
notifications.TerminalOutput()
}
}