import type {
BroadcastSummary,
FormSummary,
SegmentSummary,
SequenceEmailSummary,
SequenceSummary,
SubscriberSummary,
TagSummary,
} from './types.ts'
export function subscriberSummary(
subscriber: Record<string, unknown> | null | undefined,
): SubscriberSummary | null {
if (typeof subscriber?.id !== 'number') return null
return {
id: subscriber.id,
email_address: typeof subscriber.email_address === 'string' ? subscriber.email_address : undefined,
first_name: typeof subscriber.first_name === 'string' ? subscriber.first_name : undefined,
state: typeof subscriber.state === 'string' ? subscriber.state : undefined,
created_at: typeof subscriber.created_at === 'string' ? subscriber.created_at : undefined,
fields: subscriber.fields,
}
}
export function tagSummary(tag: Record<string, unknown> | null | undefined): TagSummary | null {
if (typeof tag?.id !== 'number' || typeof tag.name !== 'string') return null
return { id: tag.id, name: tag.name }
}
export function formSummary(form: Record<string, unknown> | null | undefined): FormSummary | null {
if (typeof form?.id !== 'number') return null
return {
id: form.id,
name: typeof form.name === 'string' ? form.name : undefined,
created_at: typeof form.created_at === 'string' ? form.created_at : undefined,
}
}
export function segmentSummary(
segment: Record<string, unknown> | null | undefined,
): SegmentSummary | null {
if (typeof segment?.id !== 'number') return null
return {
id: segment.id,
name: typeof segment.name === 'string' ? segment.name : undefined,
}
}
export function broadcastSummary(
broadcast: Record<string, unknown> | null | undefined,
): BroadcastSummary | null {
if (typeof broadcast?.id !== 'number') return null
return {
id: broadcast.id,
subject: typeof broadcast.subject === 'string' ? broadcast.subject : undefined,
status: typeof broadcast.status === 'string' ? broadcast.status : undefined,
editUrl: `https://app.kit.com/campaigns/${broadcast.id}/draft`,
}
}
export function sequenceSummary(
sequence: Record<string, unknown> | null | undefined,
): SequenceSummary | null {
if (typeof sequence?.id !== 'number') return null
return {
id: sequence.id,
name: typeof sequence.name === 'string' ? sequence.name : undefined,
active: typeof sequence.active === 'boolean' ? sequence.active : undefined,
email_address: typeof sequence.email_address === 'string' ? sequence.email_address : undefined,
}
}
export function sequenceEmailSummary(
email: Record<string, unknown> | null | undefined,
): SequenceEmailSummary | null {
if (typeof email?.id !== 'number') return null
return {
id: email.id,
sequenceId: typeof email.sequence_id === 'number' ? email.sequence_id : undefined,
subject: typeof email.subject === 'string' ? email.subject : undefined,
published: typeof email.published === 'boolean' ? email.published : undefined,
}
}