diff --git a/android/src/main/java/com/smore/RNSegmentIOAnalytics/RNSegmentIOAnalyticsModule.java b/android/src/main/java/com/smore/RNSegmentIOAnalytics/RNSegmentIOAnalyticsModule.java index fd39148..378d6c8 100644 --- a/android/src/main/java/com/smore/RNSegmentIOAnalytics/RNSegmentIOAnalyticsModule.java +++ b/android/src/main/java/com/smore/RNSegmentIOAnalytics/RNSegmentIOAnalyticsModule.java @@ -86,6 +86,17 @@ public void screen(String screenName, ReadableMap properties) { mAnalytics.screen(null, screenName, toProperties(properties)); } + /* + https://segment.com/docs/libraries/android/#group + */ + @ReactMethod + public void group(String groupId, ReadableMap traits) { + if (!mEnabled) { + return; + } + mAnalytics.group(groupId, toTraits(traits)); + } + /* https://segment.com/docs/libraries/android/#flushing */ @@ -144,13 +155,13 @@ private Properties toProperties (ReadableMap map) { ReadableType type = map.getType(key); switch (type){ case Array: - props.putValue(key, map.getArray(key)); + props.putValue(key, map.getArray(key).toArrayList()); break; case Boolean: props.putValue(key, map.getBoolean(key)); break; case Map: - props.putValue(key, map.getMap(key)); + props.putValue(key, map.getMap(key).toHashMap()); break; case Null: props.putValue(key, null); @@ -181,13 +192,13 @@ private Traits toTraits (ReadableMap map) { ReadableType type = map.getType(key); switch (type){ case Array: - traits.putValue(key, map.getArray(key)); + traits.putValue(key, map.getArray(key).toArrayList()); break; case Boolean: traits.putValue(key, map.getBoolean(key)); break; case Map: - traits.putValue(key, map.getMap(key)); + traits.putValue(key, map.getMap(key).toHashMap()); break; case Null: traits.putValue(key, null); diff --git a/index.js b/index.js index 5ba6e5d..5476820 100644 --- a/index.js +++ b/index.js @@ -53,6 +53,14 @@ export default { NativeRNSegmentIOAnalytics.screen(screenName, properties || {}) }, + /* + * https://segment.com/docs/libraries/ios/#group + * https://segment.com/docs/libraries/android/#group + */ + group: function (groupId: string, traits: ?Object) { + NativeRNSegmentIOAnalytics.group(groupId, traits || {}) + }, + /* * https://segment.com/docs/libraries/ios/#reset * https://segment.com/docs/libraries/android/#how-do-you-handle-unique-identifiers- diff --git a/ios/RNAnalytics/RNSegmentIOAnalytics.m b/ios/RNAnalytics/RNSegmentIOAnalytics.m index eb8d668..13e4932 100644 --- a/ios/RNAnalytics/RNSegmentIOAnalytics.m +++ b/ios/RNAnalytics/RNSegmentIOAnalytics.m @@ -42,6 +42,13 @@ @implementation RNSegmentIOAnalytics [[SEGAnalytics sharedAnalytics] screen:screenName properties:properties]; } +/* + https://segment.com/docs/libraries/ios/#group + */ +RCT_EXPORT_METHOD(group:(NSString*)groupId traits:(NSDictionary *)traits) { + [[SEGAnalytics sharedAnalytics] group:groupId traits:traits]; +} + /* https://segment.com/docs/libraries/ios/#flushing */