Fixed an edge case durring disonnect when remember transmission

This commit is contained in:
Storm Dragon
2026-09-06 18:41:28 -04:00
parent e8df68c749
commit ca9c25f2d8
5 changed files with 11 additions and 7 deletions
+1 -1
View File
@@ -209,7 +209,7 @@ func (b *Barnard) audioSettingsItems() []uiterm.TreeItem {
}}, }},
adminItem{label: "Remember transmission state: " + rememberTransmissionState + "; Enter toggles", applicationAction: true, action: func() { adminItem{label: "Remember transmission state: " + rememberTransmissionState + "; Enter toggles", applicationAction: true, action: func() {
enabled := !b.UserConfig.GetRememberTransmissionState() 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()) b.AddOutputLine("Settings: could not save remember transmission state: " + err.Error())
return return
} }
+3 -3
View File
@@ -444,14 +444,14 @@ func (c *Config) GetRememberTransmissionState() bool {
return *c.config.RememberTransmissionState return *c.config.RememberTransmissionState
} }
func (c *Config) SetRememberTransmissionState(enabled bool) error { func (c *Config) SetRememberTransmissionState(enabled, transmissionActive bool) error {
c.mu.Lock() c.mu.Lock()
defer c.mu.Unlock() defer c.mu.Unlock()
c.config.RememberTransmissionState = &enabled c.config.RememberTransmissionState = &enabled
if !enabled { if !enabled {
active := false transmissionActive = false
c.config.TransmissionActive = &active
} }
c.config.TransmissionActive = &transmissionActive
return c.saveConfigLocked() return c.saveConfigLocked()
} }
+2 -2
View File
@@ -190,7 +190,7 @@ func TestRememberTransmissionStateDefaultsOffAndPersists(t *testing.T) {
t.Fatal("expected remembered transmission state to default off") 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) t.Fatal(err)
} }
if err := cfg.SetTransmissionActive(true); err != nil { 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") 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) t.Fatal(err)
} }
reloaded = NewConfig(&configPath) reloaded = NewConfig(&configPath)
+1 -1
View File
@@ -10,7 +10,7 @@ import (
func TestDisconnectClearPreservesRememberedTransmissionState(t *testing.T) { func TestDisconnectClearPreservesRememberedTransmissionState(t *testing.T) {
configPath := filepath.Join(t.TempDir(), "barnard.toml") configPath := filepath.Join(t.TempDir(), "barnard.toml")
userConfig := config.NewConfig(&configPath) userConfig := config.NewConfig(&configPath)
if err := userConfig.SetRememberTransmissionState(true); err != nil { if err := userConfig.SetRememberTransmissionState(true, false); err != nil {
t.Fatal(err) t.Fatal(err)
} }
b := &Barnard{UserConfig: userConfig} b := &Barnard{UserConfig: userConfig}
+4
View File
@@ -40,6 +40,7 @@ func TestAudioSettingsExposeCurrentValuesAndPersistMicChanges(t *testing.T) {
items[0].(adminItem).action() items[0].(adminItem).action()
items[1].(adminItem).action() items[1].(adminItem).action()
b.setTransmitting(true)
items[2].(adminItem).action() items[2].(adminItem).action()
reloaded := config.NewConfig(&configPath) reloaded := config.NewConfig(&configPath)
if reloaded.GetAGCEnabled() { if reloaded.GetAGCEnabled() {
@@ -51,6 +52,9 @@ func TestAudioSettingsExposeCurrentValuesAndPersistMicChanges(t *testing.T) {
if !reloaded.GetRememberTransmissionState() { if !reloaded.GetRememberTransmissionState() {
t.Fatal("settings action did not persist enabled transmission-state remembering") 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 { if got := b.adjustMicVolume(-0.1); got < 0.899 || got > 0.901 {
t.Fatalf("adjusted microphone level = %v, want 0.9", got) t.Fatalf("adjusted microphone level = %v, want 0.9", got)