in fapi-client/src/main/scala/com/gu/facia/api/models/collection.scala [114:218]
def liveContent(
collection: Collection,
content: Set[Content],
snapContent: Map[String, Option[Content]] = Map.empty,
linkSnapBrandingsByEdition: Map[String, BrandingByEdition] = Map.empty
): List[FaciaContent] =
contentFrom(collection, content, snapContent, linkSnapBrandingsByEdition, collection => collection.live)
def liveIdsWithoutSnaps(collection: Collection): List[String] =
collection.live.filterNot(_.isSnap).map(_.id)
private def allLiveSupportingItems(collection: Collection): List[SupportingItem] =
collection.live.flatMap(_.meta).flatMap(_.supporting).flatten
def liveSupportingIdsWithoutSnaps(collection: Collection): List[String] =
allLiveSupportingItems(collection).filterNot(_.isSnap).map(_.id)
def liveSupportingSnaps(collection: Collection): LatestSnapsRequest =
LatestSnapsRequest(
allLiveSupportingItems(collection)
.filter(_.isSnap)
.filter(_.safeMeta.snapType.contains("latest"))
.flatMap(snap => snap.meta.flatMap(_.snapUri).map(uri => snap.id ->uri))
.toMap)
def liveLatestSnapsRequestFor(collection: Collection): LatestSnapsRequest =
LatestSnapsRequest(
collection.live
.filter(_.isSnap)
.filter(_.safeMeta.snapType.contains("latest"))
.flatMap(snap => snap.safeMeta.snapUri.map(uri => snap.id -> uri))
.toMap)
private def linkSnapsRequestFor(trails: List[Trail]): LinkSnapsRequest = LinkSnapsRequest(
trails.filter(_.isSnap)
.filter(_.safeMeta.snapType.contains("link"))
.flatMap(snap => snap.safeMeta.href.map(uri => snap.id -> uri))
.toMap)
def liveLinkSnapsRequestFor(collection: Collection): LinkSnapsRequest = linkSnapsRequestFor(collection.live)
/* Draft Methods */
def draftContent(
collection: Collection,
content: Set[Content],
snapContent: Map[String, Option[Content]] = Map.empty,
linkSnapBrandingsByEdition: Map[String, BrandingByEdition] = Map.empty
): List[FaciaContent] =
contentFrom(collection,
content,
snapContent,
linkSnapBrandingsByEdition,
collection => collection.draft.getOrElse(collection.live))
def draftIdsWithoutSnaps(collection: Collection): Option[List[String]] =
collection.draft.map(_.filterNot(_.isSnap).map(_.id))
private def allDraftSupportingItems(collection: Collection): Option[List[SupportingItem]] =
collection.draft.map(_.flatMap(_.meta).flatMap(_.supporting).flatten)
def draftSupportingIdsWithoutSnaps(collection: Collection): Option[List[String]] =
allDraftSupportingItems(collection).map(_.filterNot(_.isSnap).map(_.id))
def draftSupportingSnaps(collection: Collection): Option[LatestSnapsRequest] =
allDraftSupportingItems(collection)
.map( listOfSupportingItems =>
LatestSnapsRequest(
listOfSupportingItems.filter(_.isSnap)
.filter(_.safeMeta.snapType.contains("latest"))
.flatMap(snap => snap.meta.flatMap(_.snapUri).map(uri => snap.id ->uri))
.toMap))
def draftLatestSnapsRequestFor(collection: Collection): Option[LatestSnapsRequest] =
collection.draft.map( listOfTrails =>
LatestSnapsRequest(
listOfTrails.filter(_.isSnap)
.filter(_.safeMeta.snapType.contains("latest"))
.flatMap(snap => snap.safeMeta.snapUri.map(uri => snap.id -> uri))
.toMap))
def draftLinkSnapsRequestFor(collection: Collection): Option[LinkSnapsRequest] =
collection.draft map linkSnapsRequestFor
/* Treats */
def treatContent(collection: Collection,
content: Set[Content],
snapContent: Map[String, Option[Content]] = Map.empty): List[FaciaContent] =
contentFrom(collection,
content,
snapContent,
linkSnapBrandingsByEdition = Map.empty,
collection => collection.treats)
def treatsRequestFor(collection: Collection): (List[String], LatestSnapsRequest) = {
val latestSnapsRequest =
LatestSnapsRequest(
collection.treats
.filter(_.isSnap)
.filter(_.safeMeta.snapType.contains("latest"))
.flatMap(snap => snap.safeMeta.snapUri.map(uri => snap.id -> uri))
.toMap)
val treatIds = collection.treats.filterNot(_.isSnap).map(_.id)
(treatIds, latestSnapsRequest)}