From afe44ba4acf46638e5a8e5955019d6a60291e737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 12:12:11 +0100 Subject: [PATCH 1/9] Workspaces --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 394ec57..2c3b4ab 100644 --- a/package.json +++ b/package.json @@ -95,9 +95,6 @@ "react": "*", "react-native": "*" }, - "workspaces": [ - "example" - ], "packageManager": "yarn@3.6.1", "jest": { "preset": "react-native", From 2134588272c1495eb572226f787fd2dd16d4ca6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 13:34:01 +0100 Subject: [PATCH 2/9] Add messageLanguage --- .../sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt | 7 ++++++- src/index.ts | 5 +++-- src/types.ts | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt index 4d372d9..ed72bbc 100644 --- a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt +++ b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt @@ -38,7 +38,7 @@ class RNSourcepointCmpModule internal constructor(context: ReactApplicationConte override fun getName() = NAME @ReactMethod - override fun build(accountId: Int, propertyId: Int, propertyName: String, campaigns: ReadableMap) { + override fun build(accountId: Int, propertyId: Int, propertyName: String, campaigns: ReadableMap, messageLanguage: String) { val convertedCampaigns = campaigns.SPCampaigns() val config = SpConfigDataBuilder().apply { @@ -46,6 +46,11 @@ class RNSourcepointCmpModule internal constructor(context: ReactApplicationConte addPropertyName(propertyName) addPropertyId(propertyId) addMessageTimeout(30000) + + if (messageLanguage.isNotBlank()) { + addMessageLanguage(messageLanguage) + } + convertedCampaigns.gdpr?.let { addCampaign(campaignType = CampaignType.GDPR, params = it.targetingParams, groupPmId = null) } diff --git a/src/index.ts b/src/index.ts index 0a9af95..2fb5f50 100644 --- a/src/index.ts +++ b/src/index.ts @@ -42,9 +42,10 @@ export class SPConsentManager implements Spec { accountId: number, propertyId: number, propertyName: string, - campaigns: SPCampaigns + campaigns: SPCampaigns, + messageLanguage?: string ) { - RNSourcepointCmp.build(accountId, propertyId, propertyName, campaigns); + RNSourcepointCmp.build(accountId, propertyId, propertyName, campaigns, messageLanguage); } getUserData(): Promise { diff --git a/src/types.ts b/src/types.ts index 26ac3d8..e123e6e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -105,7 +105,8 @@ export interface Spec extends TurboModule { accountId: number, propertyId: number, propertyName: string, - campaigns: SPCampaigns + campaigns: SPCampaigns, + messageLanguage?: string ): void; getUserData(): Promise; loadMessage(params?: LoadMessageParams): void; From c25b857ca7da8254159ddc951cc25d0027b05977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 14:26:22 +0100 Subject: [PATCH 3/9] Add messageLanguage --- android/src/oldarch/RNSourcepointCmpSpec.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/oldarch/RNSourcepointCmpSpec.kt b/android/src/oldarch/RNSourcepointCmpSpec.kt index d908f7e..678de43 100644 --- a/android/src/oldarch/RNSourcepointCmpSpec.kt +++ b/android/src/oldarch/RNSourcepointCmpSpec.kt @@ -8,7 +8,7 @@ import com.facebook.react.bridge.ReadableMap abstract class RNSourcepointCmpSpec internal constructor(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) { - abstract fun build(accountId: Int, propertyId: Int, propertyName: String, campaigns: ReadableMap) + abstract fun build(accountId: Int, propertyId: Int, propertyName: String, campaigns: ReadableMap, messageLanguage: String) abstract fun loadMessage(params: ReadableMap?) abstract fun clearLocalData() abstract fun getUserData(promise: Promise) From 3575bf9fff5e95f3de24e1e12eca0d6d28976380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 14:28:37 +0100 Subject: [PATCH 4/9] Add messageLanguage --- .../com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt index ed72bbc..a549386 100644 --- a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt +++ b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt @@ -48,7 +48,7 @@ class RNSourcepointCmpModule internal constructor(context: ReactApplicationConte addMessageTimeout(30000) if (messageLanguage.isNotBlank()) { - addMessageLanguage(messageLanguage) + addMessageLanguage(MessageLanguage.SPANISH) } convertedCampaigns.gdpr?.let { From 8500518fe6c7d4df84c664ee2af288429d5ef186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 14:31:46 +0100 Subject: [PATCH 5/9] Add messageLanguage --- .../com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt index a549386..94eec8f 100644 --- a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt +++ b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt @@ -20,6 +20,7 @@ import com.sourcepoint.cmplibrary.model.ConsentAction import com.sourcepoint.cmplibrary.model.exposed.SPConsents import com.sourcepoint.cmplibrary.util.clearAllData import com.sourcepoint.cmplibrary.util.userConsents +import com.sourcepoint.cmplibrary.model.MessageLanguage import com.sourcepoint.reactnativecmp.consents.RNSPUserData import org.json.JSONObject From ad9e3340a23828a03d7752809453f64b1cdb2683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 18:02:40 +0100 Subject: [PATCH 6/9] Add messageLanguage --- .../reactnativecmp/RNSourcepointCmpModule.kt | 6 ++- src/index.ts | 6 ++- src/types.ts | 43 ++++++++++++++++++- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt index 94eec8f..356b8d6 100644 --- a/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt +++ b/android/src/main/java/com/sourcepoint/reactnativecmp/RNSourcepointCmpModule.kt @@ -49,7 +49,7 @@ class RNSourcepointCmpModule internal constructor(context: ReactApplicationConte addMessageTimeout(30000) if (messageLanguage.isNotBlank()) { - addMessageLanguage(MessageLanguage.SPANISH) + addMessageLanguage(getMessageLanguage(messageLanguage)) } convertedCampaigns.gdpr?.let { @@ -72,6 +72,10 @@ class RNSourcepointCmpModule internal constructor(context: ReactApplicationConte } } + private fun getMessageLanguage(languageCode: String?): MessageLanguage { + return MessageLanguage.values().firstOrNull { it.value == languageCode } ?: MessageLanguage.ENGLISH + } + private fun runOnMainThread(runnable: () -> Unit) { reactApplicationContext.runOnUiQueueThread(runnable) } diff --git a/src/index.ts b/src/index.ts index 2fb5f50..4b09c52 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,8 @@ import type { SPActionType, } from './types'; +import { Language } from './types'; + const LINKING_ERROR = `The package '@sourcepoint/react-native-cmp' doesn't seem to be linked. Make sure: \n\n` + Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) + @@ -43,9 +45,9 @@ export class SPConsentManager implements Spec { propertyId: number, propertyName: string, campaigns: SPCampaigns, - messageLanguage?: string + messageLanguage?: Language ) { - RNSourcepointCmp.build(accountId, propertyId, propertyName, campaigns, messageLanguage); + RNSourcepointCmp.build(accountId, propertyId, propertyName, campaigns, messageLanguage || ''); } getUserData(): Promise { diff --git a/src/types.ts b/src/types.ts index e123e6e..7c3684a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,46 @@ import type { TurboModule } from 'react-native'; +export enum Language { + BULGARIAN = "BG", + CATALAN = "CA", + CHINESE = "ZH", + CROATIAN = "HR", + CZECH = "CS", + DANISH = "DA", + DUTCH = "NL", + ENGLISH = "EN", + ESTONIAN = "ET", + FINNISH = "FI", + FRENCH = "FR", + GAELIC = "GD", + GERMAN = "DE", + GREEK = "EL", + HEBREW = "HE", + HUNGARIAN = "HU", + ICELANDIC = "IS", + INDONESIAN = "ID", + ITALIAN = "IT", + JAPANESE = "JA", + KOREAN = "KO", + LATVIAN = "LV", + LITHUANIAN = "LT", + MACEDONIAN = "MK", + MALAY = "MS", + NORWEGIAN = "NO", + POLISH = "PL", + PORTUGUESE = "PT", + ROMANIAN = "RO", + RUSSIAN = "RU", + SERBIAN_CYRILLIC = "SR-CYRL", + SERBIAN_LATIN = "SR-LATN", + SLOVAKIAN = "SK", + SLOVENIAN = "SL", + SPANISH = "ES", + SWEDISH = "SV", + TAGALOG = "TL", + TURKISH = "TR" +}; + export type SPCampaign = { targetingParams?: Object; supportLegacyUSPString?: boolean; @@ -106,7 +147,7 @@ export interface Spec extends TurboModule { propertyId: number, propertyName: string, campaigns: SPCampaigns, - messageLanguage?: string + messageLanguage?: Language ): void; getUserData(): Promise; loadMessage(params?: LoadMessageParams): void; From 601de08101a0f6deb218cbd8a674635f3fc923cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 18:19:10 +0100 Subject: [PATCH 7/9] Add messageLanguage --- ios/RNSourcepointCmp.h | 2 +- ios/RNSourcepointCmp.swift | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ios/RNSourcepointCmp.h b/ios/RNSourcepointCmp.h index 2613651..7b49fc7 100644 --- a/ios/RNSourcepointCmp.h +++ b/ios/RNSourcepointCmp.h @@ -9,7 +9,7 @@ @interface RCT_EXTERN_MODULE(RNSourcepointCmp, RCTEventEmitter) -RCT_EXTERN_METHOD(build:(int)accountId propertyId:(int)propertyId propertyName:(NSString *)propertyName campaigns:(SPCampaigns*)campaigns) +RCT_EXTERN_METHOD(build:(int)accountId propertyId:(int)propertyId propertyName:(NSString *)propertyName campaigns:(SPCampaigns*)campaigns messageLanguage:(NSString *)messageLanguage) RCT_EXTERN_METHOD(loadMessage: (SPLoadMessageParams *)params) RCT_EXTERN_METHOD(clearLocalData) diff --git a/ios/RNSourcepointCmp.swift b/ios/RNSourcepointCmp.swift index 9029bca..f57ab15 100644 --- a/ios/RNSourcepointCmp.swift +++ b/ios/RNSourcepointCmp.swift @@ -28,7 +28,7 @@ import React resolve(RNSPUserData(from: consentManager?.userData).toDictionary()) } - func build(_ accountId: Int, propertyId: Int, propertyName: String, campaigns: SPCampaigns) { + func build(_ accountId: Int, propertyId: Int, propertyName: String, campaigns: SPCampaigns, messageLanguage: String) { let manager = SPConsentManager( accountId: accountId, propertyId: propertyId, @@ -36,6 +36,11 @@ import React campaigns: campaigns, delegate: self ) + + if !messageLanguage.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { + manager.messageLanguage = messageLanguage + } + manager.messageTimeoutInSeconds = 30 RNSourcepointCmp.shared?.consentManager = manager } From 4b686ba53effd5054f003457aaa936d4816ae19c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 18:38:29 +0100 Subject: [PATCH 8/9] Add messageLanguage --- ios/RNSourcepointCmp.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RNSourcepointCmp.swift b/ios/RNSourcepointCmp.swift index f57ab15..2faad79 100644 --- a/ios/RNSourcepointCmp.swift +++ b/ios/RNSourcepointCmp.swift @@ -38,7 +38,7 @@ import React ) if !messageLanguage.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { - manager.messageLanguage = messageLanguage + manager.messageLanguage = SPMessageLanguage(rawValue: messageLanguage) } manager.messageTimeoutInSeconds = 30 From 6eef70ef6f5be631f8f9f64d4f104553f500a61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mari=CC=81n?= Date: Tue, 4 Feb 2025 18:53:27 +0100 Subject: [PATCH 9/9] Add messageLanguage --- ios/RNSourcepointCmp.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RNSourcepointCmp.swift b/ios/RNSourcepointCmp.swift index 2faad79..234fde2 100644 --- a/ios/RNSourcepointCmp.swift +++ b/ios/RNSourcepointCmp.swift @@ -38,7 +38,7 @@ import React ) if !messageLanguage.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { - manager.messageLanguage = SPMessageLanguage(rawValue: messageLanguage) + manager.messageLanguage = SPMessageLanguage(rawValue: messageLanguage) ?? SPMessageLanguage.English } manager.messageTimeoutInSeconds = 30