app/models/Cta.scala (18 lines of code) (raw):
package models
import io.circe.generic.extras.Configuration
import io.circe.generic.extras.auto._
import io.circe.{Decoder, Encoder}
case class Cta(text: String, baseUrl: String)
sealed trait SecondaryCta
case class CustomSecondaryCta(
`type`: String = "CustomSecondaryCta",
cta: Cta,
) extends SecondaryCta
case class ContributionsReminderSecondaryCta(
`type`: String = "ContributionsReminderSecondaryCta",
) extends SecondaryCta
object SecondaryCta {
implicit val customConfig: Configuration = Configuration.default.withDiscriminator("type")
implicit val secondaryCtaDecoder = Decoder[SecondaryCta]
implicit val secondaryCtaEncoder = Encoder[SecondaryCta]
}