Add SMTP admin settings and contact form delivery
This commit is contained in:
@@ -16,6 +16,24 @@ export {
|
||||
type SiteSettings,
|
||||
type SiteSettingsMediaBindings,
|
||||
} from "./site-settings";
|
||||
export {
|
||||
MAIL_SETTINGS_KEY,
|
||||
buildDefaultMailSettings,
|
||||
parseMailSettingsValue,
|
||||
toMailSettingsFormValues,
|
||||
type MailSettings,
|
||||
type MailSettingsFormValues,
|
||||
} from "./mail-settings";
|
||||
export {
|
||||
CONTACT_PROTECTION_SETTINGS_KEY,
|
||||
buildDefaultContactProtectionSettings,
|
||||
parseContactProtectionValue,
|
||||
toContactProtectionFormValues,
|
||||
toPublicContactProtectionSettings,
|
||||
type ContactProtectionSettings,
|
||||
type ContactProtectionFormValues,
|
||||
type PublicContactProtectionSettings,
|
||||
} from "./contact-protection";
|
||||
import {
|
||||
DEFAULT_SITE_NAME,
|
||||
SITE_NAME_KEY,
|
||||
@@ -32,6 +50,24 @@ import {
|
||||
type SiteSettings,
|
||||
type SiteSettingsMediaBindings,
|
||||
} from "./site-settings";
|
||||
import {
|
||||
MAIL_SETTINGS_KEY,
|
||||
buildDefaultMailSettings,
|
||||
parseMailSettingsValue,
|
||||
toMailSettingsFormValues,
|
||||
type MailSettings,
|
||||
type MailSettingsFormValues,
|
||||
} from "./mail-settings";
|
||||
import {
|
||||
CONTACT_PROTECTION_SETTINGS_KEY,
|
||||
buildDefaultContactProtectionSettings,
|
||||
parseContactProtectionValue,
|
||||
toContactProtectionFormValues,
|
||||
toPublicContactProtectionSettings,
|
||||
type ContactProtectionSettings,
|
||||
type ContactProtectionFormValues,
|
||||
type PublicContactProtectionSettings,
|
||||
} from "./contact-protection";
|
||||
|
||||
export async function getMaintenanceMode(): Promise<boolean> {
|
||||
try {
|
||||
@@ -95,6 +131,78 @@ export async function updateSiteSettings(settings: SiteSettings): Promise<void>
|
||||
});
|
||||
}
|
||||
|
||||
export async function getMailSettings(): Promise<MailSettings> {
|
||||
try {
|
||||
const config = await prisma.appConfig.findUnique({
|
||||
where: { key: MAIL_SETTINGS_KEY },
|
||||
select: { value: true },
|
||||
});
|
||||
|
||||
return parseMailSettingsValue(config?.value);
|
||||
} catch {
|
||||
return buildDefaultMailSettings();
|
||||
}
|
||||
}
|
||||
|
||||
export async function getMailSettingsFormValues(): Promise<MailSettingsFormValues> {
|
||||
const settings = await getMailSettings();
|
||||
|
||||
return toMailSettingsFormValues(settings);
|
||||
}
|
||||
|
||||
export async function updateMailSettings(settings: MailSettings): Promise<void> {
|
||||
await prisma.appConfig.upsert({
|
||||
where: { key: MAIL_SETTINGS_KEY },
|
||||
update: {
|
||||
value: JSON.stringify(settings),
|
||||
},
|
||||
create: {
|
||||
key: MAIL_SETTINGS_KEY,
|
||||
value: JSON.stringify(settings),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getContactProtectionSettings(): Promise<ContactProtectionSettings> {
|
||||
try {
|
||||
const config = await prisma.appConfig.findUnique({
|
||||
where: { key: CONTACT_PROTECTION_SETTINGS_KEY },
|
||||
select: { value: true },
|
||||
});
|
||||
|
||||
return parseContactProtectionValue(config?.value);
|
||||
} catch {
|
||||
return buildDefaultContactProtectionSettings();
|
||||
}
|
||||
}
|
||||
|
||||
export async function getContactProtectionFormValues(): Promise<ContactProtectionFormValues> {
|
||||
const settings = await getContactProtectionSettings();
|
||||
|
||||
return toContactProtectionFormValues(settings);
|
||||
}
|
||||
|
||||
export async function getPublicContactProtectionSettings(): Promise<PublicContactProtectionSettings> {
|
||||
const settings = await getContactProtectionSettings();
|
||||
|
||||
return toPublicContactProtectionSettings(settings);
|
||||
}
|
||||
|
||||
export async function updateContactProtectionSettings(
|
||||
settings: ContactProtectionSettings,
|
||||
): Promise<void> {
|
||||
await prisma.appConfig.upsert({
|
||||
where: { key: CONTACT_PROTECTION_SETTINGS_KEY },
|
||||
update: {
|
||||
value: JSON.stringify(settings),
|
||||
},
|
||||
create: {
|
||||
key: CONTACT_PROTECTION_SETTINGS_KEY,
|
||||
value: JSON.stringify(settings),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export async function getSiteSettingsMediaBindings(): Promise<SiteSettingsMediaBindings> {
|
||||
try {
|
||||
const usages = await prisma.mediaUsage.findMany({
|
||||
|
||||
Reference in New Issue
Block a user