@@ -28,10 +28,7 @@ import com.facebook.react.bridge.ReactApplicationContext
28
28
import com.facebook.react.bridge.ReactContextBaseJavaModule
29
29
import com.facebook.react.bridge.ReactMethod
30
30
import com.facebook.react.bridge.ReadableMap
31
- import com.segment.analytics.Analytics
32
- import com.segment.analytics.Properties
33
- import com.segment.analytics.Traits
34
- import com.segment.analytics.ValueMap
31
+ import com.segment.analytics.*
35
32
import java.util.concurrent.TimeUnit
36
33
37
34
class RNAnalyticsModule (context : ReactApplicationContext ): ReactContextBaseJavaModule(context) {
@@ -77,23 +74,43 @@ class RNAnalyticsModule(context: ReactApplicationContext): ReactContextBaseJavaM
77
74
78
75
@ReactMethod
79
76
fun track (event : String , properties : ReadableMap , context : ReadableMap ) =
80
- analytics.track(event, Properties () from properties)
77
+ analytics.track(
78
+ event,
79
+ Properties () from properties,
80
+ Options () from context
81
+ )
81
82
82
83
@ReactMethod
83
84
fun screen (name : String , properties : ReadableMap , context : ReadableMap ) =
84
- analytics.screen(name, Properties () from properties)
85
+ analytics.screen(
86
+ null ,
87
+ name,
88
+ Properties () from properties,
89
+ Options () from context
90
+ )
85
91
86
92
@ReactMethod
87
93
fun identify (userId : String , traits : ReadableMap , context : ReadableMap ) =
88
- analytics.identify(userId, Traits () from traits, null )
94
+ analytics.identify(
95
+ userId,
96
+ Traits () from traits,
97
+ Options () from context
98
+ )
89
99
90
100
@ReactMethod
91
101
fun group (groupId : String , traits : ReadableMap , context : ReadableMap ) =
92
- analytics.group(groupId, Traits () from traits)
102
+ analytics.group(
103
+ groupId,
104
+ Traits () from traits,
105
+ Options () from context
106
+ )
93
107
94
108
@ReactMethod
95
109
fun alias (newId : String , context : ReadableMap ) =
96
- analytics.alias(newId)
110
+ analytics.alias(
111
+ newId,
112
+ Options () from context
113
+ )
97
114
98
115
@ReactMethod
99
116
fun reset () =
@@ -112,6 +129,14 @@ class RNAnalyticsModule(context: ReactApplicationContext): ReactContextBaseJavaM
112
129
analytics.optOut(true )
113
130
}
114
131
132
+ private infix fun <T : Options > T.from (source : ReadableMap ): T {
133
+ source.toHashMap().forEach {(key, value) ->
134
+ putContext(key, value)
135
+ }
136
+
137
+ return this
138
+ }
139
+
115
140
private infix fun <T : ValueMap > T.from (source : ReadableMap ): T {
116
141
putAll(source.toHashMap())
117
142
0 commit comments