[client/ui] Remove goroutine from ProfileSwitcher.SwitchActive

Down and Up(async=true) are both fast RPCs; no background goroutine
is needed. SwitchActive is now fully synchronous — the tray wraps the
call in its own goroutine, and Wails handles React calls similarly.
This commit is contained in:
Zoltan Papp
2026-05-13 15:55:59 +02:00
parent 67988c2407
commit 2bd56ecf67

View File

@@ -62,25 +62,21 @@ func (s *ProfileSwitcher) SwitchActive(ctx context.Context, p ProfileRef) error
return fmt.Errorf("switch profile %q: %w", p.ProfileName, err)
}
// Down and Up run in a goroutine so the caller returns immediately after
// the Switch RPC. Up uses async mode so the goroutine itself is short-lived.
go func() {
bgCtx := context.Background()
if needsDown {
if err := s.connection.Down(bgCtx); err != nil {
log.Errorf("profileswitcher: Down: %v", err)
}
if needsDown {
if err := s.connection.Down(ctx); err != nil {
log.Errorf("profileswitcher: Down: %v", err)
}
if wasActive {
if err := s.connection.Up(bgCtx, UpParams{
ProfileName: p.ProfileName,
Username: p.Username,
Async: true,
}); err != nil {
log.Errorf("profileswitcher: Up %s: %v", p.ProfileName, err)
}
}
if wasActive {
if err := s.connection.Up(ctx, UpParams{
ProfileName: p.ProfileName,
Username: p.Username,
Async: true,
}); err != nil {
return fmt.Errorf("reconnect %q: %w", p.ProfileName, err)
}
}()
}
return nil
}