From 1b06d93f083f3f756d9f45b427c1efa38f93efbc Mon Sep 17 00:00:00 2001 From: Fathy Boundjadj Date: Fri, 12 Oct 2018 16:09:14 +0200 Subject: [PATCH] fix(android): fix missing context data Ref: LIB-647 --- packages/core/android/build.gradle | 5 ++- .../reactnative/core/RNAnalyticsModule.kt | 43 +++++++++++++++---- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/packages/core/android/build.gradle b/packages/core/android/build.gradle index addef930e..5130ca34b 100644 --- a/packages/core/android/build.gradle +++ b/packages/core/android/build.gradle @@ -30,11 +30,14 @@ repositories { name 'React Native (local)' } mavenCentral() + maven { url 'https://jitpack.io' } } dependencies { - api 'com.segment.analytics.android:analytics:4.+' + // api 'com.segment.analytics.android:analytics:4.+' + api 'com.github.segmentio:analytics-android:feat~add-options-context-SNAPSHOT' + api 'com.facebook.react:react-native:+' api 'org.jetbrains.kotlin:kotlin-stdlib:1.2.+' diff --git a/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt b/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt index 8e5658266..67e78f9a5 100644 --- a/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt +++ b/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt @@ -28,10 +28,7 @@ import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.ReadableMap -import com.segment.analytics.Analytics -import com.segment.analytics.Properties -import com.segment.analytics.Traits -import com.segment.analytics.ValueMap +import com.segment.analytics.* import java.util.concurrent.TimeUnit class RNAnalyticsModule(context: ReactApplicationContext): ReactContextBaseJavaModule(context) { @@ -77,23 +74,43 @@ class RNAnalyticsModule(context: ReactApplicationContext): ReactContextBaseJavaM @ReactMethod fun track(event: String, properties: ReadableMap, context: ReadableMap) = - analytics.track(event, Properties() from properties) + analytics.track( + event, + Properties() from properties, + Options() from context + ) @ReactMethod fun screen(name: String, properties: ReadableMap, context: ReadableMap) = - analytics.screen(name, Properties() from properties) + analytics.screen( + null, + name, + Properties() from properties, + Options() from context + ) @ReactMethod fun identify(userId: String, traits: ReadableMap, context: ReadableMap) = - analytics.identify(userId, Traits() from traits, null) + analytics.identify( + userId, + Traits() from traits, + Options() from context + ) @ReactMethod fun group(groupId: String, traits: ReadableMap, context: ReadableMap) = - analytics.group(groupId, Traits() from traits) + analytics.group( + groupId, + Traits() from traits, + Options() from context + ) @ReactMethod fun alias(newId: String, context: ReadableMap) = - analytics.alias(newId) + analytics.alias( + newId, + Options() from context + ) @ReactMethod fun reset() = @@ -112,6 +129,14 @@ class RNAnalyticsModule(context: ReactApplicationContext): ReactContextBaseJavaM analytics.optOut(true) } +private infix fun T.from(source: ReadableMap): T { + source.toHashMap().forEach {(key, value) -> + putContext(key, value) + } + + return this +} + private infix fun T.from(source: ReadableMap): T { putAll(source.toHashMap())