Files
settuings/internal/ui/network/commands.go
T
Hadi 59b31e5ca3 init
Signed-off-by: Hadi <[email protected]>
2026-08-13 00:58:37 +02:00

119 lines
3.0 KiB
Go

package network
import (
"time"
tea "charm.land/bubbletea/v2"
"github.com/anotherhadi/settuings/internal/network"
)
const tickInterval = 5 * time.Second
func tickCmd() tea.Cmd {
return tea.Tick(tickInterval, func(time.Time) tea.Msg { return tickMsg{} })
}
func checkCmd() tea.Cmd {
return func() tea.Msg { return checkMsg{err: network.CheckAvailable()} }
}
func fetchWifiCmd() tea.Cmd {
return func() tea.Msg {
radioOn, _ := network.RadioEnabled()
networks, err := network.ListWifi()
if err != nil {
return wifiListMsg{radioOn: radioOn, err: err}
}
var ip, device, connectionName string
if dev, err := network.WifiDevice(); err == nil {
device = dev.Name
if dev.Connected() {
ip, _ = network.DeviceIP4(dev.Name)
connectionName = dev.Connection
}
}
return wifiListMsg{networks: networks, ip: ip, device: device, connectionName: connectionName, radioOn: radioOn}
}
}
func toggleWifiRadioCmd(on bool) tea.Cmd {
return func() tea.Msg { return radioActionMsg{err: network.SetWifiRadio(on)} }
}
func rescanWifiCmd() tea.Cmd {
return func() tea.Msg { return wifiActionMsg{err: network.Rescan()} }
}
func connectWifiCmd(ssid, password string) tea.Cmd {
return func() tea.Msg { return wifiActionMsg{err: network.ConnectWifi(ssid, password)} }
}
func disconnectWifiCmd() tea.Cmd {
return func() tea.Msg {
dev, err := network.WifiDevice()
if err != nil {
return wifiActionMsg{err: err}
}
return wifiActionMsg{err: network.DisconnectWifi(dev.Name)}
}
}
func fetchEthernetCmd() tea.Cmd {
return func() tea.Msg {
devices, err := network.ListEthernet()
return ethernetListMsg{devices: devices, err: err}
}
}
func ethernetConnectCmd(device string) tea.Cmd {
return func() tea.Msg { return ethernetActionMsg{err: network.DeviceConnect(device)} }
}
func ethernetDownCmd(device string) tea.Cmd {
return func() tea.Msg { return ethernetActionMsg{err: network.EthernetDown(device)} }
}
func fetchVPNCmd() tea.Cmd {
return func() tea.Msg {
conns, err := network.ListVPN()
return vpnListMsg{conns: conns, err: err}
}
}
func vpnUpCmd(name string) tea.Cmd {
return func() tea.Msg { return vpnActionMsg{err: network.VPNUp(name)} }
}
func vpnDownCmd(name string) tea.Cmd {
return func() tea.Msg { return vpnActionMsg{err: network.VPNDown(name)} }
}
func fetchKnownCmd() tea.Cmd {
return func() tea.Msg {
networks, err := network.ListKnownWifi()
return knownListMsg{networks: networks, err: err}
}
}
func fetchSecretCmd(name string) tea.Cmd {
return func() tea.Msg {
secret, err := network.Secret(name)
return knownSecretMsg{name: name, secret: secret, err: err}
}
}
func toggleAutoConnectCmd(name string, enabled bool) tea.Cmd {
return func() tea.Msg { return knownActionMsg{err: network.SetAutoConnect(name, enabled)} }
}
func forgetCmd(name string) tea.Cmd {
return func() tea.Msg { return knownActionMsg{err: network.Forget(name)} }
}
func fetchDeviceDetailCmd(device string) tea.Cmd {
return func() tea.Msg {
detail, err := network.DeviceDetails(device)
return deviceDetailMsg{detail: detail, err: err}
}
}