37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
export const INLINE_MAIL_SETTINGS_BLOCKED_MESSAGE = "Inline SMTP/IMAP settings are blocked by the effective mail policy. Select an allowed reusable profile.";
|
|
|
|
export type CampaignMailPolicy = {
|
|
allow_campaign_profiles?: boolean | null;
|
|
};
|
|
|
|
export type CampaignMailSettingsPolicyState = {
|
|
campaignProfilesAllowed: boolean;
|
|
usingMailProfile: boolean;
|
|
inlineMailSettingsBlocked: boolean;
|
|
inlineOptionDisabled: boolean;
|
|
canSelectInlineSettings: boolean;
|
|
inlineBlockedMessage: string;
|
|
};
|
|
|
|
export function campaignMailSettingsPolicyState({
|
|
effectivePolicy,
|
|
selectedProfileId,
|
|
locked = false
|
|
}: {
|
|
effectivePolicy: CampaignMailPolicy | null | undefined;
|
|
selectedProfileId: string | null | undefined;
|
|
locked?: boolean;
|
|
}): CampaignMailSettingsPolicyState {
|
|
const campaignProfilesAllowed = effectivePolicy?.allow_campaign_profiles === true;
|
|
const usingMailProfile = Boolean(selectedProfileId);
|
|
const inlineMailSettingsBlocked = !campaignProfilesAllowed && !usingMailProfile;
|
|
return {
|
|
campaignProfilesAllowed,
|
|
usingMailProfile,
|
|
inlineMailSettingsBlocked,
|
|
inlineOptionDisabled: !campaignProfilesAllowed,
|
|
canSelectInlineSettings: !locked && campaignProfilesAllowed,
|
|
inlineBlockedMessage: INLINE_MAIL_SETTINGS_BLOCKED_MESSAGE
|
|
};
|
|
}
|