def apply()

in common/app/model/dotcomrendering/DotcomRenderingSupportTypes.scala [69:143]


  def apply(
      block: APIBlock,
      page: ContentPage,
      shouldAddAffiliateLinks: Boolean,
      request: RequestHeader,
      isMainBlock: Boolean,
      calloutsUrl: Option[String],
      dateTimes: ArticleDateTimes,
      tags: Seq[Tag],
  ): Block = {

    val content = page.item

    // We are passing through the block data here, not the article
    // the block dateTime types are used for liveblogs
    val blockCreatedOn = block.createdDate.map(_.dateTime)
    val blockCreatedOnDisplay =
      blockCreatedOn.map(dt => GUDateTimeFormatNew.formatTimeForDisplay(new DateTime(dt), request))

    val blockFirstPublished = block.firstPublishedDate.map(_.dateTime)
    val blockFirstPublishedDisplay =
      blockFirstPublished.map(dt => GUDateTimeFormatNew.formatTimeForDisplay(new DateTime(dt), request))
    val blockFirstPublishedDisplayNoTimezone =
      blockFirstPublished.map(dt => GUDateTimeFormatNew.formatTimeForDisplayNoTimezone(new DateTime(dt), request))

    val blockLastUpdated = block.lastModifiedDate.map(_.dateTime)
    val blockLastUpdatedDisplay =
      blockLastUpdated.map(dt => GUDateTimeFormatNew.formatTimeForDisplay(new DateTime(dt), request))

    val displayedDateTimes = ArticleDateTimes.makeDisplayedDateTimesDCR(dateTimes, request)
    val campaigns = page.getJavascriptConfig.get("campaigns")

    val contributors = block.contributors flatMap { contributorId =>
      tags
        .find(_.id == s"profile/$contributorId")
        .map(tag => Contributor(tag.title, tag.bylineImageUrl, tag.bylineLargeImageUrl))
    }

    val membershipPlaceholder = block.attributes.membershipPlaceholder map { placeholder =>
      MembershipPlaceholder(placeholder.campaignCode)
    }

    val attributes = BlockAttributes(
      block.attributes.pinned.getOrElse(false),
      block.attributes.keyEvent.getOrElse(false),
      block.attributes.summary.getOrElse(false),
      membershipPlaceholder,
    )

    Block(
      id = block.id,
      attributes = attributes,
      elements = DotcomRenderingUtils.blockElementsToPageElements(
        block.elements.toSeq,
        request,
        content,
        shouldAddAffiliateLinks,
        isMainBlock,
        content.metadata.format.exists(_.display == ImmersiveDisplay),
        campaigns,
        calloutsUrl,
      ),
      blockCreatedOn = blockCreatedOn,
      blockCreatedOnDisplay = blockCreatedOnDisplay,
      blockLastUpdated = blockLastUpdated,
      blockLastUpdatedDisplay = blockLastUpdatedDisplay,
      title = block.title,
      contributors = contributors.toSeq,
      blockFirstPublished = blockFirstPublished,
      blockFirstPublishedDisplay = blockFirstPublishedDisplay,
      blockFirstPublishedDisplayNoTimezone = blockFirstPublishedDisplayNoTimezone,
      primaryDateLine = displayedDateTimes.primaryDateLine,
      secondaryDateLine = displayedDateTimes.secondaryDateLine,
    )
  }