Skip to content

Commit

Permalink
Show smtp timeouts in seconds
Browse files Browse the repository at this point in the history
  • Loading branch information
jaclarke committed Nov 22, 2023
1 parent 08c821e commit e904d6b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 11 deletions.
9 changes: 6 additions & 3 deletions shared/studio/tabs/auth/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 ? (
Expand Down Expand Up @@ -583,7 +585,8 @@ const SMTPConfigPage = observer(function SMTPConfigPage() {
/>
</div>
<div className={styles.configExplain}>
Maximum time to send an email, including retry attempts.
Maximum time in seconds to send an email, including retry
attempts.
</div>
</div>
</div>
Expand All @@ -601,7 +604,7 @@ const SMTPConfigPage = observer(function SMTPConfigPage() {
/>
</div>
<div className={styles.configExplain}>
Maximum time for each SMTP request.
Maximum time in seconds for each SMTP request.
</div>
</div>
</div>
Expand Down
28 changes: 20 additions & 8 deletions shared/studio/tabs/auth/state/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -269,8 +279,8 @@ export class AuthAdminState extends Model({
username,
security,
validate_certs,
timeout_per_email,
timeout_per_attempt
timeout_per_email_seconds := <str>duration_get(.timeout_per_email, 'totalseconds'),
timeout_per_attempt_seconds := <str>duration_get(.timeout_per_attempt, 'totalseconds'),
})
}`,
undefined,
Expand All @@ -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,
};
});
}
Expand Down Expand Up @@ -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`;
Expand All @@ -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`;
Expand Down Expand Up @@ -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}) => {
Expand Down

0 comments on commit e904d6b

Please sign in to comment.