Files
tailscale-vpn/internal/tui/tui.go
2026-04-10 01:46:57 +09:00

57 lines
1.4 KiB
Go

package tui
import (
"tailscale-vpn/internal/pages"
"tailscale-vpn/internal/services"
)
type page int
const (
pageHome page = iota
pageSettings
pageSelectServer
)
type TUIInterface struct {
Services *services.ServicesStore
Page page
MenuItems []pages.MenuItem
Selected int
Quitting bool
WindowWidth int
WindowHeight int
VPNConnected bool
VPNLoading bool
VPNToggleLoading bool
VPNError error
HasServers bool
SelectedServer services.Server
HasSelectedServer bool
SettingsServers []services.Server
SettingsSelected int
SettingsEditMode string
SettingsEditingServer services.Server
SettingsFormName string
SettingsFormHost string
SettingsFormField int
SettingsConfirmDelete bool
SelectServerServers []services.Server
SelectServerSelected int
}
func NewTUIInterface(store *services.ServicesStore) TUIInterface {
servers := store.Config.GetServers()
selectedServer, hasSelected := store.Config.GetSelectedServer()
return TUIInterface{
Services: store,
Page: pageHome,
MenuItems: pages.HomeMenuItems(false, len(servers) > 0),
VPNConnected: false,
VPNLoading: true,
HasServers: len(servers) > 0,
SelectedServer: selectedServer,
HasSelectedServer: hasSelected,
}
}