in payment-failure/src/main/scala/com/gu/identity/paymentfailure/BrazeEmailService.scala [53:70]
def sendEmail(emailData: IdentityBrazeEmailData): Either[Throwable, BrazeResponse] = {
logger.info(s"attempting to send email for test ${variantGenerator.abTest}")
(for {
variant <- variantGenerator.generateVariant(emailData.externalId.value, emailData.emailAddress)
customFields = variantToCustomFields(variant)
response <- sendEmailWithCustomFields(emailData, customFields)
} yield {
logger.info(s"braze email sent with variant data for test - variant data: $variant")
response
}).recoverWith {
// If this is a UserIneligibleForAbTest error (which, for example, can be caused by a user not meeting the
// requirements to be sent an auto sign in token), we still want to send the email but without the variant
// meta data
case err: UserIneligibleForAbTest =>
logger.info("user ineligible for AB test, sending regular email", err)
sendEmailWithCustomFields(emailData, customFields = Map.empty)
}
}