-
Notifications
You must be signed in to change notification settings - Fork 83
Removes data classes from public API #2498
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
Removes data classes from public API #2498
Conversation
@@ -21,7 +21,7 @@ constraintlayout = "1.1.0" | |||
coroutines = "1.6.4" | |||
datastorePreference = "1.0.0" | |||
dependencyGraph = "0.9" | |||
detekt = "1.23.6" | |||
detekt = "1.23.8" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is built against Kotlin 2.0.21.
@Serializable | ||
data class EventsRequest internal constructor( | ||
internal class EventsRequest internal constructor( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: made this internal
.
ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/PaywallOptions.kt
Show resolved
Hide resolved
@@ -10,7 +10,7 @@ internal object VariableProcessor { | |||
/** | |||
* Information necessary for computing variables. | |||
*/ | |||
data class PackageContext( | |||
internal data class PackageContext( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Made this internal
instead of removing data
. The parent VariableProcessor
is already internal
, but detekt still failed.
LongParameterList: | ||
ignoreAnnotated: [ 'Poko' ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LongParameterList
seems to automatically ignore data classes, so I made it ignore @Poko
-annotated classes too.
LibraryEntitiesShouldNotBePublic: | ||
active: false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This rule basically flags everything that is public. The idea is that the public classes are in a dedicated api
or public
package (or the non-public ones are in an internal
package). You could then exclude that package from this rule. We don't have our code organized like that, so for now I disabled the rule.
@@ -66,13 +58,8 @@ package com.revenuecat.purchases.ui.revenuecatui { | |||
method public default void onRestoreStarted(); | |||
} | |||
|
|||
public final class PaywallOptions { | |||
@androidx.compose.runtime.Immutable @dev.drewhamilton.poko.Poko public final class PaywallOptions { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure why some of the @Immutable
ones weren't picked up earlier.
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2498 +/- ##
==========================================
- Coverage 78.30% 77.93% -0.37%
==========================================
Files 286 286
Lines 10512 10572 +60
Branches 1485 1485
==========================================
+ Hits 8231 8239 +8
- Misses 1635 1687 +52
Partials 646 646 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…-api # Conflicts: # purchases/api-defauts.txt # purchases/api-entitlement.txt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing getting rid of all these!!
ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/PaywallOptions.kt
Show resolved
Hide resolved
import com.revenuecat.purchases.paywalls.PaywallData | ||
|
||
@Suppress("LongParameterList") | ||
internal fun Offering.copy( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm I see we have some copy methods in the purchases
module, with a @InternalRevenueCat
annotation... Would it be worth doing the same for these ones? Not sure if they might be useful there at some point... In any case, not a blocker, I'm also ok with this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a bit in the middle on this haha. It can't really hurt, but on the other hand it would add it to our "public" API (makes it more visible in auto complete and stuff, even with required opt-in). We can also move it when we end up needing it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup! I'm fine with that 👍
…-api # Conflicts: # purchases/api-defauts.txt # purchases/api-entitlement.txt # ui/revenuecatui/api.txt
…from-public-api # Conflicts: # purchases/api-defauts.txt # purchases/api-entitlement.txt
…-api # Conflicts: # purchases/api-defauts.txt # purchases/api-entitlement.txt # purchases/src/main/kotlin/com/revenuecat/purchases/paywalls/PaywallColor.kt
## RevenueCat SDK This release updates the SDK to use Google Play Billing Library 8. This version of the Billing Library removed APIs to query for expired subscriptions and consumed one-time products, aside from other improvements. You can check the full list of changes here: https://developer.android.com/google/play/billing/release-notes#8-0-0 Additionally, we've also updated Kotlin to 2.0.21 and our new minimum version is Kotlin 1.8.0+. If you were using an older version of Kotlin, you will need to update it. Regarding API changes, we've also removed data classes from our public APIs. This means that for classes that were previously data classes, the `copy` function and `componentN` functions (destructuring declarations) have been removed. `equals` and `hashCode` functions still work as before. ### Play Billing Library 8: No expired subscriptions or consumed one-time products **Note:** the following is only relevant if you recently integrated RevenueCat, and do not (yet) have all your transactions imported. Play Billing Library 8 removed functionality to query expired subscriptions or consumed one-time products. This means that, for users migrating from a non-RevenueCat implementation of the Play Billing Library, the SDK will not be able to send purchase information from these purchases. We can still ingest historical data from these purchases through a backend historical import. See [docs](https://www.revenuecat.com/docs/migrating-to-revenuecat/migrating-existing-subscriptions). This doesn't affect developers that have all transactions in RevenueCat, which is true for the vast majority. ### Bumped minimum Kotlin version RevenueCat SDK v9 bumps Kotlin to 2.0.21, with a minimum Kotlin version of 1.8.0. ### Using the SDK with your own IAP code (previously Observer Mode) Using the SDK with your own IAP code is still supported in v9. Other than updating the SDK version, there are no changes required. Just make sure the version of the Play Billing Library is also version 8.0.0+. ### 💥 Breaking Changes * Removes data classes from public API (#2498) via JayShortway (@JayShortway) * Marks `PaywallData` and `PaywallColor` as `InternalRevenueCatAPI`. (#2507) via JayShortway (@JayShortway) * BC8 migration (#2506) via Toni Rico (@tonidero) * Update to kotlin 2.0.21 while keeping language compatibility (#2493) via Toni Rico (@tonidero) ### 🔄 Other Changes * Update CustomEntitlementComputation sample app kotlin version (#2510) via Toni Rico (@tonidero) * Fix `Switch` component previews (#2509) via Toni Rico (@tonidero) * Add V9 migration guide (#2508) via Toni Rico (@tonidero) * [AUTOMATIC][Paywalls V2] Updates paywall-preview-resources submodule (#2499) via RevenueCat Git Bot (@RCGitBot) --------- Co-authored-by: JayShortway <29483617+JayShortway@users.noreply.github.com>
Description
Codex started this, but I did most of the work sooooo.
@Poko
.copy()
function if we were using it ourselves.The diff is rather large, but most of it is very low in complexity.