FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Introduce RenderingTierPicker service · devhttps/frontend@e65e042 · GitHub

Commit e65e042

Browse files
Matthew Walls
committed
Introduce RenderingTierPicker service
1 parent 8b36918 commit e65e042

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package services
2+
3+
import controllers.ArticlePage
4+
import model.PageWithStoryPackage
5+
import model.liveblog.{BodyBlock, ImageBlockElement, TextBlockElement}
6+
7+
sealed trait RenderType
8+
case object RemoteRender extends RenderType
9+
case object LocalRender extends RenderType
10+
11+
object RenderingTierPicker {
12+
13+
private def isUnSupportedType(page: PageWithStoryPackage): Boolean = {
14+
page match {
15+
case a:ArticlePage => false
16+
case _ => true
17+
}
18+
}
19+
20+
private def hasUnsupportedElements(page: PageWithStoryPackage): Boolean = {
21+
page.article.blocks.get.body.exists((block: BodyBlock) => {
22+
23+
val hasUnsupportedElements: Boolean = block.elements.flatMap {
24+
case b: TextBlockElement => None
25+
case b: ImageBlockElement => None
26+
case b => Some(b)
27+
}.nonEmpty
28+
29+
hasUnsupportedElements
30+
31+
})
32+
}
33+
34+
private def canHaveAds(page: PageWithStoryPackage): Boolean = {
35+
! page.metadata.sensitive
36+
}
37+
38+
def getRenderTierFor(page: PageWithStoryPackage): RenderType = {
39+
40+
if(hasUnsupportedElements(page) || canHaveAds(page) || isUnSupportedType(page)){
41+
LocalRender
42+
} else {
43+
RemoteRender
44+
}
45+
46+
}
47+
48+
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL