From 41ca55d61579cb5377933e7a13de3ed08daf1a93 Mon Sep 17 00:00:00 2001 From: Flaminel Date: Wed, 22 Apr 2026 16:15:56 +0300 Subject: [PATCH] Fix log config inputs not allowing for zero (#579) --- .../general/general-settings.component.html | 10 +++++----- .../general/general-settings.component.ts | 16 +++++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/code/frontend/src/app/features/settings/general/general-settings.component.html b/code/frontend/src/app/features/settings/general/general-settings.component.html index 45120512..140920fe 100644 --- a/code/frontend/src/app/features/settings/general/general-settings.component.html +++ b/code/frontend/src/app/features/settings/general/general-settings.component.html @@ -109,15 +109,15 @@
- - - @@ -130,11 +130,11 @@ helpKey="general:log.archiveEnabled" /> @if (logArchiveEnabled()) {
- - diff --git a/code/frontend/src/app/features/settings/general/general-settings.component.ts b/code/frontend/src/app/features/settings/general/general-settings.component.ts index ff236145..761a0689 100644 --- a/code/frontend/src/app/features/settings/general/general-settings.component.ts +++ b/code/frontend/src/app/features/settings/general/general-settings.component.ts @@ -101,7 +101,7 @@ export class GeneralSettingsComponent implements OnInit, HasPendingChanges { readonly logRollingSizeError = computed(() => { const v = this.logRollingSizeMB(); if (v == null) return 'This field is required'; - if (v < 1) return 'Minimum value is 1'; + if (v < 0) return 'Minimum value is 0'; if (v > 100) return 'Maximum value is 100 MB'; return undefined; }); @@ -117,25 +117,31 @@ export class GeneralSettingsComponent implements OnInit, HasPendingChanges { readonly logTimeLimitError = computed(() => { const v = this.logTimeLimitHours(); if (v == null) return 'This field is required'; - if (v < 1) return 'Minimum value is 1'; + if (v < 0) return 'Minimum value is 0'; if (v > 1440) return 'Maximum value is 1440 hours (60 days)'; return undefined; }); + readonly logArchiveRetentionBothZeroError = computed(() => + this.logArchiveEnabled() && this.logArchiveRetainedCount() === 0 && this.logArchiveTimeLimitHours() === 0 + ? 'Retained count and time limit cannot both be 0 when archiving is enabled' + : undefined + ); + readonly logArchiveRetainedError = computed(() => { const v = this.logArchiveRetainedCount(); if (v == null) return 'This field is required'; if (v < 0) return 'Minimum value is 0'; if (v > 100) return 'Maximum value is 100'; - return undefined; + return this.logArchiveRetentionBothZeroError(); }); readonly logArchiveTimeLimitError = computed(() => { const v = this.logArchiveTimeLimitHours(); if (v == null) return 'This field is required'; - if (v < 1) return 'Minimum value is 1'; + if (v < 0) return 'Minimum value is 0'; if (v > 1440) return 'Maximum value is 1440 hours (60 days)'; - return undefined; + return this.logArchiveRetentionBothZeroError(); }); readonly strikeInactivityWindowHoursError = computed(() => {