-
Notifications
You must be signed in to change notification settings - Fork 12
Release: 2.24.2 #177
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
Release: 2.24.2 #177
Conversation
|
CodeAnt AI is reviewing your PR. Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||
|
PR Summary: Release: Bump to 2.24.2 — updates changelog and version metadata to publish a patch that "Fix[es] react native issues". Changes:
Notes:
|
Nitpicks 🔍
|
| @@ -1,4 +1,4 @@ | |||
| val usercentricsVersion = "2.24.1" | |||
| val usercentricsVersion = "2.24.2" | |||
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.
Suggestion: Hardcoded dependency version: embedding "2.24.2" directly in the script makes it harder to override or keep consistent across modules and CI; prefer reading the version from a project property (with a fallback) so callers can override it without editing the file. [configuration]
Severity Level: Minor
| val usercentricsVersion = "2.24.2" | |
| val usercentricsVersion: String = (project.findProperty("usercentricsVersion") as String?) ?: "2.24.2" |
Why it matters? ⭐
The suggestion addresses a real, practical configuration shortcoming: embedding the dependency version directly in the Kotlin DSL makes it harder to override from CI or other modules and to keep versions consistent across a multi-module build. Replacing the literal with a project property fallback is a low-risk, high-value improvement that enables -P overrides (or a central versions catalog) without changing runtime behaviour when no override is provided.
Note: the proposed cast in the improved_code (project.findProperty("usercentricsVersion") as String?) can be brittle if the property isn't a String; prefer project.findProperty("usercentricsVersion")?.toString() ?: "2.24.2" for a safer conversion.
Prompt for AI Agent 🤖
This is a comment left during a code review.
**Path:** android/build.gradle.kts
**Line:** 1:1
**Comment:**
*Configuration: Hardcoded dependency version: embedding "2.24.2" directly in the script makes it harder to override or keep consistent across modules and CI; prefer reading the version from a project property (with a fallback) so callers can override it without editing the file.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.|
CodeAnt AI finished reviewing your PR. |
| ### 2.24.2 – Dec 5, 2025 | ||
| ## Improvement | ||
| * Fix react native issues | ||
|
|
||
| ### 2.24.1 – Oct 31, 2025 | ||
| ## Improvement | ||
| * TCF 2.3 Support: Support the latest Transparency & Consent Framework 2.3. | ||
| * TCF 2.3 Support: fixes about tcString | ||
| * Special Features Section: Added support for the new Special Features/Purposes section. | ||
| * Fix issue where the SDK failed to initialize offline. | ||
|
|
||
| ### 2.24.0 – Oct 31, 2025 |
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.
[NITPICK] The changelog now contains a new 2.24.2 entry (lines starting at 3) but also re-inserts a 2.24.0 block later (lines starting at 14), which creates a duplicate and breaks chronological ordering. Actionable steps: remove the duplicated 2.24.0 block (or merge any unique notes from it), ensure releases are ordered newest-to-oldest, and replace vague entry text like "Fix react native issues" with a short, specific summary or link to the PR/issue (e.g. "Fixed Android X behavior in X component — closes #1234").
[Release Notes](https://docs.usercentrics.com/cmp_in_app_sdk/latest/about/history/)
### 2.24.2 – Dec 5, 2025
## Improvement
* Fixed React Native integration issues when using Fabric renderer and RN >= 0.79.6.
### 2.24.1 – Oct 31, 2025
## Improvement
* TCF 2.3 Support: Support the latest Transparency & Consent Framework 2.3.
* TCF 2.3 Support: fixes about tcString
* Special Features Section: Added support for the new Special Features/Purposes section.
* Fix issue where the SDK failed to initialize offline.
### 2.24.0 – Oct 31, 2025
## React Native
* Added Fabric renderer compatibility| "version": "2.24.2", | ||
| "description": "Usercentrics SDK", | ||
| "homepage": "https://usercentrics.com", | ||
| "main": "lib/index.js", | ||
| "types": "lib/index.d.ts", | ||
| "author": "Usercentrics <[email protected]>", | ||
| "iosPackageName": "react-native-usercentrics", | ||
| "iosPackageVersion": "2.24.1", | ||
| "iosPackageVersion": "2.24.2", |
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.
[VALIDATION] You bumped "version" and "iosPackageVersion" — please validate the full release flow: 1) Ensure package artifacts (compiled lib/, types) are rebuilt (yarn compile / tsc) and included in the release. 2) Run podspec validation (pod spec lint or equivalent) since react-native-usercentrics.podspec uses package['iosPackageVersion'] (see reference podspec). 3) Update any lockfiles (yarn.lock / package-lock.json) and CI/release tags to reflect the new version. This prevents mismatched published artifacts between npm and CocoaPods.
|
Reviewed up to commit:07ad374ba62937995876f2e4bd6a80d990cd75b2 Additional SuggestionOthers- Multiple build files contain hard-coded Usercentrics SDK version strings (android/build-legacy.gradle line 1 and android/build.gradle.kts line 1). Maintain a single source of truth to avoid drift between package.json, legacy Gradle, and Kotlin DSL: - Option A: put usercentrics version in gradle.properties or rootProject.ext and read it from both build scripts. - Option B: derive Android module versions from package.json via a small release script that updates Gradle files (and commits the change) as part of your release pipeline. - For Kotlin DSL, prefer using project.findProperty("usercentricsVersion") or an extra property rather than duplicating literals. This reduces risk of inconsistent versions across artifacts.// android/build.gradle.kts
// gradle.properties
// usercentricsVersion=2.24.2
// android/build.gradle.kts
val usercentricsVersion: String by project
// android/build-legacy.gradle
// gradle.properties
// usercentrics_version=2.24.2
def usercentrics_version = project.hasProperty("usercentrics_version") ? project.getProperty("usercentrics_version") : "2.24.2"
version usercentrics_version
// package.json (source of truth)
// Drive gradle.properties updates via a release script, e.g. scripts/bump-version.js,
// that reads package.json.version and rewrites gradle.properties before tagging a release. |
|
Warning Rate limit exceeded@uc-brunosilva has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 8 minutes and 41 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (17)
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughAdds an optional unsavedPurposeLIDecisions parameter to denyAllForTCF across JS, Fabric, Android and iOS native modules and tests; forwards the new data through bridges into core SDK calls; bumps package and native dependency versions to 2.24.2 and updates CHANGELOG ordering. Changes
Sequence Diagram(s)sequenceDiagram
participant AppJS as App (JS)
participant Fabric as Fabric / TurboModule
participant RN as RN Bridge (Kotlin/ObjC++)
participant Native as Native Manager (iOS/Android)
participant Core as UsercentricsCore
AppJS->>Fabric: denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions)
Fabric->>RN: call denyAllForTCF with decisions array
RN->>Native: denyAllForTCF(fromLayer, consentType, decisions)
Native->>Core: denyAllForTCF(fromLayer:, consentType:, unsavedPurposeLIDecisions:)
Core-->>Native: [UsercentricsServiceConsent] result
Native-->>RN: serialized result
RN-->>Fabric: promise resolved
Fabric-->>AppJS: Promise resolves with service list
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
07ad374 to
8323d0e
Compare
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.
Actionable comments posted: 0
🧹 Nitpick comments (1)
CHANGELOG.md (1)
3-5: Clarify 2.24.2 changelog wordingThe new entry is quite vague and uses inconsistent capitalization (“react native”). Consider a slightly more descriptive line and proper casing, e.g.:
-## Improvement -* Fix react native issues +## Improvement +* Fixed React Native integration issues (see PR #177 for details)This makes the impact clearer for consumers scanning the changelog.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
package-lock.jsonis excluded by!**/package-lock.jsonsample/ios/Podfile.lockis excluded by!**/*.lock
📒 Files selected for processing (7)
CHANGELOG.md(2 hunks)android/build-legacy.gradle(1 hunks)android/build.gradle.kts(1 hunks)android/src/androidTest/java/com/usercentrics/reactnative/RNUsercentricsModuleTest.kt(2 hunks)android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt(1 hunks)ios/Manager/UsercentricsManager.swift(1 hunks)package.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- android/build.gradle.kts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test-ios
- GitHub Check: test-android
🔇 Additional comments (6)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
152-156: Android denyAllForTCF: third argument wiring looks correctPassing
emptyList()intodenyAllForTCFmatches the updated Core API and stays consistent with the iOS bridge (which passes[]). No issues from a type or behavior perspective.ios/Manager/UsercentricsManager.swift (1)
115-117: iOS denyAllForTCF: added unsavedPurposeLIDecisions is consistentForwarding
unsavedPurposeLIDecisions: []keeps the public API stable while matching the new Core signature and Android behavior. Looks good.CHANGELOG.md (1)
14-16: 2.24.0 React Native note and ordering look goodThe 2.24.0 React Native entry now sits correctly after 2.24.1 and before 2.23.x, and the brief description is consistent with surrounding entries.
android/build-legacy.gradle (1)
1-1: Legacy Android usercentrics_version bump is consistentUpdating
usercentrics_versionto"2.24.2"is in line with the rest of the release metadata; no issues.android/src/androidTest/java/com/usercentrics/reactnative/RNUsercentricsModuleTest.kt (1)
518-535: Android testDenyAllForTCF correctly aligned with 3‑arg APIThe mock setup and
verifynow expectdenyAllForTCF(TCFDecisionUILayer.FIRST_LAYER, UsercentricsConsentType.EXPLICIT, emptyList()), which matches the updated module implementation and new SDK signature. Looks solid.package.json (1)
3-10: JS package and iOS pod version bump are consistent
versionandiosPackageVersionare both set to2.24.2, matching the native build files and changelog entries. No further changes needed here.
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.
Actionable comments posted: 0
🧹 Nitpick comments (4)
sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (1)
137-143: LGTM! Implementation matches the example test fake.The changes correctly mirror those in
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift. Both fakes now properly capture theunsavedPurposeLIDecisionsparameter for test assertions.Optional: Consider reducing duplication between test fakes.
The
FakeUsercentricsManagerimplementations inexample/ios/exampleTests/Fake/andsample/ios/sampleTests/Fake/are nearly identical. While common in SDK projects with separate example/sample apps, extracting the shared fake to a common test utilities module could reduce maintenance burden.example/ios/exampleTests/RNUsercentricsModuleTests.swift (1)
319-342: Consider adding assertions for the newunsavedPurposeLIDecisionsparameter.The test passes an empty array for
unsavedPurposeLIDecisions, but there's no assertion verifying it was correctly passed toFakeUsercentricsManager. Based on the relevant snippet fromFakeUsercentricsManager.swift, the fake storesdenyAllForTCFUnsavedPurposeLIDecisions.Consider adding:
XCTAssertEqual([], self.fakeUsercentrics.denyAllForTCFUnsavedPurposeLIDecisions)Additionally, consider adding a test case with non-empty
unsavedPurposeLIDecisionsto verify the parameter is correctly serialized and passed through the native bridge.sample/ios/sampleTests/RNUsercentricsModuleTests.swift (1)
320-353: Same test coverage gap as in example tests.Similar to the example tests, consider adding assertions to verify
unsavedPurposeLIDecisionsis correctly passed through, and add a test case with non-empty data to ensure proper serialization across the bridge.android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt (1)
28-34: LGTM! Consider reducing code duplication.The new extension function is correctly implemented and follows the existing patterns.
Note: There's an opportunity to reduce duplication by reusing this function in
deserializeTCFUserDecisions()(lines 37-43), which has identical logic for the "purposes" array:internal fun ReadableMap.deserializeTCFUserDecisions(): TCFUserDecisions { - val purposes = getArray("purposes")?.let { purpose -> - val list = mutableListOf<TCFUserDecisionOnPurpose>() - for (i in 0 until purpose.size()) { - purpose.getMap(i)?.let { map -> list.add(map.deserializeTCFUserDecisionOnPurpose()) } - } - list - } + val purposes = getArray("purposes")?.deserializeTCFUserDecisionOnPurposeList()
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt(1 hunks)android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt(1 hunks)android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt(1 hunks)example/ios/exampleTests/Fake/FakeUsercentricsManager.swift(1 hunks)example/ios/exampleTests/RNUsercentricsModuleTests.swift(2 hunks)ios/Manager/UsercentricsManager.swift(2 hunks)ios/RNUsercentricsModule.mm(1 hunks)ios/RNUsercentricsModule.swift(1 hunks)ios/RNUsercentricsModuleSpec.h(1 hunks)sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift(1 hunks)sample/ios/sampleTests/RNUsercentricsModuleTests.swift(2 hunks)src/NativeUsercentrics.ts(2 hunks)src/Usercentrics.tsx(2 hunks)src/fabric/NativeUsercentricsModule.ts(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- ios/Manager/UsercentricsManager.swift
🧰 Additional context used
🧬 Code graph analysis (7)
src/Usercentrics.tsx (2)
src/models/TCFUserDecisions.tsx (1)
TCFUserDecisionOnPurpose(26-38)src/models/UsercentricsServiceConsent.tsx (1)
UsercentricsServiceConsent(3-24)
src/NativeUsercentrics.ts (1)
src/models/TCFUserDecisions.tsx (1)
TCFUserDecisionOnPurpose(26-38)
ios/RNUsercentricsModule.swift (2)
src/models/TCFUserDecisions.tsx (1)
TCFUserDecisionOnPurpose(26-38)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (5)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
denyAllForTCF(151-158)android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt (1)
denyAllForTCF(75-76)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)ios/RNUsercentricsModule.swift (1)
denyAllForTCF(158-166)sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(139-144)
example/ios/exampleTests/RNUsercentricsModuleTests.swift (4)
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(138-143)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)ios/RNUsercentricsModule.swift (1)
denyAllForTCF(158-166)sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(139-144)
sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (3)
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(138-143)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)ios/RNUsercentricsModule.swift (1)
denyAllForTCF(158-166)
sample/ios/sampleTests/RNUsercentricsModuleTests.swift (4)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
denyAllForTCF(151-158)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)ios/RNUsercentricsModule.swift (1)
denyAllForTCF(158-166)sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(139-144)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test-android
- GitHub Check: test-ios
🔇 Additional comments (9)
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
136-143: LGTM! Test fake correctly updated to capture new parameter.The addition of
denyAllForTCFUnsavedPurposeLIDecisionsproperty and the updated method signature properly mirror the real implementation inios/Manager/UsercentricsManager.swift. The fake appropriately stores all parameters for test verification.android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt (1)
75-76: LGTM!The spec correctly defines the new
unsavedPurposeLIDecisionsparameter asReadableArray, consistent with the implementation inRNUsercentricsModule.kt.android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
151-158: LGTM!The implementation correctly integrates the new
unsavedPurposeLIDecisionsparameter and uses the appropriate deserialization extension. The pattern is consistent with other TCF methods in this module.src/Usercentrics.tsx (1)
109-112: LGTM!The API extension is well-designed:
- Default value
[]maintains backward compatibility- Type is correctly imported and used
- Parameter is properly forwarded to the native module
ios/RNUsercentricsModuleSpec.h (1)
75-79: LGTM!The Objective-C spec correctly declares the new parameter with appropriate bridging type
NSArray<NSDictionary *> *, consistent with the Swift implementation.src/NativeUsercentrics.ts (1)
49-49: LGTM!The TurboModule spec correctly declares
unsavedPurposeLIDecisionsas required. The optional behavior with default value is appropriately handled at theUsercentrics.tsxwrapper layer, keeping the native interface explicit.ios/RNUsercentricsModule.mm (1)
72-76: Objective-C bridge correctly updated.The bridge declaration properly adds the
unsavedPurposeLIDecisions:(NSArray)unsavedPurposeLIDecisionsparameter, matching the Swift implementation signature. The parameter positioning and type are correct.src/fabric/NativeUsercentricsModule.ts (1)
36-36: Fix type safety inconsistency in the Fabric module interface.The
unsavedPurposeLIDecisionsparameter is already optional with a default value ([]) in the main wrapper (src/Usercentrics.tsx), so this is not a breaking change. However, the Fabric module interface should use the correct specific type instead of genericObject.Update src/fabric/NativeUsercentricsModule.ts to match the actual implementation:
+import { TCFUserDecisionOnPurpose } from '../models/TCFUserDecisions'; + export interface Spec extends TurboModule { // ... - denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>): Promise<Array<Object>>; + denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions?: Array<TCFUserDecisionOnPurpose>): Promise<Array<Object>>;This aligns the interface with src/NativeUsercentrics.ts (which already uses the correct type) and the wrapper implementation in src/Usercentrics.tsx.
Likely an incorrect or invalid review comment.
ios/RNUsercentricsModule.swift (1)
158-166: Implementation is correct with no breaking change.The parameter
unsavedPurposeLIDecisionshas a default value of empty array in the public API (src/Usercentrics.tsx), making it optional. Existing code callingdenyAllForTCFwithout this parameter will continue to work. The Swift implementation correctly accepts[NSDictionary], converts toTCFUserDecisionOnPurposeinstances, and passes them to the manager—following the same pattern assaveDecisionsForTCF. Test coverage exists and verifies parameter passing through the fake manager.
c0adda3 to
cd49c7f
Compare
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.
Actionable comments posted: 0
🧹 Nitpick comments (3)
src/fabric/NativeUsercentricsModule.ts (1)
36-36: Signature extension looks consistent; consider whether the new param should be optional/typed more specificallyThe added
unsavedPurposeLIDecisions: Array<Object>matches the loose typing used elsewhere and keeps the TurboModule surface consistent. If callers are expected to omit this argument in some flows (e.g., no pending LI decisions) or for backward compatibility with existing JS wrappers, you might want to declare it as optional and/or with a more specific element type used at higher levels (e.g.,TCFUserDecisionOnPurpose[]) so the contract is clearer.example/ios/exampleTests/RNUsercentricsModuleTests.swift (1)
319-342: Tests updated correctly for the new API.The test calls now include the
unsavedPurposeLIDecisions: []parameter. Consider adding test cases with non-empty decision arrays in a follow-up to verify the parameter is correctly captured by the fake manager.ios/RNUsercentricsModule.swift (1)
163-163: Minor: Redundant nil initialization.Per SwiftLint, initializing an optional variable with
nilis redundant.- var decisions: [KotlinInt: KotlinBoolean]? = nil + var decisions: [KotlinInt: KotlinBoolean]?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt(1 hunks)android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt(1 hunks)android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt(1 hunks)example/ios/exampleTests/Fake/FakeUsercentricsManager.swift(1 hunks)example/ios/exampleTests/RNUsercentricsModuleTests.swift(2 hunks)ios/Manager/UsercentricsManager.swift(2 hunks)ios/RNUsercentricsModule.mm(1 hunks)ios/RNUsercentricsModule.swift(1 hunks)ios/RNUsercentricsModuleSpec.h(1 hunks)sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift(1 hunks)sample/ios/sampleTests/RNUsercentricsModuleTests.swift(2 hunks)src/NativeUsercentrics.ts(2 hunks)src/Usercentrics.tsx(2 hunks)src/fabric/NativeUsercentricsModule.ts(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
- src/NativeUsercentrics.ts
- android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt
- sample/ios/sampleTests/RNUsercentricsModuleTests.swift
- src/Usercentrics.tsx
- android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt
🧰 Additional context used
🧬 Code graph analysis (3)
sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (5)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
denyAllForTCF(151-158)android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt (1)
denyAllForTCF(75-76)example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(138-143)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)ios/RNUsercentricsModule.swift (1)
denyAllForTCF(158-175)
ios/RNUsercentricsModule.swift (2)
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(138-143)ios/Manager/UsercentricsManager.swift (1)
denyAllForTCF(115-117)
ios/Manager/UsercentricsManager.swift (5)
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
denyAllForTCF(151-158)android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt (1)
denyAllForTCF(75-76)example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(138-143)ios/RNUsercentricsModule.swift (1)
denyAllForTCF(158-175)sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (1)
denyAllForTCF(139-144)
🪛 SwiftLint (0.57.0)
ios/RNUsercentricsModule.swift
[Warning] 163-163: Initializing an optional variable with nil is redundant
(redundant_optional_initialization)
[Warning] 162-162: Returning Void in a function declaration is redundant
(redundant_void_return)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test-ios
- GitHub Check: test-android
🔇 Additional comments (9)
example/ios/exampleTests/Fake/FakeUsercentricsManager.swift (1)
136-143: LGTM!The fake manager correctly adds the new
denyAllForTCFUnsavedPurposeLIDecisionsproperty and updates thedenyAllForTCFsignature to match the protocol. The implementation follows the existing pattern of storing parameters for test assertions.sample/ios/sampleTests/Fake/FakeUsercentricsManager.swift (1)
137-144: LGTM!Consistent with the example fake implementation. The property and method signature updates align with the protocol changes.
ios/RNUsercentricsModuleSpec.h (1)
75-79: LGTM!The protocol method signature correctly adds the
unsavedPurposeLIDecisionsparameter, aligning with the Swift implementation and the cross-platform API expansion.ios/Manager/UsercentricsManager.swift (2)
31-31: LGTM!Protocol method signature correctly updated with the new optional parameter.
115-117: LGTM!Implementation correctly forwards the
unsavedPurposeLIDecisionsparameter toUsercentricsCore.shared.denyAllForTCF.example/ios/exampleTests/RNUsercentricsModuleTests.swift (1)
344-352: LGTM!Second layer test also correctly updated with the new parameter.
android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt (1)
151-158: LGTM!The Android implementation correctly adds the
unsavedPurposeLIDecisionsparameter and uses thedeserializeTCFUserDecisionOnPurposeList()extension to convert theReadableArrayto the expected SDK type.ios/RNUsercentricsModule.mm (1)
72-76: LGTM!The Objective-C bridge method correctly exports the updated
denyAllForTCFsignature with the newunsavedPurposeLIDecisionsparameter.ios/RNUsercentricsModule.swift (1)
158-175: Implementation correctly parses the new parameter.The logic properly handles the conversion from
[NSDictionary]to[KotlinInt: KotlinBoolean]?, leavingdecisionsasnilwhen the input array is empty and silently skipping malformed entries.
cd49c7f to
b56da33
Compare
User description
PR Type
Other
Description
Bump version from 2.24.1 to 2.24.2
Update changelog with 2.24.2 release notes
Fix React Native issues in new release
Diagram Walkthrough
File Walkthrough
build.gradle.kts
Update Android build version to 2.24.2android/build.gradle.kts
usercentricsVersionfrom 2.24.1 to 2.24.2package.json
Update package version to 2.24.2package.json
versionfield from 2.24.1 to 2.24.2iosPackageVersionfield from 2.24.1 to 2.24.2CHANGELOG.md
Add 2.24.2 release notes to changelogCHANGELOG.md
CodeAnt-AI Description
Release 2.24.2: Fix React Native issues and update package versions
What Changed
Impact
✅ Fewer React Native integration issues✅ Correct package version on install✅ Clearer release notes for 2.24.2💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.
Summary by CodeRabbit
Bug Fixes
Chores
Documentation
Breaking Changes
✏️ Tip: You can customize this high-level summary in your review settings.