better smtp const

This commit is contained in:
Matt Hill
2023-05-11 07:40:27 -06:00
parent 9ad5161855
commit f294726c0d

View File

@@ -3,6 +3,46 @@ import { Config, ConfigSpecOf } from "./builder/config"
import { Value } from "./builder/value" import { Value } from "./builder/value"
import { Variants } from "./builder/variants" import { Variants } from "./builder/variants"
export const customSmtp = Config.of<ConfigSpecOf<SmtpValue>, never, never>({
server: Value.text({
name: "SMTP Server",
required: {
default: null,
},
}),
port: Value.number({
name: "Port",
required: { default: 587 },
min: 1,
max: 65535,
integer: true,
}),
from: Value.text({
name: "From Address",
required: {
default: null,
},
placeholder: "<name>test@example.com",
inputmode: "email",
}),
login: Value.text({
name: "Login",
required: {
default: null,
},
}),
password: Value.text({
name: "Password",
required: false,
}),
tls: Value.toggle({
name: "Require Transport Security",
default: true,
description:
"Require TLS transport security. If disabled, email will use plaintext by default and TLS via STARTTLS <strong>if the SMTP server supports it</strong>. If enabled, email will refuse to connect unless the server supports STARTTLS.",
}),
})
export const smtpConfig = Value.filteredUnion( export const smtpConfig = Value.filteredUnion(
async ({ effects, utils }) => { async ({ effects, utils }) => {
const smtp = await utils.getSystemSmtp().once() const smtp = await utils.getSystemSmtp().once()
@@ -10,53 +50,27 @@ export const smtpConfig = Value.filteredUnion(
}, },
{ {
name: "SMTP", name: "SMTP",
description: "Optionally provide an SMTP server for sending email", description: "Optionally provide an SMTP server for sending emails",
required: { default: "disabled" }, required: { default: "disabled" },
}, },
Variants.of({ Variants.of({
disabled: { name: "Disabled", spec: Config.of({}) }, disabled: { name: "Disabled", spec: Config.of({}) },
system: { name: "System Credentials", spec: Config.of({}) }, system: {
custom: { name: "System Credentials",
name: "Custom Credentials", spec: Config.of({
spec: Config.of<ConfigSpecOf<SmtpValue>, never, never>({ customFrom: Value.text({
server: Value.text({ name: "Custom From Address",
name: "SMTP Server", description:
required: { "A custom from address for this service. If not provided, the system from address will be used.",
default: null, required: false,
},
}),
port: Value.number({
name: "Port",
required: { default: 587 },
min: 1,
max: 65535,
integer: true,
}),
from: Value.text({
name: "From Address",
required: {
default: null,
},
placeholder: "<name>test@example.com", placeholder: "<name>test@example.com",
inputmode: "email", inputmode: "email",
}), }),
login: Value.text({
name: "Login",
required: {
default: null,
},
}),
password: Value.text({
name: "Password",
required: false,
}),
tls: Value.toggle({
name: "Require Transport Security",
default: true,
description:
"Require TLS transport security. If disabled, email will use plaintext by default and TLS via STARTTLS <strong>if the SMTP server supports it</strong>. If enabled, email will refuse to connect unless the server supports STARTTLS.",
}),
}), }),
}, },
custom: {
name: "Custom Credentials",
spec: customSmtp,
},
}), }),
) )