diff --git a/admin.go b/admin.go index a842653..85f0233 100644 --- a/admin.go +++ b/admin.go @@ -209,7 +209,7 @@ func (b *Barnard) audioSettingsItems() []uiterm.TreeItem { }}, adminItem{label: "Remember transmission state: " + rememberTransmissionState + "; Enter toggles", applicationAction: true, action: func() { enabled := !b.UserConfig.GetRememberTransmissionState() - if err := b.UserConfig.SetRememberTransmissionState(enabled); err != nil { + if err := b.UserConfig.SetRememberTransmissionState(enabled, b.isTransmitting()); err != nil { b.AddOutputLine("Settings: could not save remember transmission state: " + err.Error()) return } diff --git a/config/user_config.go b/config/user_config.go index f377685..227eb44 100644 --- a/config/user_config.go +++ b/config/user_config.go @@ -444,14 +444,14 @@ func (c *Config) GetRememberTransmissionState() bool { return *c.config.RememberTransmissionState } -func (c *Config) SetRememberTransmissionState(enabled bool) error { +func (c *Config) SetRememberTransmissionState(enabled, transmissionActive bool) error { c.mu.Lock() defer c.mu.Unlock() c.config.RememberTransmissionState = &enabled if !enabled { - active := false - c.config.TransmissionActive = &active + transmissionActive = false } + c.config.TransmissionActive = &transmissionActive return c.saveConfigLocked() } diff --git a/config/user_config_test.go b/config/user_config_test.go index 8135403..550c732 100644 --- a/config/user_config_test.go +++ b/config/user_config_test.go @@ -190,7 +190,7 @@ func TestRememberTransmissionStateDefaultsOffAndPersists(t *testing.T) { t.Fatal("expected remembered transmission state to default off") } - if err := cfg.SetRememberTransmissionState(true); err != nil { + if err := cfg.SetRememberTransmissionState(true, false); err != nil { t.Fatal(err) } if err := cfg.SetTransmissionActive(true); err != nil { @@ -209,7 +209,7 @@ func TestRememberTransmissionStateDefaultsOffAndPersists(t *testing.T) { t.Fatal("expected enabled transmission-state remembering and active state to persist") } - if err := reloaded.SetRememberTransmissionState(false); err != nil { + if err := reloaded.SetRememberTransmissionState(false, true); err != nil { t.Fatal(err) } reloaded = NewConfig(&configPath) diff --git a/transmission_state_test.go b/transmission_state_test.go index cca1f96..7ca1e1c 100644 --- a/transmission_state_test.go +++ b/transmission_state_test.go @@ -10,7 +10,7 @@ import ( func TestDisconnectClearPreservesRememberedTransmissionState(t *testing.T) { configPath := filepath.Join(t.TempDir(), "barnard.toml") userConfig := config.NewConfig(&configPath) - if err := userConfig.SetRememberTransmissionState(true); err != nil { + if err := userConfig.SetRememberTransmissionState(true, false); err != nil { t.Fatal(err) } b := &Barnard{UserConfig: userConfig} diff --git a/ui_settings_test.go b/ui_settings_test.go index 3459e39..8892ac1 100644 --- a/ui_settings_test.go +++ b/ui_settings_test.go @@ -40,6 +40,7 @@ func TestAudioSettingsExposeCurrentValuesAndPersistMicChanges(t *testing.T) { items[0].(adminItem).action() items[1].(adminItem).action() + b.setTransmitting(true) items[2].(adminItem).action() reloaded := config.NewConfig(&configPath) if reloaded.GetAGCEnabled() { @@ -51,6 +52,9 @@ func TestAudioSettingsExposeCurrentValuesAndPersistMicChanges(t *testing.T) { if !reloaded.GetRememberTransmissionState() { t.Fatal("settings action did not persist enabled transmission-state remembering") } + if !reloaded.GetTransmissionActive() { + t.Fatal("settings action did not capture the active transmission state") + } if got := b.adjustMicVolume(-0.1); got < 0.899 || got > 0.901 { t.Fatalf("adjusted microphone level = %v, want 0.9", got)