import type { ApiSettings, MailConnectionTestResponse, MailImapFolderListResponse, MailServerProfile, MockMailboxMessageResponse } from "@govoplan/core-webui"; import { apiFetch, apiGetList, apiPost } from "./client"; const profileActionEndpoints = { smtp: "test-smtp", imap: "test-imap", folders: "list-imap-folders" } as const; function runProfileAction( settings: ApiSettings, profileId: string, action: keyof typeof profileActionEndpoints ): Promise { return apiPost( settings, `/api/v1/mail/profiles/${encodeURIComponent(profileId)}/${profileActionEndpoints[action]}` ); } export async function listMailServerProfiles(settings: ApiSettings, includeInactive = false, campaignId?: string): Promise { return apiGetList(settings, "/api/v1/mail/profiles", "profiles", { include_inactive: includeInactive ? true : undefined, campaign_id: campaignId }); } export async function testMailProfileSmtp(settings: ApiSettings, profileId: string): Promise { return runProfileAction(settings, profileId, "smtp"); } export async function testMailProfileImap(settings: ApiSettings, profileId: string): Promise { return runProfileAction(settings, profileId, "imap"); } export async function listMailProfileImapFolders(settings: ApiSettings, profileId: string): Promise { return runProfileAction(settings, profileId, "folders"); } export async function getMockMailboxMessage(settings: ApiSettings, id: string): Promise { return apiFetch(settings, `/api/v1/dev/mailbox/messages/${encodeURIComponent(id)}`); } export type { MailConnectionTestResponse, MailImapFolderListResponse, MailImapFolderResponse, MailServerProfile, MailServerProfileListResponse, MockMailboxMessage, MockMailboxMessageResponse } from "@govoplan/core-webui";