in fapi-client/src/main/scala/com/gu/facia/api/utils/ItemKicker.scala [46:80]
def fromTrailMetaData(trailMeta: MetaDataCommonFields): Option[ItemKicker] = fromContentAndTrail(None, trailMeta, ResolvedMetaData.fromTrailMetaData(trailMeta), None)
def fromMaybeContentTrailMetaAndResolvedMetaData(maybeContent: Option[Content], trailMeta: MetaDataCommonFields, resolvedMetaData: ResolvedMetaData) =
fromContentAndTrail(maybeContent, trailMeta, resolvedMetaData, None)
def fromContentTrailMetaResolvedMetaAndConfig(content: Content, trailMeta: MetaDataCommonFields, resolvedMetaData: ResolvedMetaData, config: Option[CollectionConfig]): Option[ItemKicker] =
fromContentAndTrail(Option(content), trailMeta, resolvedMetaData, config)
private[utils] def tonalKicker(content: Content, trailMeta: MetaDataCommonFields): Option[ItemKicker] = {
def tagsOfType(tagType: String): Seq[Tag] = content.tags.toSeq.filter(_.`type`.name == tagType)
val types: Seq[Tag] = tagsOfType("type")
val tones: Seq[Tag] = tagsOfType("tone")
lazy val isReview = tones.exists(t => Tags.reviewMappings.contains(t.id))
lazy val isAnalysis = tones.exists(_.id == Tags.Analysis)
lazy val isPodcast = types.exists(_.id == Tags.Podcast) || content.tags.exists(_.podcast.isDefined)
lazy val isCartoon = types.exists(_.id == Tags.Cartoon)
if (content.fields.flatMap(_.liveBloggingNow).exists(identity)) {
Some(LiveKicker)
} else if (isPodcast) {
val series = content.tags.find(_.`type` == TagType.Series) map { seriesTag =>
Series(seriesTag.webTitle, seriesTag.webUrl)
}
Some(PodcastKicker(series))
} else if (isAnalysis) {
Some(AnalysisKicker)
} else if (isReview) {
Some(ReviewKicker)
} else if (isCartoon) {
Some(CartoonKicker)
} else {
None
}
}