diff --git a/build.sbt b/build.sbt index 4dfebca..6b4686f 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ import sbtversionpolicy.withsbtrelease.ReleaseVersion // dependency versions val contentEntityVersion = "4.0.0" -val contentAtomVersion = "12.0.1" +val contentAtomVersion = "13.1.0-PREVIEW.glspike-multimedia-atom.2026-08-03T1406.314057f2" val storyPackageVersion = "2.2.0" val thriftVersion = "0.24.0" val scroogeVersion = "22.1.0" // update plugins too if this version changes @@ -25,6 +25,11 @@ val snapshotReleaseSuffix = "-SNAPSHOT" lazy val artifactProductionSettings = Seq( scalaVersion := "2.13.14", + // A newer scala-library (2.13.18) is pulled in transitively via content-atom, but the 2.13.18 + // compiler crashes on the fezziwig/circe macro-generated trees (scala.MatchError in RefChecks' + // isSimpleCaseApply). We stay on the 2.13.14 compiler, which compiles cleanly, and demote the + // SIP-51 check since all 2.13.x are binary compatible. + allowUnsafeScalaLibUpgrade := true, // This old attempt to downgrade scrooge reserved word clashes is now insufficient... https://github.com/twitter/scrooge/issues/259#issuecomment-1900743695 Compile / scroogeDisableStrict := true, // scrooge 21.3.0: Builds are now only supported for Scala 2.12+ diff --git a/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala b/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala index fce68bc..0300923 100644 --- a/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala +++ b/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala @@ -203,6 +203,10 @@ object CirceDecoders { implicit val audioAtomDecoder: Decoder[audio.AudioAtom] = deriveDecoder implicit val offPlatformDecoder: Decoder[audio.OffPlatform] = deriveDecoder implicit val emailSignUpAtomDecoder: Decoder[emailsignup.EmailSignUpAtom] = deriveDecoder + implicit val multimediaSlideshowMediaReferenceDecoder: Decoder[multimediaslideshow.MediaReference] = deriveDecoder + implicit val multimediaSlideshowSlideContentDecoder: Decoder[multimediaslideshow.SlideContent] = deriveDecoder + implicit val multimediaSlideshowSlideDecoder: Decoder[multimediaslideshow.Slide] = deriveDecoder + implicit val multimediaSlideshowAtomDecoder: Decoder[multimediaslideshow.MultimediaSlideshowAtom] = deriveDecoder implicit val atomDecoder: Decoder[contentatom.Atom] = deriveDecoder implicit val contentChangeDetailsDecoder: Decoder[contentatom.ContentChangeDetails] = deriveDecoder implicit val changeRecordDecoder: Decoder[contentatom.ChangeRecord] = deriveDecoder diff --git a/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala b/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala index 70e1f65..3cf2c2c 100644 --- a/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala +++ b/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala @@ -152,6 +152,10 @@ object CirceEncoders { implicit val audioAtomEncoder: Encoder[audio.AudioAtom] = deriveEncoder implicit val offPlatformEncoder: Encoder[audio.OffPlatform] = deriveEncoder implicit val emailSignUpAtomEncoder: Encoder[emailsignup.EmailSignUpAtom] = deriveEncoder + implicit val multimediaSlideshowMediaReferenceEncoder: Encoder[multimediaslideshow.MediaReference] = deriveEncoder + implicit val multimediaSlideshowSlideContentEncoder: Encoder[multimediaslideshow.SlideContent] = deriveEncoder + implicit val multimediaSlideshowSlideEncoder: Encoder[multimediaslideshow.Slide] = deriveEncoder + implicit val multimediaSlideshowAtomEncoder: Encoder[multimediaslideshow.MultimediaSlideshowAtom] = deriveEncoder implicit val atomEncoder: Encoder[contentatom.Atom] = deriveEncoder implicit val contentChangeDetailsEncoder: Encoder[contentatom.ContentChangeDetails] = deriveEncoder implicit val changeRecordEncoder: Encoder[contentatom.ChangeRecord] = deriveEncoder diff --git a/models/src/main/thrift/content/v1.thrift b/models/src/main/thrift/content/v1.thrift index 9057a0e..5ff21a3 100644 --- a/models/src/main/thrift/content/v1.thrift +++ b/models/src/main/thrift/content/v1.thrift @@ -1857,6 +1857,8 @@ struct Atoms { 16: optional list audios 17: optional list emailsignups + + 18: optional list multimediaslideshows } struct ContentStats {