mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-26 02:36:37 +00:00
Fix backup forever retention settings (#24299)
Fix forever retention settings
This commit is contained in:
parent
d387f19a31
commit
24211d5f25
@ -46,7 +46,7 @@ enum BackupScheduleTime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface RetentionData {
|
interface RetentionData {
|
||||||
type: "copies" | "days";
|
type: "copies" | "days" | "forever";
|
||||||
value: number;
|
value: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ const RETENTION_PRESETS: Record<
|
|||||||
RetentionData
|
RetentionData
|
||||||
> = {
|
> = {
|
||||||
copies_3: { type: "copies", value: 3 },
|
copies_3: { type: "copies", value: 3 },
|
||||||
forever: { type: "days", value: 0 },
|
forever: { type: "forever", value: 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
const SCHEDULE_OPTIONS = [
|
const SCHEDULE_OPTIONS = [
|
||||||
@ -79,7 +79,10 @@ const computeRetentionPreset = (
|
|||||||
data: RetentionData
|
data: RetentionData
|
||||||
): RetentionPreset | undefined => {
|
): RetentionPreset | undefined => {
|
||||||
for (const [key, value] of Object.entries(RETENTION_PRESETS)) {
|
for (const [key, value] of Object.entries(RETENTION_PRESETS)) {
|
||||||
if (value.type === data.type && value.value === data.value) {
|
if (
|
||||||
|
value.type === data.type &&
|
||||||
|
(value.type === RetentionPreset.FOREVER || value.value === data.value)
|
||||||
|
) {
|
||||||
return key as RetentionPreset;
|
return key as RetentionPreset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,7 +95,7 @@ interface FormData {
|
|||||||
time?: string | null;
|
time?: string | null;
|
||||||
days: BackupDay[];
|
days: BackupDay[];
|
||||||
retention: {
|
retention: {
|
||||||
type: "copies" | "days";
|
type: "copies" | "days" | "forever";
|
||||||
value: number;
|
value: number;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -142,7 +145,12 @@ class HaBackupConfigSchedule extends LitElement {
|
|||||||
? config.schedule.days
|
? config.schedule.days
|
||||||
: [],
|
: [],
|
||||||
retention: {
|
retention: {
|
||||||
type: config.retention.days != null ? "days" : "copies",
|
type:
|
||||||
|
config.retention.days === null && config.retention.copies === null
|
||||||
|
? "forever"
|
||||||
|
: config.retention.days != null
|
||||||
|
? "days"
|
||||||
|
: "copies",
|
||||||
value: config.retention.days ?? config.retention.copies ?? 3,
|
value: config.retention.days ?? config.retention.copies ?? 3,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -160,9 +168,11 @@ class HaBackupConfigSchedule extends LitElement {
|
|||||||
: [],
|
: [],
|
||||||
},
|
},
|
||||||
retention:
|
retention:
|
||||||
data.retention.type === "days"
|
data.retention.type === "forever"
|
||||||
? { days: data.retention.value, copies: null }
|
? { days: null, copies: null }
|
||||||
: { copies: data.retention.value, days: null },
|
: data.retention.type === "days"
|
||||||
|
? { days: data.retention.value, copies: null }
|
||||||
|
: { copies: data.retention.value, days: null },
|
||||||
};
|
};
|
||||||
|
|
||||||
fireEvent(this, "value-changed", { value: this.value });
|
fireEvent(this, "value-changed", { value: this.value });
|
||||||
@ -481,9 +491,19 @@ class HaBackupConfigSchedule extends LitElement {
|
|||||||
private _retentionPresetChanged(ev) {
|
private _retentionPresetChanged(ev) {
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
const target = ev.currentTarget as HaMdSelect;
|
const target = ev.currentTarget as HaMdSelect;
|
||||||
const value = target.value as RetentionPreset;
|
let value = target.value as RetentionPreset;
|
||||||
|
|
||||||
|
// custom needs to have a type of days or copies, set it to default copies 3
|
||||||
|
if (
|
||||||
|
value === RetentionPreset.CUSTOM &&
|
||||||
|
this._retentionPreset === RetentionPreset.FOREVER
|
||||||
|
) {
|
||||||
|
this._retentionPreset = value;
|
||||||
|
value = RetentionPreset.COPIES_3;
|
||||||
|
} else {
|
||||||
|
this._retentionPreset = value;
|
||||||
|
}
|
||||||
|
|
||||||
this._retentionPreset = value;
|
|
||||||
if (value !== RetentionPreset.CUSTOM) {
|
if (value !== RetentionPreset.CUSTOM) {
|
||||||
const data = this._getData(this.value);
|
const data = this._getData(this.value);
|
||||||
const retention = RETENTION_PRESETS[value];
|
const retention = RETENTION_PRESETS[value];
|
||||||
@ -493,7 +513,7 @@ class HaBackupConfigSchedule extends LitElement {
|
|||||||
}
|
}
|
||||||
this._setData({
|
this._setData({
|
||||||
...data,
|
...data,
|
||||||
retention: RETENTION_PRESETS[value],
|
retention,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -504,6 +524,7 @@ class HaBackupConfigSchedule extends LitElement {
|
|||||||
const value = parseInt(target.value);
|
const value = parseInt(target.value);
|
||||||
const clamped = clamp(value, MIN_VALUE, MAX_VALUE);
|
const clamped = clamp(value, MIN_VALUE, MAX_VALUE);
|
||||||
const data = this._getData(this.value);
|
const data = this._getData(this.value);
|
||||||
|
target.value = clamped.toString();
|
||||||
this._setData({
|
this._setData({
|
||||||
...data,
|
...data,
|
||||||
retention: {
|
retention: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user