Skip to content

Commit aaaec7f

Browse files
authored
Merge branch 'main' into pw-996/thread-owner
2 parents 04709f8 + 11a523d commit aaaec7f

File tree

82 files changed

+7073
-203
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+7073
-203
lines changed

.circleci/config.yml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,18 @@ version: 2.1
4242
orbs:
4343
android: circleci/android@3.1.0
4444
gcp-cli: circleci/gcp-cli@3.3.1
45-
revenuecat: revenuecat/sdks-common-config@3.8.0
45+
revenuecat: revenuecat/sdks-common-config@3.13.0
4646
codecov: codecov/codecov@3.2.4
4747

4848
parameters:
4949
action:
5050
type: enum
5151
enum: [default, bump, paywall_tester_release, rct_tester_release, deploy_snapshot_release, update_paywall_templates, update_golden_requests_backend_integration_tests]
5252
default: default
53+
paywall_tester_track:
54+
type: enum
55+
enum: [internal, alpha, beta, production]
56+
default: alpha
5357

5458
commands:
5559
install-sdkman:
@@ -263,6 +267,8 @@ jobs:
263267
shell: /bin/bash --login -o pipefail
264268
steps:
265269
- checkout
270+
- revenuecat/setup-git-credentials
271+
- revenuecat/trust-github-key
266272
- checkout-submodule:
267273
path: upstream/paywall-preview-resources
268274
- install-sdkman
@@ -388,7 +394,7 @@ jobs:
388394
command: sudo pip install awscli
389395
- run:
390396
name: Deploy to S3
391-
command: aws s3 sync ~/project/docs/9.23.0-SNAPSHOT s3://purchases-docs/android/9.23.0-SNAPSHOT --delete
397+
command: aws s3 sync ~/project/docs/9.24.0-SNAPSHOT s3://purchases-docs/android/9.24.0-SNAPSHOT --delete
392398
- run:
393399
name: Update index.html
394400
command: aws s3 cp ~/project/docs/index.html s3://purchases-docs/android/index.html
@@ -664,6 +670,8 @@ jobs:
664670
<<: *android-executor
665671
steps:
666672
- checkout
673+
- revenuecat/setup-git-credentials
674+
- revenuecat/trust-github-key
667675
- checkout-submodule:
668676
path: upstream/paywall-preview-resources
669677
- install-sdkman
@@ -767,6 +775,8 @@ jobs:
767775
<<: *android-executor
768776
steps:
769777
- checkout
778+
- revenuecat/setup-git-credentials
779+
- revenuecat/trust-github-key
770780
- checkout-submodule:
771781
path: upstream/paywall-preview-resources
772782
- attach_workspace:
@@ -781,7 +791,6 @@ jobs:
781791
- revenuecat/install-gem-unix-dependencies:
782792
cache-version: v1
783793
- android/restore_gradle_cache
784-
- revenuecat/setup-git-credentials
785794
- run:
786795
name: Records new RevenueCat UI snapshots to become the new golden
787796
command: bundle exec fastlane android record_paparazzi_screenshots gradle_module:ui:revenuecatui
@@ -824,6 +833,8 @@ jobs:
824833
<<: *android-executor
825834
steps:
826835
- checkout
836+
- revenuecat/setup-git-credentials
837+
- revenuecat/trust-github-key
827838
- checkout-submodule:
828839
path: upstream/paywall-preview-resources
829840
- run:
@@ -833,7 +844,6 @@ jobs:
833844
- revenuecat/install-gem-unix-dependencies:
834845
cache-version: v1
835846
- android/restore_build_cache
836-
- revenuecat/setup-git-credentials
837847
- run:
838848
name: Set GitHub token environment variable
839849
command: |
@@ -905,11 +915,12 @@ jobs:
905915
- image: cimg/ruby:3.2.0
906916
steps:
907917
- checkout
918+
- revenuecat/setup-git-credentials
919+
- revenuecat/trust-github-key
908920
- checkout-submodule:
909921
path: upstream/paywall-preview-resources
910922
- revenuecat/install-gem-unix-dependencies:
911923
cache-version: v1
912-
- revenuecat/setup-git-credentials
913924
- run:
914925
name: Update paywall templates
915926
command: bundle exec fastlane android update_paywall_preview_resources_submodule
@@ -1170,7 +1181,7 @@ workflows:
11701181
equal: [ paywall_tester_release, << pipeline.parameters.action >> ]
11711182
jobs:
11721183
- publish-paywall-tester-release:
1173-
track: "alpha"
1184+
track: << pipeline.parameters.paywall_tester_track >>
11741185

11751186
manual-rct-tester-release:
11761187
when:

.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9.23.0-SNAPSHOT
1+
9.24.0-SNAPSHOT

CHANGELOG.latest.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
## RevenueCatUI SDK
22
### Paywallv2
33
#### 🐞 Bugfixes
4-
* Gracefully handle orphan `text_lid` instead of falling back to legacy paywall (#3101) via Cesar de la Vega (@vegaro)
4+
* Fix default value for `productChangeConfig` (#3153) via Cesar de la Vega (@vegaro)
55

66
### 🔄 Other Changes
7-
* Add PR labels to AGENTS.md (#3139) via Toni Rico (@tonidero)
8-
* Pass custom PurchaseLogic to PaywallActivityLauncher in RCTTester (#3137) via Toni Rico (@tonidero)
9-
* Add .claude/ to .gitignore and guardrails to AGENTS.md (#3123) via Facundo Menzella (@facumenzella)
7+
* Add elapsed_millis to FLUSH_COMPLETED debug event (#3184) via Toni Rico (@tonidero)
8+
* Add priority flush with rate limiting and queuing (#3179) via Rick (@rickvdl)
9+
* Bypass billing in preview mode (#3162) via Monika Mateska (@MonikaMateska)

CHANGELOG.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,48 @@
1+
## 9.23.1
2+
## RevenueCatUI SDK
3+
### Paywallv2
4+
#### 🐞 Bugfixes
5+
* Fix default value for `productChangeConfig` (#3153) via Cesar de la Vega (@vegaro)
6+
7+
### 🔄 Other Changes
8+
* Add elapsed_millis to FLUSH_COMPLETED debug event (#3184) via Toni Rico (@tonidero)
9+
* Add priority flush with rate limiting and queuing (#3179) via Rick (@rickvdl)
10+
* Bypass billing in preview mode (#3162) via Monika Mateska (@MonikaMateska)
11+
12+
## 9.23.0
13+
## RevenueCat SDK
14+
### ✨ New Features
15+
* [CIA-5346] Appstack integration to android sdk (#3150) via Damian Rubio (@DamianRubio)
16+
* Create `PaywallPurchaseContext` to `PurchaseLogic` for product changes and offers (#3129) via Cesar de la Vega (@vegaro)
17+
* [EXTERNAL] feat: introduce awaitCanMakePayments (#3136) contributed by @TheRogue76 (#3141) via Toni Rico (@tonidero)
18+
### 🐞 Bugfixes
19+
* Fix missing uiPreviewMode mock in integration test (#3164) via Rick (@rickvdl)
20+
21+
## RevenueCatUI SDK
22+
### 🐞 Bugfixes
23+
* Fix: Low res video only on first paywall view (#3120) via Jacob Rakidzich (@JZDesign)
24+
### Customer Center
25+
#### 🐞 Bugfixes
26+
* Fix cancellation URI in Customer Center (#3151) via Cesar de la Vega (@vegaro)
27+
### Paywallv2
28+
#### 🐞 Bugfixes
29+
* Fix PaywallResult.Cancelled for successful MY_APP purchases (#3138) via Toni Rico (@tonidero)
30+
31+
### 🔄 Other Changes
32+
* Add internal trackCustomPaywallImpression method (#3167) via Rick (@rickvdl)
33+
* Bump fastlane-plugin-revenuecat_internal from `8cd957f` to `f5c099b` (#3176) via dependabot[bot] (@dependabot[bot])
34+
* Update sdks-common-config orb to 3.13.0 (#3173) via Antonio Pallares (@ajpallares)
35+
* Add FLUSH_COMPLETED and FLUSH_SKIPPED_NO_EVENTS debug events (#3166) via Toni Rico (@tonidero)
36+
* Add `paywall_tester_track` parameter to `manual-paywall-tester-release` (#3169) via Cesar de la Vega (@vegaro)
37+
* Return mock CustomerInfo in preview mode (#3161) via Monika Mateska (@MonikaMateska)
38+
* Disable attribution, diagnostics, and caching in preview mode (#3160) via Monika Mateska (@MonikaMateska)
39+
* Add X-UI-Preview-Mode header to HTTP requests in preview mode (#3159) via Monika Mateska (@MonikaMateska)
40+
* Paywall Tester - Helper to clear paywall file cache (#3154) via Jacob Rakidzich (@JZDesign)
41+
* Use fixed user ID and block login/logout in preview mode (#3158) via Monika Mateska (@MonikaMateska)
42+
* Bump fastlane-plugin-revenuecat_internal from `afc9219` to `ea6276c` (#3122) via dependabot[bot] (@dependabot[bot])
43+
* Bump fastlane from 2.232.1 to 2.232.2 (#3155) via dependabot[bot] (@dependabot[bot])
44+
* Add uiPreviewMode flag to DangerousSettings (#3144) via Monika Mateska (@MonikaMateska)
45+
146
## 9.22.2
247
## RevenueCatUI SDK
348
### Paywallv2

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
GIT
22
remote: https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal
3-
revision: 8cd957f15481f738116cbde803c307c9e3b838a0
3+
revision: f5c099b657d36024ac98ab89b004a5d2adb6c891
44
branch: main
55
specs:
66
fastlane-plugin-revenuecat_internal (0.1.0)
@@ -236,7 +236,7 @@ GEM
236236
mime-types (3.7.0)
237237
logger
238238
mime-types-data (~> 3.2025, >= 3.2025.0507)
239-
mime-types-data (3.2026.0224)
239+
mime-types-data (3.2026.0303)
240240
mini_magick (4.13.2)
241241
mini_mime (1.1.5)
242242
mini_portile2 (2.8.9)

api-tester/src/defaults/java/com/revenuecat/apitester/java/PurchasesAPI.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,19 @@ static void checkSetAppsFlyerAttributionData(final Purchases purchases) {
186186
purchases.setAppsFlyerConversionData(mapStringInt);
187187
}
188188

189+
static void checkSetAppstackAttributionParams(final Purchases purchases) {
190+
final SyncAttributesAndOfferingsCallback callback = new SyncAttributesAndOfferingsCallback() {
191+
@Override
192+
public void onSuccess(@NonNull Offerings offerings) {}
193+
194+
@Override
195+
public void onError(@NonNull PurchasesError error) {}
196+
};
197+
198+
Map<String, String> mapStringString = new HashMap<>();
199+
purchases.setAppstackAttributionParams(mapStringString, callback);
200+
}
201+
189202
static void checkConfiguration(final Context context,
190203
final ExecutorService executorService,
191204
final PurchasesConfiguration purchasesConfiguration) {

api-tester/src/defaults/kotlin/com/revenuecat/apitester/kotlin/PurchasesAPI.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.revenuecat.purchases.awaitLogIn
2525
import com.revenuecat.purchases.awaitLogOut
2626
import com.revenuecat.purchases.awaitRestore
2727
import com.revenuecat.purchases.awaitRestoreResult
28+
import com.revenuecat.purchases.awaitSetAppstackAttributionParams
2829
import com.revenuecat.purchases.awaitStorefrontLocale
2930
import com.revenuecat.purchases.awaitSyncAttributesAndOfferingsIfNeeded
3031
import com.revenuecat.purchases.awaitSyncPurchases
@@ -216,6 +217,8 @@ private class PurchasesAPI {
216217
var customerCenterConfigData: CustomerCenterConfigData = purchases.awaitCustomerCenterConfigData()
217218
val getVirtualCurrenciesResult: VirtualCurrencies = purchases.awaitGetVirtualCurrencies()
218219
val storefrontLocale: Locale = purchases.awaitStorefrontLocale()
220+
var offeringsWithAppstackTargeting: Offerings =
221+
purchases.awaitSetAppstackAttributionParams(mapOf("key" to "value"))
219222
}
220223

221224
fun check(purchases: Purchases, attributes: Map<String, String>) {
@@ -288,6 +291,17 @@ private class PurchasesAPI {
288291
purchases.setAppsFlyerConversionData(mapNullableKeyNullableInt)
289292
}
290293

294+
@Suppress("UNUSED_PARAMETER")
295+
fun checkSetAppstackAttributionParams(purchases: Purchases) {
296+
val callback = object : SyncAttributesAndOfferingsCallback {
297+
override fun onSuccess(offerings: Offerings) {}
298+
override fun onError(error: PurchasesError) {}
299+
}
300+
301+
val mapStringString: Map<String, String> = emptyMap()
302+
purchases.setAppstackAttributionParams(mapStringString, callback)
303+
}
304+
291305
@Suppress("ForbiddenComment")
292306
fun checkConfiguration(
293307
purchasesConfiguration: PurchasesConfiguration,

api-tester/src/defaults/kotlin/com/revenuecat/apitester/kotlin/revenuecatui/CustomVariableValueAPI.kt

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,38 @@ package com.revenuecat.apitester.kotlin.revenuecatui
22

33
import com.revenuecat.purchases.ui.revenuecatui.CustomVariableValue
44

5-
@Suppress("unused", "UNUSED_VARIABLE")
5+
@Suppress("unused", "UNUSED_VARIABLE", "MagicNumber")
66
private class CustomVariableValueAPI {
77

8-
fun check() {
9-
// String type is public
8+
fun checkString() {
109
val stringValue: CustomVariableValue = CustomVariableValue.String("test")
1110
val stringInnerValue: String = stringValue.stringValue
12-
13-
// Access the underlying value
1411
val underlyingString: String = (stringValue as CustomVariableValue.String).value
1512
}
1613

14+
fun checkNumber() {
15+
val fromDouble: CustomVariableValue = CustomVariableValue.Number(9.99)
16+
val fromInt: CustomVariableValue = CustomVariableValue.Number(42)
17+
val fromLong: CustomVariableValue = CustomVariableValue.Number(123L)
18+
val fromFloat: CustomVariableValue = CustomVariableValue.Number(3.14f)
19+
val underlyingDouble: Double = (fromDouble as CustomVariableValue.Number).value
20+
val stringRepresentation: String = fromDouble.stringValue
21+
}
22+
23+
fun checkBoolean() {
24+
val boolTrue: CustomVariableValue = CustomVariableValue.Boolean(true)
25+
val boolFalse: CustomVariableValue = CustomVariableValue.Boolean(false)
26+
val underlyingBool: Boolean = (boolTrue as CustomVariableValue.Boolean).value
27+
val stringRepresentation: String = boolTrue.stringValue
28+
}
29+
1730
fun checkMap() {
18-
// Typical usage with map
1931
val customVariables: Map<String, CustomVariableValue> = mapOf(
2032
"player_name" to CustomVariableValue.String("John"),
21-
"app_name" to CustomVariableValue.String("My App"),
33+
"level" to CustomVariableValue.Number(42),
34+
"is_premium" to CustomVariableValue.Boolean(true),
2235
)
2336

24-
// Access values
2537
for ((key, value) in customVariables) {
2638
val stringRepresentation: String = value.stringValue
2739
}

config/detekt/detekt-baseline.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@
164164
<ID>TooManyFunctions:HTTPClient.kt$HTTPClient</ID>
165165
<ID>TooManyFunctions:Purchases.kt$Purchases : LifecycleDelegate</ID>
166166
<ID>TooManyFunctions:SubscriberAttributesCache.kt$SubscriberAttributesCache</ID>
167+
<ID>TooManyFunctions:coroutinesExtensions.kt$com.revenuecat.purchases.coroutinesExtensions.kt</ID>
167168
<ID>TooManyFunctions:listenerConversions.kt$com.revenuecat.purchases.listenerConversions.kt</ID>
168169
<ID>UnusedParameter:SampleWeatherData.kt$SampleWeatherData.Companion$environment: Environment</ID>
169170
<ID>ViewModelForwarding:AppInfoScreen.kt$LoginDialog(viewModel) { showLogInDialog = false }</ID>

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4-
<meta http-equiv="refresh" content="0; url=https://sdk.revenuecat.com/android/9.22.2/index.html" />
4+
<meta http-equiv="refresh" content="0; url=https://sdk.revenuecat.com/android/9.23.1/index.html" />
55
</head>
66
<body>
77
</body>

0 commit comments

Comments
 (0)