init
This commit is contained in:
100
internal/tui/commands.go
Normal file
100
internal/tui/commands.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"tailscale-vpn/internal/pages"
|
||||
"tailscale-vpn/internal/services"
|
||||
|
||||
tea "charm.land/bubbletea/v2"
|
||||
)
|
||||
|
||||
func checkVPNStatusCmd(store *services.ServicesStore) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
ctx := context.Background()
|
||||
connected, err := store.VPN.CheckStatus(ctx)
|
||||
return pages.VPNStatusMsg{
|
||||
Connected: connected,
|
||||
Err: err,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func turnOnVPNCmd(store *services.ServicesStore) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
ctx := context.Background()
|
||||
if err := store.VPN.TurnOn(ctx); err != nil {
|
||||
return pages.VPNToggleMsg{
|
||||
Connected: false,
|
||||
Err: err,
|
||||
}
|
||||
}
|
||||
connected, _ := store.VPN.CheckStatus(ctx)
|
||||
return pages.VPNToggleMsg{
|
||||
Connected: connected,
|
||||
Err: nil,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func turnOffVPNCmd(store *services.ServicesStore) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
ctx := context.Background()
|
||||
if err := store.VPN.TurnOff(ctx); err != nil {
|
||||
return pages.VPNToggleMsg{
|
||||
Connected: true,
|
||||
Err: err,
|
||||
}
|
||||
}
|
||||
connected, _ := store.VPN.CheckStatus(ctx)
|
||||
return pages.VPNToggleMsg{
|
||||
Connected: connected,
|
||||
Err: nil,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func loadServersCmd(store *services.ServicesStore) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
servers := store.Config.GetServers()
|
||||
return pages.ServerListLoadedMsg{
|
||||
Servers: servers,
|
||||
Err: nil,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func addServerCmd(store *services.ServicesStore, name, host string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
err := store.Config.AddServer(name, host)
|
||||
return pages.ServerSaveMsg{Err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func updateServerCmd(store *services.ServicesStore, id, name, host string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
err := store.Config.UpdateServer(id, name, host)
|
||||
return pages.ServerSaveMsg{Err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func deleteServerCmd(store *services.ServicesStore, id string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
err := store.Config.RemoveServer(id)
|
||||
return pages.ServerDeleteMsg{Err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func selectServerCmd(store *services.ServicesStore, serverID string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
err := store.Config.SetSelectedServer(serverID)
|
||||
if err != nil {
|
||||
return pages.ServerSelectedMsg{Err: err}
|
||||
}
|
||||
server, ok := store.Config.GetSelectedServer()
|
||||
if !ok {
|
||||
return pages.ServerSelectedMsg{Err: fmt.Errorf("failed to get selected server")}
|
||||
}
|
||||
return pages.ServerSelectedMsg{Server: server, Err: nil}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user