27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
export function campaignMailProfileReferenceOnly(value: Record<string, unknown>): Record<string, unknown> {
|
|
const server = isRecord(value.server) ? value.server : {};
|
|
const profileId = textId(server.mail_profile_id);
|
|
const smtpServerId = textId(server.smtp_server_id);
|
|
const smtpCredentialId = textId(server.smtp_credential_id);
|
|
const imapServerId = textId(server.imap_server_id);
|
|
const imapCredentialId = textId(server.imap_credential_id);
|
|
const reference: Record<string, string> = {};
|
|
if (profileId) reference.mail_profile_id = profileId;
|
|
if (profileId && smtpServerId) reference.smtp_server_id = smtpServerId;
|
|
if (profileId && smtpServerId && smtpCredentialId) reference.smtp_credential_id = smtpCredentialId;
|
|
if (profileId && imapServerId) reference.imap_server_id = imapServerId;
|
|
if (profileId && imapServerId && imapCredentialId) reference.imap_credential_id = imapCredentialId;
|
|
return {
|
|
...value,
|
|
server: reference
|
|
};
|
|
}
|
|
|
|
function textId(value: unknown): string {
|
|
return typeof value === "string" ? value.trim() : "";
|
|
}
|
|
|
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
}
|