diff --git a/.yarn/patches/@sourcepoint-react-native-cmp-patch-34fca36663.patch b/.yarn/patches/@sourcepoint-react-native-cmp-patch-34fca36663.patch new file mode 100644 index 0000000..28b1936 --- /dev/null +++ b/.yarn/patches/@sourcepoint-react-native-cmp-patch-34fca36663.patch @@ -0,0 +1,13 @@ +diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt +index bb8c6c37adc3d7980c7e92268b98b9d97ef8de40..3d67b3a3f44743c4542a1966e66e1af3ea93c555 100644 +--- a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt ++++ b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpTypes.kt +@@ -16,7 +16,7 @@ data class SPCampaign( + val rawTargetingParam: ReadableMap?, + val supportLegacyUSPString: Boolean + ) { +- val targetingParams = rawTargetingParam?.toHashMap()?.map { TargetingParam(it.key, it.toString()) } ?: emptyList() ++ val targetingParams = rawTargetingParam?.toHashMap()?.map { TargetingParam(it.key, it.value.toString()) } ?: emptyList() + } + + data class SPCampaigns( diff --git a/package.json b/package.json index 06acacc..19ebb73 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ }, "resolutions": { "@types/react": "^18.2.44", - "@sourcepoint/react-native-cmp@^0.3.0": "patch:@sourcepoint/react-native-cmp@npm%3A0.3.0#./.yarn/patches/@sourcepoint-react-native-cmp-npm-0.3.0-2434c31dc9.patch" + "@sourcepoint/react-native-cmp@^0.3.0": "patch:@sourcepoint/react-native-cmp@patch%3A@sourcepoint/react-native-cmp@npm%253A0.3.0%23./.yarn/patches/@sourcepoint-react-native-cmp-npm-0.3.0-2434c31dc9.patch%3A%3Aversion=0.3.0&hash=664e70&locator=react-native-contentpass%2540workspace%253A.#./.yarn/patches/@sourcepoint-react-native-cmp-patch-34fca36663.patch" }, "peerDependencies": { "react": "*", diff --git a/sharedExample/src/ContentpassUsage.tsx b/sharedExample/src/ContentpassUsage.tsx index 5faaaaf..58aa930 100644 --- a/sharedExample/src/ContentpassUsage.tsx +++ b/sharedExample/src/ContentpassUsage.tsx @@ -1,7 +1,7 @@ import { useContentpassSdk } from './ContentpassContext'; import { Button, ScrollView, StyleSheet, Text, View } from 'react-native'; -import { useCallback, useEffect, useRef, useState } from 'react'; -import type { AuthenticateResult } from 'react-native-contentpass'; +import { useEffect, useRef, useState } from 'react'; +import type { ContentpassState } from 'react-native-contentpass'; import { SPConsentManager, type SPUserData, @@ -13,6 +13,11 @@ const styles = StyleSheet.create({ height: 400, flexGrow: 0, }, + buttonsContainer: { + display: 'flex', + gap: 4, + marginTop: 10, + }, logsView: { marginTop: 10, }, @@ -40,21 +45,13 @@ const setupSourcepoint = (hasValidSubscription: boolean) => { }; export default function ContentpassUsage() { - const [authResult, setAuthResult] = useState< - AuthenticateResult | undefined - >(); + const [authResult, setAuthResult] = useState(); const contentpassSdk = useContentpassSdk(); const spConsentManager = useRef(); const [sourcepointUserData, setSourcepointUserData] = useState< SPUserData | undefined >(); - const authenticate = useCallback(async () => { - spConsentManager.current?.dispose(); - const result = await contentpassSdk.authenticate(); - setAuthResult(result); - }, [contentpassSdk]); - useEffect(() => { spConsentManager.current = setupSourcepoint( authResult?.hasValidSubscription ?? false @@ -66,7 +63,7 @@ export default function ContentpassUsage() { spConsentManager.current?.onAction((action) => { if (action.customActionId === "cp('login')") { - authenticate(); + contentpassSdk.authenticate(); } }); @@ -75,7 +72,18 @@ export default function ContentpassUsage() { return () => { spConsentManager.current?.dispose(); }; - }, [authResult, authenticate]); + }, [authResult, contentpassSdk]); + + useEffect(() => { + const onContentpassStateChange = (state: ContentpassState) => { + setAuthResult(state); + }; + contentpassSdk.registerObserver(onContentpassStateChange); + + return () => { + contentpassSdk.unregisterObserver(onContentpassStateChange); + }; + }, [contentpassSdk]); const clearSourcepointData = () => { spConsentManager.current?.clearLocalData(); @@ -85,7 +93,13 @@ export default function ContentpassUsage() { return ( <> -