This commit is contained in:
Mateusz Gruszczyński
2026-09-16 14:24:40 +02:00
parent d0ae3d0f6a
commit 3f9acb1675
28 changed files with 726 additions and 127 deletions
+12 -5
View File
@@ -79,8 +79,13 @@ fn notification_settings(settings: &RuntimeSettings) -> NotificationSettingsView
fn home_assistant_settings(settings: &RuntimeSettings) -> HomeAssistantSettingsView {
HomeAssistantSettingsView {
url: home_assistant::effective_url(&settings.home_assistant),
auth_mode: home_assistant::auth_mode().to_string(),
manual_url: settings.home_assistant.url.clone(),
auth_mode: home_assistant::auth_mode(&settings.home_assistant).to_string(),
token_configured: home_assistant::token_configured(&settings.home_assistant),
manual_token_configured: !settings.home_assistant.token.trim().is_empty(),
supervisor_detected: home_assistant::supervisor_detected(),
supervisor_token_detected: home_assistant::supervisor_token_detected(),
manual_auth_override: settings.home_assistant.manual_auth_override,
outdoor_entity_id: settings.home_assistant.outdoor_entity_id.clone(),
sensor_stale_after_seconds: settings.home_assistant.sensor_stale_after_seconds,
allow_invalid_tls: settings.home_assistant.allow_invalid_tls,
@@ -694,9 +699,10 @@ fn apply_home_assistant_update(
current: &HomeAssistantSettings,
input: HomeAssistantSettingsUpdate,
) -> HomeAssistantSettings {
let supervisor_managed = home_assistant::uses_supervisor_auth();
let supervisor_detected = home_assistant::supervisor_detected();
let manual_auth_override = supervisor_detected && input.manual_auth_override;
let mut next = HomeAssistantSettings {
url: if supervisor_managed {
url: if supervisor_detected && !manual_auth_override {
current.url.clone()
} else {
input.url
@@ -705,10 +711,11 @@ fn apply_home_assistant_update(
outdoor_entity_id: input.outdoor_entity_id,
sensor_stale_after_seconds: input.sensor_stale_after_seconds.clamp(30, 86_400),
allow_invalid_tls: input.allow_invalid_tls,
manual_auth_override,
sensor_aliases: input.sensor_aliases,
flow_inputs: input.flow_inputs,
};
if !supervisor_managed {
if !supervisor_detected || manual_auth_override {
if let Some(token) = input.token {
next.token = token;
}
@@ -728,7 +735,7 @@ async fn update_home_assistant_settings(
normalize_sensor_aliases(&mut next);
validate_flow_shared_inputs(&mut next, &state)?;
canonicalize_home_assistant_entities(&mut next);
if !home_assistant::uses_supervisor_auth() {
if !home_assistant::uses_supervisor_auth(&next) {
validate_home_assistant_url(&next)?;
}
settings.home_assistant = next.clone();