diff --git a/internal/agent/agent.go b/internal/agent/agent.go index dafeed5f6..2c1b865d5 100644 --- a/internal/agent/agent.go +++ b/internal/agent/agent.go @@ -240,8 +240,6 @@ func (agent *Agent) Run(ctx context.Context, trk SensorTracker, reg Registry) er } func (agent *Agent) Register(ctx context.Context, trk SensorTracker) { - defer agent.Stop() - var wg sync.WaitGroup wg.Add(1) @@ -252,6 +250,8 @@ func (agent *Agent) Register(ctx context.Context, trk SensorTracker) { if err := agent.checkRegistration(ctx, trk); err != nil { agent.logger.Log(ctx, logging.LevelFatal, "Error checking registration status", "error", err.Error()) } + + close(agent.done) }() agent.ui.Run(ctx, agent, agent.done) diff --git a/internal/agent/register.go b/internal/agent/register.go index 0287c0738..46a087a0b 100644 --- a/internal/agent/register.go +++ b/internal/agent/register.go @@ -61,7 +61,7 @@ func (agent *Agent) checkRegistration(ctx context.Context, trk SensorTracker) er // If the agent is not running headless, ask the user for registration // details. - if !agent.headless { + if !agent.headless && agent.prefs.Registration.IsDefault() { userInputDone := make(chan struct{}) agent.ui.DisplayRegistrationWindow(ctx, agent.prefs, userInputDone) <-userInputDone diff --git a/internal/preferences/prefs.go b/internal/preferences/prefs.go index 4c482c5f8..45115cf85 100644 --- a/internal/preferences/prefs.go +++ b/internal/preferences/prefs.go @@ -30,6 +30,9 @@ const ( LogFile = "go-hass-agent.log" preferencesFile = "preferences.toml" defaultFilePerms = 0o600 + + defaultServer = "http://localhost:8123" + defaultSecret = "ALongSecretString" ) var ( @@ -155,14 +158,14 @@ func DefaultPreferences(file string) *Preferences { Version: AppVersion, Registered: false, Registration: &Registration{ - Server: "http://localhost:8123", - Token: "ASecretLongLivedToken", + Server: defaultServer, + Token: defaultSecret, }, Hass: &Hass{ IgnoreHassURLs: false, - WebhookID: "ALongString", - RestAPIURL: "https://localhost:8123", - WebsocketURL: "https://localhost:8123", + WebhookID: defaultSecret, + RestAPIURL: defaultServer, + WebsocketURL: defaultServer, }, MQTT: &MQTT{MQTTEnabled: false}, Device: device, diff --git a/internal/preferences/registration.go b/internal/preferences/registration.go index 2d36a1d88..70cde613f 100644 --- a/internal/preferences/registration.go +++ b/internal/preferences/registration.go @@ -23,3 +23,7 @@ func (p *Registration) Validate() error { return nil } + +func (p *Registration) IsDefault() bool { + return p.Server == defaultServer && p.Token == defaultSecret +}