Skip to content

Commit

Permalink
Remove empty electricity grid state (#20794)
Browse files Browse the repository at this point in the history
* Remove empty grid state

* Apply feedback

* AI review
  • Loading branch information
silamon authored May 24, 2024
1 parent f617426 commit 5d044a0
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 12 deletions.
2 changes: 1 addition & 1 deletion src/data/energy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ export interface WaterSourceTypeEnergyPreference {
unit_of_measurement?: string | null;
}

type EnergySource =
export type EnergySource =
| SolarSourceTypeEnergyPreference
| GridSourceTypeEnergyPreference
| BatterySourceTypeEnergyPreference
Expand Down
39 changes: 28 additions & 11 deletions src/panels/config/energy/components/ha-energy-grid-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
EnergyPreferencesValidation,
energySourcesByType,
EnergyValidationIssue,
EnergySource,
FlowFromGridSourceEnergyPreference,
FlowToGridSourceEnergyPreference,
GridSourceTypeEnergyPreference,
Expand Down Expand Up @@ -449,11 +450,8 @@ export class EnergyGridSettings extends LitElement {
),
};

try {
await this._savePreferences(preferences);
} catch (err: any) {
showAlertDialog(this, { title: `Failed to save config: ${err.message}` });
}
const cleanedPreferences = this._removeEmptySources(preferences);
await this._savePreferences(cleanedPreferences);
}

private async _deleteToSource(ev) {
Expand All @@ -479,18 +477,37 @@ export class EnergyGridSettings extends LitElement {
),
};

const cleanedPreferences = this._removeEmptySources(preferences);
await this._savePreferences(cleanedPreferences);
}

private _removeEmptySources(preferences: EnergyPreferences) {
// Check if grid sources became an empty type and remove if so
preferences.energy_sources = preferences.energy_sources.reduce<
EnergySource[]
>((acc, source) => {
if (
source.type !== "grid" ||
source.flow_from.length > 0 ||
source.flow_to.length > 0
) {
acc.push(source);
}
return acc;
}, []);

return preferences;
}

private async _savePreferences(preferences: EnergyPreferences) {
try {
await this._savePreferences(preferences);
const result = await saveEnergyPreferences(this.hass, preferences);
fireEvent(this, "value-changed", { value: result });
} catch (err: any) {
showAlertDialog(this, { title: `Failed to save config: ${err.message}` });
}
}

private async _savePreferences(preferences: EnergyPreferences) {
const result = await saveEnergyPreferences(this.hass, preferences);
fireEvent(this, "value-changed", { value: result });
}

static get styles(): CSSResultGroup {
return [haStyle, energyCardStyles];
}
Expand Down

0 comments on commit 5d044a0

Please sign in to comment.