Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove storyquestions atom #21897

Merged
merged 14 commits into from
Nov 11, 2019
3 changes: 0 additions & 3 deletions applications/app/controllers/AtomPageController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,6 @@ class AtomPageController(contentApiClient: ContentApiClient, wsClient: WSClient,
lookup(s"atom/$atomType/$id") map {
case Left(model: MediaAtom) =>
renderAtom(MediaAtomPage(model, withJavaScript = isJsEnabled, withVerticalScrollbar = hasVerticalScrollbar))
case Left(model: StoryQuestionsAtom) =>
renderAtom(StoryQuestionsAtomPage(model, withJavaScript = isJsEnabled, withVerticalScrollbar = hasVerticalScrollbar, inApp = inApp))
Copy link
Member

@rtyley rtyley Aug 9, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incidentally, this removes the last use of the inApp: Boolean parameter on the render() method, so this can now be removed. The parameter was added with #18213 - we're removing it now with the work in #25190, see 4cb721e.

case Left(model: GuideAtom) =>
renderAtom(GuideAtomPage(model, withJavaScript = isJsEnabled, withVerticalScrollbar = hasVerticalScrollbar))
case Left(model: ProfileAtom) =>
Expand Down Expand Up @@ -109,7 +107,6 @@ class AtomPageController(contentApiClient: ContentApiClient, wsClient: WSClient,

def makeAtom(apiAtom: ItemResponse): Option[Atom] = {
apiAtom.media.map(atom => MediaAtom.make(atom = atom)) orElse
apiAtom.storyquestions.map(atom => StoryQuestionsAtom.make(atom)) orElse
apiAtom.guide.map(atom => GuideAtom.make(atom)) orElse
apiAtom.profile.map(atom => ProfileAtom.make(atom)) orElse
apiAtom.qanda.map(atom => QandaAtom.make(atom)) orElse
Expand Down
1 change: 0 additions & 1 deletion commercial/test/model/hosted/HostedTrailsTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ class HostedTrailsTest extends FlatSpec with Matchers {
val interactives = None
val recipes = None
val reviews = None
val storyquestions = None
val guides = None
val profiles = None
val qandas = None
Expand Down
5 changes: 0 additions & 5 deletions common/app/model/Formats.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ object ReviewThriftAtomFormat extends Format[com.gu.contentatom.thrift.atom.revi
def writes(review: com.gu.contentatom.thrift.atom.review.ReviewAtom): JsObject = JsObject(Seq.empty)
}

object StoryquestionsThriftAtomFormat extends Format[com.gu.contentatom.thrift.atom.storyquestions.StoryQuestionsAtom] {
def reads(json: JsValue): JsError = JsError("Converting from Json is not supported by intent!")
def writes(storyquestions: com.gu.contentatom.thrift.atom.storyquestions.StoryQuestionsAtom): JsObject = JsObject(Seq.empty)
}

object ExplainerThriftAtomFormat extends Format[com.gu.contentatom.thrift.atom.explainer.ExplainerAtom] {
def reads(json: JsValue): JsError = JsError("Converting from Json is not supported by intent!")
def writes(explainer: com.gu.contentatom.thrift.atom.explainer.ExplainerAtom): JsObject = JsObject(Seq.empty)
Expand Down
46 changes: 1 addition & 45 deletions common/app/model/content/Atoms.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ final case class Atoms(
interactives: Seq[InteractiveAtom],
recipes: Seq[RecipeAtom],
reviews: Seq[ReviewAtom],
storyquestions: Seq[StoryQuestionsAtom],
explainers: Seq[ExplainerAtom],
qandas: Seq[QandaAtom],
guides: Seq[GuideAtom],
Expand All @@ -31,14 +30,13 @@ final case class Atoms(
audios: Seq[AudioAtom],
charts: Seq[ChartAtom]
) {
val all: Seq[Atom] = quizzes ++ media ++ interactives ++ recipes ++ reviews ++ storyquestions ++ explainers ++ qandas ++ guides ++ profiles ++ timelines ++ commonsdivisions ++ audios ++ charts
val all: Seq[Atom] = quizzes ++ media ++ interactives ++ recipes ++ reviews ++ explainers ++ qandas ++ guides ++ profiles ++ timelines ++ commonsdivisions ++ audios ++ charts

def atomTypes: Map[String, Boolean] = Map(
"guide" -> !guides.isEmpty,
"qanda" -> !qandas.isEmpty,
"profile" -> !profiles.isEmpty,
"timeline" -> !timelines.isEmpty,
"storyquestions" -> !storyquestions.isEmpty,
"explainer" -> !explainers.isEmpty,
"commonsdivision" -> !commonsdivisions.isEmpty,
"audio" -> !audios.isEmpty,
Expand Down Expand Up @@ -146,12 +144,6 @@ final case class ReviewAtom(
data: atomapi.review.ReviewAtom
) extends Atom

final case class StoryQuestionsAtom(
override val id: String,
atom: AtomApiAtom,
data: atomapi.storyquestions.StoryQuestionsAtom
) extends Atom

final case class ExplainerAtom(
override val id: String,
labels: Seq[String],
Expand Down Expand Up @@ -270,8 +262,6 @@ object Atoms extends common.Logging {

val reviews = extract(atoms.reviews, atom => { ReviewAtom.make(atom) })

val storyquestions = extract(atoms.storyquestions, atom => { StoryQuestionsAtom.make(atom) }).filter(StoryQuestionsAtom.isOpen)

val explainers = extract(atoms.explainers, atom => { ExplainerAtom.make(atom) })

val qandas = extract(atoms.qandas, atom => {QandaAtom.make(atom)})
Expand All @@ -294,7 +284,6 @@ object Atoms extends common.Logging {
interactives = interactives,
recipes = recipes,
reviews = reviews,
storyquestions = storyquestions,
explainers = explainers,
qandas = qandas,
guides = guides,
Expand Down Expand Up @@ -561,39 +550,6 @@ object ReviewAtom {
}
}

object StoryQuestionsAtom {
def make(atom: AtomApiAtom): StoryQuestionsAtom = StoryQuestionsAtom(
atom.id,
atom,
atom.data.asInstanceOf[AtomData.Storyquestions].storyquestions
)

def isOpen(question: StoryQuestionsAtom): Boolean =
!question.data.closeDate.exists { closeDate =>
closeDate < DateTime.now(DateTimeZone.UTC).getMillis
}

def getListId(question: StoryQuestionsAtom): Option[String] = {
if ("test/test" == question.data.relatedStoryId) {
/**
* TODO - remove this workaround once we've migrated to using the listId in the model.
*
* This workaround enables us to run a test for demand of receiving the answers commissioned to questions by email.
* If the story questions atom belongs to the test/test tag and has a label 4 characters long (an email list id) then
* show the form allowing a user to submit their email address and receive an answer.
*/
question.atom.labels.find(_.length == 4)
} else {
for {
notifications <- question.data.notifications
email <- notifications.email
} yield email.listId
}
}


}

object ExplainerAtom {
def make(atom: AtomApiAtom): ExplainerAtom = {
val explainer = atom.data.asInstanceOf[AtomData.Explainer].explainer
Expand Down
15 changes: 0 additions & 15 deletions common/app/model/meta.scala
Original file line number Diff line number Diff line change
Expand Up @@ -444,21 +444,6 @@ case class MediaAtomPage(
)
}

case class StoryQuestionsAtomPage(
override val atom: StoryQuestionsAtom,
override val withJavaScript: Boolean,
override val withVerticalScrollbar: Boolean,
val inApp: Boolean
)(implicit request: RequestHeader) extends AtomPage {
override val atomType = "storyquestions"
override val body = views.html.fragments.atoms.storyquestions(atom, inApp = inApp)
override val metadata = MetaData.make(
id = atom.id,
webTitle = atom.atom.title.getOrElse("Story questions"),
section = None
)
}

case class GuideAtomPage(
override val atom: GuideAtom,
override val withJavaScript: Boolean,
Expand Down
3 changes: 1 addition & 2 deletions common/app/views/fragments/atoms/atom.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
)(implicit request: RequestHeader, context: ApplicationContext)

@import _root_.model.ShareLinkMeta
@import _root_.model.content.{InteractiveAtom, MediaAtom, Quiz, StoryQuestionsAtom, TimelineAtom, GuideAtom, ProfileAtom, QandaAtom, ExplainerAtom, CommonsDivisionAtom, AudioAtom, ChartAtom}
@import _root_.model.content.{InteractiveAtom, MediaAtom, Quiz, TimelineAtom, GuideAtom, ProfileAtom, QandaAtom, ExplainerAtom, CommonsDivisionAtom, AudioAtom, ChartAtom}
@{
model match {
case quiz: Quiz => views.html.fragments.atoms.quiz(quiz, maybeResults = None, showResults = false, sharelinks = quiz.shareLinks)
Expand All @@ -22,7 +22,6 @@
posterImageOverride = posterImageOverride
)
case interactive: InteractiveAtom => views.html.fragments.atoms.interactive(interactive, shouldFence)
case storyquestions: StoryQuestionsAtom => Html(ArticleAtomRenderer.getHTML(storyquestions.atom, config))
case qanda: QandaAtom => Html(ArticleAtomRenderer.getHTML(qanda.atom, config))
case timeline: TimelineAtom => Html(ArticleAtomRenderer.getHTML(timeline.atom, config))
case guide: GuideAtom => Html(ArticleAtomRenderer.getHTML(guide.atom, config))
Expand Down
64 changes: 0 additions & 64 deletions common/app/views/fragments/atoms/storyquestions.scala.html

This file was deleted.

1 change: 0 additions & 1 deletion common/test/views/support/cleaner/AtomCleanerTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ class AtomCleanerTest extends FlatSpec
interactives = Nil,
recipes = Nil,
reviews = Nil,
storyquestions = Nil,
explainers = Nil,
qandas = Nil,
guides = Nil,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
"dependencies": {
"@babel/runtime": "^7.2.0",
"@guardian/atom-renderer": "1.0.4",
"@guardian/atom-renderer": "1.1.1",
"@guardian/consent-management-platform": "1.0.2",
"@guardian/dotcom-rendering": "git://github.com/guardian/dotcom-rendering.git#version-1-alpha",
"bean": "~1.0.14",
Expand Down
4 changes: 2 additions & 2 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import sbt._
object Dependencies {
val identityLibVersion = "3.190"
val awsVersion = "1.11.240"
val capiVersion = "15.0"
val capiVersion = "15.4"
val faciaVersion = "3.0.11"
val dispatchVersion = "0.13.1"
val romeVersion = "1.0"
Expand Down Expand Up @@ -72,7 +72,7 @@ object Dependencies {
val playJsonExtensions = "ai.x" %% "play-json-extensions" % playJsonExtensionsVersion
val playJsonJoda = "com.typesafe.play" %% "play-json-joda" % playJsonVersion
val playIteratees = "com.typesafe.play" %% "play-iteratees" % "2.6.1"
val atomRenderer = "com.gu" %% "atom-renderer" % "1.0.4"
val atomRenderer = "com.gu" %% "atom-renderer" % "1.1.1"
val supportInternationalisation = "com.gu" %% "support-internationalisation" % "0.9"
val capiAws = "com.gu" %% "content-api-client-aws" % "0.5"
val okhttp = "com.squareup.okhttp3" % "okhttp" % "3.10.0"
Expand Down
12 changes: 0 additions & 12 deletions static/src/javascripts/bootstraps/standard/atoms.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,18 +111,6 @@ const initAtoms = () => {
);
}

if (config.get('page.atomTypes.storyquestions')) {
require.ensure(
[],
require => {
require('@guardian/atom-renderer/dist/storyquestions/article/index.css');
const atomMaker = require('@guardian/atom-renderer/dist/storyquestions/article/index');
bootstrapAtom(atomMaker, 'storyquestions');
},
'storyquestions-atom'
);
}

if (config.get('page.atomTypes.explainer')) {
require.ensure(
[],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,6 @@ const checksToDispatch = {
);
},

isStoryQuestionsOnPage(): Promise<boolean> {
return Promise.resolve(
document.querySelectorAll('.js-ask-question-link').length > 0
);
},

isOutbrainBlockedByAds(): Promise<boolean> {
const dependentChecks = [
waitForCheck('hasHighPriorityAdLoaded'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ type OutbrainPageConditions = {
outbrainEnabled: boolean,
noMerchSlotsExpected: boolean,
contributionsTestVisible: boolean,
storyQuestionsVisible: boolean,
};

type OutbrainDfpConditions = {
Expand All @@ -32,12 +31,10 @@ const getOutbrainPageConditions = (): Promise<OutbrainPageConditions> =>
waitForCheck('isOutbrainDisabled'),
noMerchSlotsExpected(),
waitForCheck('isUserInContributionsAbTest'),
waitForCheck('isStoryQuestionsOnPage'),
]).then(([outbrainDisabled, noMerchSlots, contributions, story]) => ({
]).then(([outbrainDisabled, noMerchSlots, contributions]) => ({
outbrainEnabled: !outbrainDisabled,
noMerchSlotsExpected: noMerchSlots,
contributionsTestVisible: contributions,
storyQuestionsVisible: story,
}));

const getOutbrainDfpConditions = (): Promise<OutbrainDfpConditions> =>
Expand All @@ -55,7 +52,6 @@ export const getOutbrainComplianceTargeting = (): Promise<
getOutbrainPageConditions().then(pageConditions => {
if (
pageConditions.contributionsTestVisible ||
pageConditions.storyQuestionsVisible ||
!pageConditions.outbrainEnabled
) {
// This key value should be read as "the outbrain load cannot be compliant"
Expand Down Expand Up @@ -105,14 +101,9 @@ export const initOutbrain = (): Promise<void> =>
'debug.outbrain.pageConditions.contributionsTestVisible',
pageConditions.contributionsTestVisible
);
config.set(
'debug.outbrain.pageConditions.storyQuestionsVisible',
pageConditions.storyQuestionsVisible
);

const contributionVisible = pageConditions.contributionsTestVisible;
const editorialTests =
contributionVisible || pageConditions.storyQuestionsVisible;
const editorialTests = contributionVisible;

config.set('debug.outbrain.editorialTests', editorialTests);
config.set(
Expand Down
Loading