From e904d6b6b16d0a72ec9034f430b9cc29968b8703 Mon Sep 17 00:00:00 2001 From: James Clarke Date: Wed, 22 Nov 2023 11:50:17 +0000 Subject: [PATCH] Show smtp timeouts in seconds --- shared/studio/tabs/auth/index.tsx | 9 +++++--- shared/studio/tabs/auth/state/index.tsx | 28 ++++++++++++++++++------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/shared/studio/tabs/auth/index.tsx b/shared/studio/tabs/auth/index.tsx index 4c9d594b..87d2bbfe 100644 --- a/shared/studio/tabs/auth/index.tsx +++ b/shared/studio/tabs/auth/index.tsx @@ -282,7 +282,9 @@ const ConfigPage = observer(function ConfigPage() { state.draftTokenTime.value ?? state.configData.token_time_to_live } - onChange={(dur) => state.draftTokenTime.setValue(dur)} + onChange={(dur) => + state.draftTokenTime.setValue(dur.toUpperCase()) + } error={state.draftTokenTime.error} /> {state.draftTokenTime.value != null ? ( @@ -583,7 +585,8 @@ const SMTPConfigPage = observer(function SMTPConfigPage() { />
- Maximum time to send an email, including retry attempts. + Maximum time in seconds to send an email, including retry + attempts.
@@ -601,7 +604,7 @@ const SMTPConfigPage = observer(function SMTPConfigPage() { />
- Maximum time for each SMTP request. + Maximum time in seconds for each SMTP request.
diff --git a/shared/studio/tabs/auth/state/index.tsx b/shared/studio/tabs/auth/state/index.tsx index 9a7bd77f..f56f354d 100644 --- a/shared/studio/tabs/auth/state/index.tsx +++ b/shared/studio/tabs/auth/state/index.tsx @@ -127,7 +127,17 @@ export class AuthAdminState extends Model({ "std::duration", (dur) => { if (dur === null) return null; - return /^\d+$/.test(dur) ? null : "Invalid duration"; + dur = dur.trim(); + if (!dur.length) { + return `Duration is required`; + } + try { + if (/^\d+$/.test(dur)) return null; + parsers["std::duration"](dur, null); + } catch { + return `Invalid duration`; + } + return null; } ), draftAllowedRedirectUrls: createDraftAuthConfig( @@ -269,8 +279,8 @@ export class AuthAdminState extends Model({ username, security, validate_certs, - timeout_per_email, - timeout_per_attempt + timeout_per_email_seconds := duration_get(.timeout_per_email, 'totalseconds'), + timeout_per_attempt_seconds := duration_get(.timeout_per_attempt, 'totalseconds'), }) }`, undefined, @@ -295,8 +305,8 @@ export class AuthAdminState extends Model({ this.smtpConfig = { ...smtp, port: smtp.port?.toString(), - timeout_per_email: smtp.timeout_per_email.toString(), - timeout_per_attempt: smtp.timeout_per_attempt.toString(), + timeout_per_email: smtp.timeout_per_email_seconds, + timeout_per_attempt: smtp.timeout_per_attempt_seconds, }; }); } @@ -455,11 +465,12 @@ export class DraftSMTPConfig extends Model({ @computed get timeoutPerEmailError() { - const val = this.getConfigValue("timeout_per_email"); + const val = this.getConfigValue("timeout_per_email").trim(); if (!val.length) { return `Value is required`; } try { + if (/^\d+$/.test(val)) return null; parsers["std::duration"](val, null); } catch { return `Invalid duration`; @@ -469,11 +480,12 @@ export class DraftSMTPConfig extends Model({ @computed get timeoutPerAttemptError() { - const val = this.getConfigValue("timeout_per_attempt"); + const val = this.getConfigValue("timeout_per_attempt").trim(); if (!val.length) { return `Value is required`; } try { + if (/^\d+$/.test(val)) return null; parsers["std::duration"](val, null); } catch { return `Invalid duration`; @@ -544,7 +556,7 @@ export class DraftSMTPConfig extends Model({ {name: "security", cast: "ext::auth::SMTPSecurity"}, {name: "validate_certs", cast: null}, {name: "timeout_per_email", cast: "std::duration"}, - {name: "timeout_per_email", cast: "std::duration"}, + {name: "timeout_per_attempt", cast: "std::duration"}, ] as const ) .map(({name, cast}) => {