52438ee11f
Build and Push Multi-Platform Images / build-and-push (push) Successful in 50s
- New DailyDigestModule with scheduled summary email for open dashboard items - Extract StatsService from StatsController for reuse in digest - Add DailyDigestEnabled, UserEmail, UserPreferredUsername to UserSettings entity - Sync email/username from OIDC token on each get/update call - Add dailyDigestEnabled to UserSettingsDto and update API - Notifications tab in UserSettingsPage with enable toggle and "Jetzt senden" button Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import api from './client';
|
|
|
|
export interface UserSettingsData {
|
|
smtpHost: string | null;
|
|
smtpPort: number | null;
|
|
smtpSecure: boolean;
|
|
smtpUser: string | null;
|
|
smtpPassSet: boolean;
|
|
smtpFrom: string | null;
|
|
smtpFromName: string | null;
|
|
mailSignatureHtml: string | null;
|
|
defaultLabelTemplateId: number | null;
|
|
emailRecipientHistory: string[] | null;
|
|
dailyDigestEnabled: boolean;
|
|
}
|
|
|
|
export interface SenderOption {
|
|
id: string;
|
|
label: string;
|
|
}
|
|
|
|
export const userSettingsApi = {
|
|
get: () => api.get<UserSettingsData>('/api/user-settings').then((r) => r.data),
|
|
|
|
update: (data: Partial<UserSettingsData> & { smtpPass?: string }) =>
|
|
api.put<UserSettingsData>('/api/user-settings', data).then((r) => r.data),
|
|
|
|
testSmtp: (cfg: { host: string; port: number; secure: boolean; user: string; pass: string }) =>
|
|
api
|
|
.post<{ ok: boolean; error?: string }>('/api/user-settings/test-smtp', cfg)
|
|
.then((r) => r.data),
|
|
|
|
getSenders: () =>
|
|
api.get<SenderOption[]>('/api/user-settings/senders').then((r) => r.data),
|
|
|
|
sendDigestNow: () =>
|
|
api.post<{ ok: boolean; error?: string }>('/api/daily-digest/send-now').then((r) => r.data),
|
|
};
|