Fixes: 1. media.ts: wrap placeholder generation in try-catch 2. toolbar.ts: check r.ok, display error message in popover
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
/**
|
|
* Email settings API client functions
|
|
*/
|
|
|
|
import { API_BASE, apiFetch, parseApiResponse } from "./client.js";
|
|
|
|
// =============================================================================
|
|
// Types
|
|
// =============================================================================
|
|
|
|
export interface EmailProvider {
|
|
pluginId: string;
|
|
}
|
|
|
|
export interface EmailSettings {
|
|
available: boolean;
|
|
providers: EmailProvider[];
|
|
selectedProviderId: string | null;
|
|
middleware: {
|
|
beforeSend: string[];
|
|
afterSend: string[];
|
|
};
|
|
}
|
|
|
|
// =============================================================================
|
|
// API functions
|
|
// =============================================================================
|
|
|
|
export async function fetchEmailSettings(): Promise<EmailSettings> {
|
|
const res = await apiFetch(`${API_BASE}/settings/email`);
|
|
return parseApiResponse<EmailSettings>(res, "Failed to fetch email settings");
|
|
}
|
|
|
|
export async function sendTestEmail(to: string): Promise<{ success: boolean; message: string }> {
|
|
const res = await apiFetch(`${API_BASE}/settings/email`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ to }),
|
|
});
|
|
return parseApiResponse<{ success: boolean; message: string }>(res, "Failed to send test email");
|
|
}
|