[Paywalls v2] Adds a default case to most enums and sealed types#2346
Conversation
tonidero
left a comment
There was a problem hiding this comment.
Just some questions, but looks great!!
| } | ||
|
|
||
| @OptIn(InternalRevenueCatAPI::class) | ||
| internal object HorizontalAlignmentDeserializer : EnumDeserializerWithDefault<HorizontalAlignment>( |
There was a problem hiding this comment.
Hmm do we need to make all these @JvmSynthetic?
There was a problem hiding this comment.
@JvmSynthetic is not applicable to classes unfortunately.
| "rectangle" to { MaskShape.Rectangle.serializer() }, | ||
| "concave" to { MaskShape.Concave.serializer() }, | ||
| "convex" to { MaskShape.Convex.serializer() }, | ||
| "circle" to { MaskShape.Circle.serializer() }, |
There was a problem hiding this comment.
I'm wondering if there is a way for us to not forget to add a new value here 🤔. I guess the tests you added would catch these, so it's probably ok 👍
There was a problem hiding this comment.
Yea agreed. So far I don't think there's any other option other than tests, because sealed types don't have a values() function or entries property to list all cases. So it's impossible (?) to build a mapping with an exhaustive when.
| ) : PartialComponent | ||
|
|
||
| @OptIn(InternalRevenueCatAPI::class) | ||
| internal object CarouselPageControlPositionDeserializer : EnumDeserializerWithDefault<PageControl.Position>( |
There was a problem hiding this comment.
i'm wondering, can these serializers be private?
There was a problem hiding this comment.
Unfortunately not. I tried that first, but then objects containing these objects cannot be deserialized. For example, if BackgroundDeserializer is private, PaywallComponentsConfig cannot be deserialized because its auto-generated serializer cannot instantiate BackgroundDeserializer.
📸 Snapshot Test416 unchanged
🛸 Powered by Emerge Tools |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2346 +/- ##
==========================================
+ Coverage 79.93% 80.27% +0.34%
==========================================
Files 284 284
Lines 10051 10104 +53
Branches 1422 1423 +1
==========================================
+ Hits 8034 8111 +77
+ Misses 1405 1378 -27
- Partials 612 615 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…t` (#2347) This is part 3/3: 1. #2345 2. #2346 3. 👉 #2347 --------------- ## Description Adds a new `Unknown` default case to: - `Background` - `ButtonComponent.Action` - `ButtonComponent.Destination` - `ButtonComponent.UrlMethod` And handles this new case in code: - An unknown background type will cause the paywall to fail to render, as we can't infer colors and content colors in this case. - Any unknown button action/destination/method type will cause the button to be hidden.
**This is an automatic release.** ## RevenueCat SDK ### 🐞 Bugfixes * Add missing response fields to `CustomerInfo`. Including transaction Prices (#2128) via Cesar de la Vega (@vegaro) ## RevenueCatUI SDK ### Paywallv2 #### 🐞 Bugfixes * [Paywalls v2] Fixes timeline layout when width is Fit (#2354) via JayShortway (@JayShortway) * [Paywalls V2] Improves fuzzy matching locale when the region doesn't match (#2355) via JayShortway (@JayShortway) * [Paywalls V2] Norwegian Bokmål and Norwegian Nynorsk fall back to Norwegian. (#2329) via JayShortway (@JayShortway) ### Customer Center #### 🐞 Bugfixes * Clean up on restoring functionality in customer center (#2316) via Cesar de la Vega (@vegaro) ### 🔄 Other Changes * [Paywalls v2] Adds the unsupported Background type to the error message (#2350) via JayShortway (@JayShortway) * [Paywalls v2] Uses a fixed date for template previews to avoid daily changes. (#2351) via JayShortway (@JayShortway) * [Paywalls v2] Adds a default case to `Background` and `ButtonComponent` (#2347) via JayShortway (@JayShortway) * [Paywalls v2] Improves `PaywallComponentsTemplatePreviewRecorder` stability (#2352) via JayShortway (@JayShortway) * [Paywalls v2] Adds a default case to most enums and sealed types (#2346) via JayShortway (@JayShortway) * Adds `EnumDeserializerWithDefault` and `SealedDeserializerWithDefault` (#2345) via JayShortway (@JayShortway) * [Paywalls V2] Renders template previews in a fixed resolution using Paparazzi (#2214) via JayShortway (@JayShortway) * Bump fastlane from 2.227.0 to 2.227.1 (#2344) via dependabot[bot] (@dependabot[bot]) * Migrate root gradle file to KTS (#2343) via Jaewoong Eum (@skydoves) * Migrate tester modules to KTS format (#2340) via Jaewoong Eum (@skydoves) * Introduce purchases-bom package (#2339) via Jaewoong Eum (@skydoves) * [AUTOMATIC][Paywalls V2] Updates paywall-preview-resources submodule (#2338) via RevenueCat Git Bot (@RCGitBot) * [Diagnostics] Removes Android 7 requirement (#2335) via JayShortway (@JayShortway) * [Paywalls v2] Fixes `update-paywall-preview-resources-submodule` CI job (#2337) via JayShortway (@JayShortway) * Make purchases module to transitive dependency for the ui module (#2334) via Jaewoong Eum (@skydoves) * Migrate settings.gradle to KTS and add the dependency resolutions (#2328) via Jaewoong Eum (@skydoves) Co-authored-by: revenuecat-ops <ops@revenuecat.com>
This is part 2/3:
EnumDeserializerWithDefaultandSealedDeserializerWithDefault#2345BackgroundandButtonComponent#2347Description
This uses the
EnumDeserializerWithDefaultandSealedDeserializerWithDefaultto add default cases to all enums and sealed types, exceptBackgroundandButtonComponent. Those 2 will be done in the next PR, as they have some cascading effects.