init
This commit is contained in:
56
internal/tui/tui.go
Normal file
56
internal/tui/tui.go
Normal file
@@ -0,0 +1,56 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user