refactor(email): 简化邮件通知设置逻辑

移除adminEnabled和userEnabled配置,仅保留globalEnabled控制邮件通知
更新相关API、数据库操作及邮件发送逻辑以适配简化后的配置
This commit is contained in:
anghunk
2026-01-20 11:47:43 +08:00
parent ee31e98dee
commit 398daa9a11
5 changed files with 46 additions and 102 deletions

View File

@@ -5,8 +5,6 @@ export function isValidEmail(email: string) {
}
const EMAIL_NOTIFY_GLOBAL_KEY = 'email_notify_enabled';
const EMAIL_NOTIFY_ADMIN_KEY = 'email_notify_admin_enabled';
const EMAIL_NOTIFY_USER_KEY = 'email_notify_user_enabled';
type MailGatewayPayload = {
to: string[];
@@ -44,8 +42,6 @@ async function dispatchMail(env: Bindings, payload: MailGatewayPayload) {
export type EmailNotificationSettings = {
globalEnabled: boolean;
adminEnabled: boolean;
userEnabled: boolean;
};
function parseEnabled(raw: string | undefined, defaultValue: boolean) {
@@ -60,11 +56,10 @@ export async function loadEmailNotificationSettings(
'CREATE TABLE IF NOT EXISTS Settings (key TEXT PRIMARY KEY, value TEXT NOT NULL)'
).run();
const keys = [EMAIL_NOTIFY_GLOBAL_KEY, EMAIL_NOTIFY_ADMIN_KEY, EMAIL_NOTIFY_USER_KEY];
const { results } = await env.CWD_DB.prepare(
'SELECT key, value FROM Settings WHERE key IN (?, ?, ?)'
'SELECT key, value FROM Settings WHERE key = ?'
)
.bind(...keys)
.bind(EMAIL_NOTIFY_GLOBAL_KEY)
.all<{ key: string; value: string }>();
const map = new Map<string, string>();
@@ -75,13 +70,9 @@ export async function loadEmailNotificationSettings(
}
const globalEnabled = parseEnabled(map.get(EMAIL_NOTIFY_GLOBAL_KEY), true);
const adminEnabled = globalEnabled;
const userEnabled = globalEnabled;
return {
globalEnabled,
adminEnabled,
userEnabled
globalEnabled
};
}
@@ -89,50 +80,23 @@ export async function saveEmailNotificationSettings(
env: Bindings,
settings: {
globalEnabled?: boolean;
adminEnabled?: boolean;
userEnabled?: boolean;
}
) {
await env.CWD_DB.prepare(
'CREATE TABLE IF NOT EXISTS Settings (key TEXT PRIMARY KEY, value TEXT NOT NULL)'
).run();
const entries: { key: string; value: string | undefined }[] = [
{
key: EMAIL_NOTIFY_GLOBAL_KEY,
value:
typeof settings.globalEnabled === 'boolean'
? settings.globalEnabled
? '1'
: '0'
: undefined
},
{
key: EMAIL_NOTIFY_ADMIN_KEY,
value:
typeof settings.adminEnabled === 'boolean'
? settings.adminEnabled
? '1'
: '0'
: undefined
},
{
key: EMAIL_NOTIFY_USER_KEY,
value:
typeof settings.userEnabled === 'boolean'
? settings.userEnabled
? '1'
: '0'
: undefined
}
];
const value =
typeof settings.globalEnabled === 'boolean'
? settings.globalEnabled
? '1'
: '0'
: undefined;
for (const entry of entries) {
if (entry.value !== undefined) {
await env.CWD_DB.prepare('REPLACE INTO Settings (key, value) VALUES (?, ?)')
.bind(entry.key, entry.value)
.run();
}
if (value !== undefined) {
await env.CWD_DB.prepare('REPLACE INTO Settings (key, value) VALUES (?, ?)')
.bind(EMAIL_NOTIFY_GLOBAL_KEY, value)
.run();
}
}