def applyDefaultBoostLevelsAndGroups[T]()

in fapi-client/src/main/scala/com/gu/facia/api/FAPI.scala [243:263]


  def applyDefaultBoostLevelsAndGroups[T](groupsConfig: Option[GroupsConfig], collectionType: String, contents: List[T], getBoostLevel: T => BoostLevel, setBoostLevel: (T, BoostLevel) => T, setGroup: (T, String) => T): List[T] = {
    val contentsWithDefaultBoosts = for {
      gc <- groupsConfig
      boostsConfig <- boostsConfigFor(collectionType, gc.config)
    } yield {
      val (result, _) = boostsConfig.foldLeft((List.empty[T], contents)) { case ((processed, unprocessed), groupConfig) =>
        val (currentGroupContents, remaining) = unprocessed.splitAt(groupConfig.maxItems)
        val currentGroupContentsWithBoostsAndGroupNumber = currentGroupContents.map(content => {
          val contentWithGroupNumber = setGroup(content, groupConfig.group)
          if (groupConfig.allowedBoosts.contains(getBoostLevel(contentWithGroupNumber)))
            contentWithGroupNumber
          else
            setBoostLevel(contentWithGroupNumber, groupConfig.default)
        })
        (processed ++ currentGroupContentsWithBoostsAndGroupNumber, remaining)
      }
      result
    }

    contentsWithDefaultBoosts.getOrElse(contents)
  }