feat: refactor signal handling and update websocket disconnect handling
- remove os signal handling interrupt
- rename WaitForDisconnect to Disconnect function
- improve websocket disconnection logic
- exit keyboard listener on disconnect
🤖
This commit is contained in:
parent
deff8f3554
commit
e14492a01c
2 changed files with 40 additions and 45 deletions
|
@ -3,8 +3,6 @@ package client
|
|||
import (
|
||||
"atomicgo.dev/cursor"
|
||||
"flag"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
||||
"git.smsvc.net/pomodoro/ChronoTomato/internal/helper"
|
||||
"git.smsvc.net/pomodoro/ChronoTomato/internal/shared"
|
||||
|
@ -15,11 +13,7 @@ import (
|
|||
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
|
||||
)
|
||||
|
||||
var interrupt = make(chan os.Signal, 1)
|
||||
|
||||
func Start() {
|
||||
signal.Notify(interrupt, os.Interrupt)
|
||||
|
||||
cursor.Hide()
|
||||
defer cursor.Show()
|
||||
|
||||
|
@ -46,35 +40,39 @@ func Start() {
|
|||
|
||||
pomodoro := &shared.ServerMessage
|
||||
keyboard.Listen(func(key keys.Key) (stop bool, err error) {
|
||||
switch key.String() {
|
||||
case "space":
|
||||
if !pomodoro.Ongoing {
|
||||
websocket.SendCmd(conn, password, "start")
|
||||
return false, nil
|
||||
}
|
||||
if pomodoro.Paused {
|
||||
websocket.SendCmd(conn, password, "resume")
|
||||
return false, nil
|
||||
} else {
|
||||
websocket.SendCmd(conn, password, "pause")
|
||||
return false, nil
|
||||
}
|
||||
case "s":
|
||||
websocket.SendCmd(conn, password, "stop")
|
||||
return false, nil
|
||||
case "r":
|
||||
|
||||
if config.PomodoroConfig != (models.GoTomatoPomodoroConfig{}) {
|
||||
websocket.Send_updateSettings(conn, password, config.PomodoroConfig)
|
||||
}
|
||||
return false, nil
|
||||
case "q":
|
||||
interrupt <- os.Interrupt
|
||||
select {
|
||||
case <-websocket.Done:
|
||||
return true, nil
|
||||
default:
|
||||
switch key.String() {
|
||||
case "space":
|
||||
if !pomodoro.Ongoing {
|
||||
websocket.SendCmd(conn, password, "start")
|
||||
return false, nil
|
||||
}
|
||||
if pomodoro.Paused {
|
||||
websocket.SendCmd(conn, password, "resume")
|
||||
return false, nil
|
||||
} else {
|
||||
websocket.SendCmd(conn, password, "pause")
|
||||
return false, nil
|
||||
}
|
||||
case "s":
|
||||
websocket.SendCmd(conn, password, "stop")
|
||||
return false, nil
|
||||
case "r":
|
||||
|
||||
if config.PomodoroConfig != (models.GoTomatoPomodoroConfig{}) {
|
||||
websocket.Send_updateSettings(conn, password, config.PomodoroConfig)
|
||||
}
|
||||
return false, nil
|
||||
case "q":
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
|
||||
return false, nil
|
||||
})
|
||||
|
||||
websocket.WaitForDisconnect(conn, interrupt)
|
||||
websocket.Disconnect(conn)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue