Optionally remember transmission state on reconnect.

This commit is contained in:
Storm Dragon
2026-09-06 18:24:52 -04:00
parent 6817ecd90b
commit 01ca0da7ff
8 changed files with 228 additions and 22 deletions
+31
View File
@@ -14,6 +14,8 @@ import (
"strconv"
"strings"
"syscall"
"git.stormux.org/storm/barnard/config"
)
const (
@@ -444,6 +446,32 @@ func (app *App) remove_server() error {
return app.ui.message("Removed server " + name)
}
func settings_menu_options(rememberTransmissionState bool) []string {
state := "Off"
if rememberTransmissionState {
state = "On"
}
return []string{
"Remember transmission state: " + state,
"Go Back",
}
}
func (app *App) manage_settings() error {
cfg := config.NewConfig(&app.paths.BarnardTOML)
for {
options := settings_menu_options(cfg.GetRememberTransmissionState())
selection, cancelled, err := app.ui.menu(options)
if err != nil || cancelled || selection == len(options)-1 {
return err
}
enabled := !cfg.GetRememberTransmissionState()
if err := cfg.SetRememberTransmissionState(enabled); err != nil {
return app.ui.message("Could not save settings: " + err.Error())
}
}
}
func config_has_value(path, wantedKey string) bool {
file, err := os.Open(path)
if err != nil {
@@ -600,6 +628,8 @@ func (app *App) run() error {
err = app.manage_certificate()
case "Logs":
err = app.manage_logs()
case "Settings":
err = app.manage_settings()
}
if err != nil {
return err
@@ -614,6 +644,7 @@ func main_menu_options() []string {
"Remove server",
"Manage Certificate",
"Logs",
"Settings",
"Exit",
}
}
+12
View File
@@ -209,4 +209,16 @@ func TestProgramIdentityAndMainMenuUseBarnardUI(t *testing.T) {
t.Fatalf("legacy go-ui name remains in main menu: %q", option)
}
}
if !slices.Contains(options, "Settings") {
t.Fatalf("main menu does not contain Settings: %v", options)
}
}
func TestSettingsMenuReportsRememberTransmissionState(t *testing.T) {
if got := settings_menu_options(false)[0]; got != "Remember transmission state: Off" {
t.Fatalf("disabled setting label = %q", got)
}
if got := settings_menu_options(true)[0]; got != "Remember transmission state: On" {
t.Fatalf("enabled setting label = %q", got)
}
}