From a69f9d494b1798b7dea86997dffb2bf29b4eb551 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Thu, 24 Jul 2025 17:13:35 +0200 Subject: [PATCH 1/4] Add programatic `rejectAll` and the button for example app --- .../reactnativecmp/RNSourcepointCmpTypes.kt | 12 ++++++++++++ .../reactnativecmp/ReactNativeCmpModule.kt | 6 ++++++ example/src/App.tsx | 10 ++++++++++ ios/RNSourcepointCmp.swift | 4 ++++ ios/ReactNativeCmp.mm | 4 ++++ src/NativeReactNativeCmp.ts | 10 ++++++++++ src/index.tsx | 5 +++++ 7 files changed, 51 insertions(+) diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt index b0cf086..617b064 100644 --- a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt +++ b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt @@ -6,6 +6,8 @@ import com.sourcepoint.cmplibrary.model.CampaignsEnv.* import com.sourcepoint.cmplibrary.model.exposed.ActionType import com.sourcepoint.cmplibrary.model.exposed.ActionType.* import com.sourcepoint.cmplibrary.model.exposed.TargetingParam +import com.sourcepoint.cmplibrary.data.network.util.CampaignType +import com.sourcepoint.cmplibrary.data.network.util.CampaignType.* fun campaignsEnvFrom(rawValue: String?): CampaignsEnv? = when (rawValue) { @@ -14,6 +16,16 @@ fun campaignsEnvFrom(rawValue: String?): CampaignsEnv? = else -> { null } } +fun campaignTypeFrom(rawValue: String?): CampaignType = + when (rawValue) { + "GDPR" -> GDPR + "CCPA" -> CCPA + "usnat" -> USNAT + "ios14" -> GLOBALCMP + "preferences" -> PREFERENCES + else -> { CampaignType.UNKNOWN } +} + data class SPCampaign( val rawTargetingParam: ReadableMap?, val supportLegacyUSPString: Boolean, diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/ReactNativeCmpModule.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/ReactNativeCmpModule.kt index 97bd4a7..b0e1023 100644 --- a/android/src/main/java/com/sourcepoint/reactnativecmp/ReactNativeCmpModule.kt +++ b/android/src/main/java/com/sourcepoint/reactnativecmp/ReactNativeCmpModule.kt @@ -159,6 +159,12 @@ class ReactNativeCmpModule(reactContext: ReactApplicationContext) : NativeReactN } } + override fun rejectAll(campaignType: String) { + runOnMainThread { + spConsentLib?.rejectAll(campaignTypeFrom(campaignType)) + } + } + companion object { const val NAME = "ReactNativeCmp" } diff --git a/example/src/App.tsx b/example/src/App.tsx index 84c6b5f..e3fc94e 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -114,6 +114,11 @@ export default function App() { consentManager.current?.loadGDPRPrivacyManager(config.gdprPMId); }, []); + const onRejectAllGDPRPMPress = useCallback(() => { + setSDKStatus(SDKStatus.Networking); + consentManager.current?.rejectAll(SPCampaignType.Gdpr); + }, []); + const onUSNATPMPress = useCallback(() => { setSDKStatus(SDKStatus.Networking); consentManager.current?.loadUSNatPrivacyManager(config.usnatPMId); @@ -194,6 +199,11 @@ export default function App() { onPress={onGDPRPMPress} disabled={disable || config.campaigns.gdpr === undefined} /> +