2024-10-27 09:41:31 +00:00
|
|
|
package frontend
|
|
|
|
|
|
|
|
import (
|
|
|
|
"atomicgo.dev/keyboard"
|
|
|
|
"atomicgo.dev/keyboard/keys"
|
2024-10-27 20:34:53 +00:00
|
|
|
ws "github.com/gorilla/websocket"
|
|
|
|
|
2024-10-27 09:41:31 +00:00
|
|
|
"git.smsvc.net/pomodoro/ChronoTomato/internal/websocket"
|
2024-10-27 20:34:53 +00:00
|
|
|
|
2024-10-27 09:41:31 +00:00
|
|
|
ChronoTomato "git.smsvc.net/pomodoro/ChronoTomato/pkg/models"
|
|
|
|
GoTomato "git.smsvc.net/pomodoro/GoTomato/pkg/models"
|
|
|
|
)
|
|
|
|
|
2024-10-27 20:57:05 +00:00
|
|
|
func start_pause_resume(message *GoTomato.ServerMessage) string {
|
|
|
|
if !message.Ongoing {
|
|
|
|
return "start"
|
|
|
|
}
|
|
|
|
if message.Paused {
|
|
|
|
return "resume"
|
|
|
|
} else {
|
|
|
|
return "pause"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-10-27 09:41:31 +00:00
|
|
|
func keyhandler(conn *ws.Conn, config ChronoTomato.Config, message *GoTomato.ServerMessage, quit chan bool) {
|
|
|
|
keyboard.Listen(func(key keys.Key) (stop bool, err error) {
|
|
|
|
select {
|
|
|
|
case <-websocket.Done:
|
|
|
|
quit <- true
|
|
|
|
return true, nil
|
|
|
|
default:
|
|
|
|
switch key.String() {
|
|
|
|
case "space":
|
2024-10-27 20:57:05 +00:00
|
|
|
cmd := start_pause_resume(message)
|
|
|
|
websocket.SendCmd(conn, config.Password, cmd)
|
2024-10-27 09:41:31 +00:00
|
|
|
case "s":
|
|
|
|
websocket.SendCmd(conn, config.Password, "stop")
|
|
|
|
case "r":
|
2024-10-28 06:56:37 +00:00
|
|
|
if config.PomodoroConfig != (GoTomato.PomodoroConfig{}) {
|
2024-10-27 09:41:31 +00:00
|
|
|
websocket.Send_updateSettings(conn, config.Password, config.PomodoroConfig)
|
|
|
|
}
|
|
|
|
case "q":
|
|
|
|
quit <- true
|
|
|
|
return true, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false, nil
|
|
|
|
})
|
|
|
|
}
|