def fromContentAndTrail()

in fapi-client/src/main/scala/com/gu/facia/api/utils/ItemKicker.scala [8:44]


  def fromContentAndTrail(
      maybeContent: Option[Content],
      trailMeta: MetaDataCommonFields,
      metaDefaults: ResolvedMetaData,
      config: Option[CollectionConfig]): Option[ItemKicker] = {

    lazy val maybeTag = maybeContent.flatMap(_.tags.headOption)
    lazy val tagKicker = maybeTag.map(TagKicker.fromTag)
    lazy val sectionKicker = for {
      content <- maybeContent
      name <- content.sectionName
      id <- content.sectionId
    } yield SectionKicker(name.capitalize, "/" + id)

    trailMeta.customKicker match {
      case Some(kicker)
        if trailMeta.snapType.exists(_.contains("latest")) &&
          metaDefaults.showKickerCustom &&
          trailMeta.snapUri.isDefined => Some(FreeHtmlKickerWithLink(kicker, s"/${trailMeta.snapUri.get}"))
      case Some(kicker) if metaDefaults.showKickerCustom => Some(FreeHtmlKicker(kicker))
      case _ => if (trailMeta.isBreaking.exists(identity)) {
        Some(BreakingNewsKicker)
      } else  if (metaDefaults.showKickerTag && maybeTag.isDefined) {
        tagKicker
      } else if (metaDefaults.showKickerSection) {
        sectionKicker
      } else if (config.exists(_.showTags) && maybeTag.isDefined) {
        tagKicker
      } else if (config.exists(_.showSections)) {
        sectionKicker
      } else if (!config.exists(_.hideKickers) && maybeContent.isDefined) {
        tonalKicker(maybeContent.get, trailMeta)
      } else {
        None
      }
    }
  }