11package io .fullstack .firestack ;
22
33import java .util .Map ;
4+
5+ import android .app .Activity ;
46import android .util .Log ;
57import android .os .Bundle ;
6- import java .util .Iterator ;
7- import android .content .Context ;
88
99import com .facebook .react .bridge .Callback ;
1010import com .facebook .react .bridge .ReactMethod ;
1111import com .facebook .react .bridge .ReadableMap ;
12- import com .facebook .react .bridge .ReactContext ;
1312import com .facebook .react .bridge .ReactApplicationContext ;
1413import com .facebook .react .bridge .ReactContextBaseJavaModule ;
1514
@@ -19,13 +18,12 @@ class FirestackAnalyticsModule extends ReactContextBaseJavaModule {
1918
2019 private static final String TAG = "FirestackAnalytics" ;
2120
22- private Context context ;
21+ private ReactApplicationContext context ;
2322 private FirebaseAnalytics mFirebaseAnalytics ;
2423
2524 public FirestackAnalyticsModule (ReactApplicationContext reactContext ) {
2625 super (reactContext );
27- this .context = reactContext ;
28-
26+ context = reactContext ;
2927 Log .d (TAG , "New instance" );
3028 mFirebaseAnalytics = FirebaseAnalytics .getInstance (this .context );
3129 }
@@ -36,42 +34,56 @@ public String getName() {
3634 }
3735
3836 @ ReactMethod
39- public void logEventWithName (final String name , final ReadableMap props , final Callback callback ) {
40- // TODO
41- // FirestackUtils.todoNote(TAG, "logEventWithName", callback);
42- Map <String , Object > m = FirestackUtils .recursivelyDeconstructReadableMap (props );
43- final String eventName = getEventName (name );
37+ public void logEvent (final String name , final ReadableMap params ) {
38+ Map <String , Object > m = FirestackUtils .recursivelyDeconstructReadableMap (params );
4439 final Bundle bundle = makeEventBundle (name , m );
45- Log .d (TAG , "Logging event " + eventName );
40+ Log .d (TAG , "Logging event " + name );
4641 mFirebaseAnalytics .logEvent (name , bundle );
4742 }
4843
49- private String getEventName (final String name ) {
50- if (name == FirebaseAnalytics .Event .ADD_PAYMENT_INFO ) {return FirebaseAnalytics .Event .ADD_PAYMENT_INFO ; }
51- else if (name == FirebaseAnalytics .Event .ADD_TO_CART ) {return FirebaseAnalytics .Event .ADD_TO_CART ;}
52- else if (name == FirebaseAnalytics .Event .ADD_TO_WISHLIST ) {return FirebaseAnalytics .Event .ADD_TO_WISHLIST ;}
53- else if (name == FirebaseAnalytics .Event .APP_OPEN ) {return FirebaseAnalytics .Event .APP_OPEN ;}
54- else if (name == FirebaseAnalytics .Event .BEGIN_CHECKOUT ) {return FirebaseAnalytics .Event .BEGIN_CHECKOUT ;}
55- else if (name == FirebaseAnalytics .Event .ECOMMERCE_PURCHASE ) {return FirebaseAnalytics .Event .ECOMMERCE_PURCHASE ;}
56- else if (name == FirebaseAnalytics .Event .GENERATE_LEAD ) {return FirebaseAnalytics .Event .GENERATE_LEAD ;}
57- else if (name == FirebaseAnalytics .Event .JOIN_GROUP ) {return FirebaseAnalytics .Event .JOIN_GROUP ;}
58- else if (name == FirebaseAnalytics .Event .LEVEL_UP ) {return FirebaseAnalytics .Event .LEVEL_UP ;}
59- else if (name == FirebaseAnalytics .Event .LOGIN ) {return FirebaseAnalytics .Event .LOGIN ;}
60- else if (name == FirebaseAnalytics .Event .POST_SCORE ) {return FirebaseAnalytics .Event .POST_SCORE ;}
61- else if (name == FirebaseAnalytics .Event .PRESENT_OFFER ) {return FirebaseAnalytics .Event .PRESENT_OFFER ;}
62- else if (name == FirebaseAnalytics .Event .PURCHASE_REFUND ) {return FirebaseAnalytics .Event .PURCHASE_REFUND ;}
63- else if (name == FirebaseAnalytics .Event .SEARCH ) {return FirebaseAnalytics .Event .SEARCH ;}
64- else if (name == FirebaseAnalytics .Event .SELECT_CONTENT ) {return FirebaseAnalytics .Event .SELECT_CONTENT ;}
65- else if (name == FirebaseAnalytics .Event .SHARE ) {return FirebaseAnalytics .Event .SHARE ;}
66- else if (name == FirebaseAnalytics .Event .SIGN_UP ) {return FirebaseAnalytics .Event .SIGN_UP ;}
67- else if (name == FirebaseAnalytics .Event .SPEND_VIRTUAL_CURRENCY ) {return FirebaseAnalytics .Event .SPEND_VIRTUAL_CURRENCY ;}
68- else if (name == FirebaseAnalytics .Event .TUTORIAL_BEGIN ) {return FirebaseAnalytics .Event .TUTORIAL_BEGIN ;}
69- else if (name == FirebaseAnalytics .Event .TUTORIAL_COMPLETE ) {return FirebaseAnalytics .Event .TUTORIAL_COMPLETE ;}
70- else if (name == FirebaseAnalytics .Event .UNLOCK_ACHIEVEMENT ) {return FirebaseAnalytics .Event .UNLOCK_ACHIEVEMENT ;}
71- else if (name == FirebaseAnalytics .Event .VIEW_ITEM ) {return FirebaseAnalytics .Event .VIEW_ITEM ;}
72- else if (name == FirebaseAnalytics .Event .VIEW_ITEM_LIST ) {return FirebaseAnalytics .Event .VIEW_ITEM_LIST ;}
73- else if (name == FirebaseAnalytics .Event .VIEW_SEARCH_RESULTS ) {return FirebaseAnalytics .Event .VIEW_SEARCH_RESULTS ;}
74- else return name ;
44+ /**
45+ *
46+ * @param enabled
47+ */
48+ @ ReactMethod
49+ public void setAnalyticsCollectionEnabled (final Boolean enabled ) {
50+ mFirebaseAnalytics .setAnalyticsCollectionEnabled (enabled );
51+ }
52+
53+ @ ReactMethod
54+ public void setCurrentScreen (final String screenName , final String screenClassOverride ) {
55+ final Activity activity = getCurrentActivity ();
56+ if (activity != null ) {
57+ Log .d (TAG , "setCurrentScreen " + screenName + " " + screenClassOverride );
58+ activity .runOnUiThread (new Runnable () {
59+ @ Override
60+ public void run () {
61+ mFirebaseAnalytics .setCurrentScreen (activity , screenName , screenClassOverride );
62+ }
63+ });
64+
65+ }
66+ }
67+
68+
69+ @ ReactMethod
70+ public void setMinimumSessionDuration (final double milliseconds ) {
71+ mFirebaseAnalytics .setMinimumSessionDuration ((long ) milliseconds );
72+ }
73+
74+ @ ReactMethod
75+ public void setSessionTimeoutDuration (final double milliseconds ) {
76+ mFirebaseAnalytics .setSessionTimeoutDuration ((long ) milliseconds );
77+ }
78+
79+ @ ReactMethod
80+ public void setUserId (final String id ) {
81+ mFirebaseAnalytics .setUserId (id );
82+ }
83+
84+ @ ReactMethod
85+ public void setUserProperty (final String name , final String value ) {
86+ mFirebaseAnalytics .setUserProperty (name , value );
7587 }
7688
7789 private Bundle makeEventBundle (final String name , final Map <String , Object > map ) {
@@ -207,6 +219,7 @@ private Bundle makeEventBundle(final String name, final Map<String, Object> map)
207219 bundle .putString (entry .getKey (), entry .getValue ().toString ());
208220 }
209221 }
222+
210223 return bundle ;
211224 }
212225}
0 commit comments