def sendEmail()

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)
    }
  }