Skip to content

Commit 3694be7

Browse files
Merge remote-tracking branch 'Salakar/master'
2 parents 1882af7 + 50b709f commit 3694be7

33 files changed

+1603
-1445
lines changed

android/src/main/java/io/fullstack/firestack/FirestackDatabase.java

Lines changed: 0 additions & 620 deletions
This file was deleted.

android/src/main/java/io/fullstack/firestack/FirestackInstanceIdService.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package io.fullstack.firestack;
22

3-
/**
4-
* Created by nori on 2016/09/12.
5-
*/
6-
import android.content.Intent;
7-
import android.os.Bundle;
83
import android.util.Log;
4+
import android.os.Bundle;
5+
import android.content.Intent;
96

107
import com.google.firebase.iid.FirebaseInstanceId;
118
import com.google.firebase.iid.FirebaseInstanceIdService;
129

10+
import io.fullstack.firestack.messaging.FirestackMessaging;
11+
1312
public class FirestackInstanceIdService extends FirebaseInstanceIdService {
1413

1514
private static final String TAG = "FSInstanceIdService";
@@ -21,10 +20,7 @@ public class FirestackInstanceIdService extends FirebaseInstanceIdService {
2120
public void onTokenRefresh() {
2221
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
2322
Log.d(TAG, "Refreshed token: " + refreshedToken);
24-
25-
26-
// send Intent
27-
Intent i = new Intent(FirestackCloudMessaging.INTENT_NAME_TOKEN);
23+
Intent i = new Intent(FirestackMessaging.INTENT_NAME_TOKEN);
2824
Bundle bundle = new Bundle();
2925
bundle.putString("token", refreshedToken);
3026
i.putExtras(bundle);

android/src/main/java/io/fullstack/firestack/FirestackMessagingService.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.google.firebase.messaging.RemoteMessage;
88
import com.google.firebase.messaging.SendException;
99

10+
import io.fullstack.firestack.messaging.FirestackMessaging;
11+
1012
public class FirestackMessagingService extends FirebaseMessagingService {
1113

1214
private static final String TAG = "FSMessagingService";
@@ -25,7 +27,7 @@ public void onMessageReceived(RemoteMessage remoteMessage) {
2527
if (remoteMessage.getNotification() != null) {
2628

2729
}
28-
Intent i = new Intent(FirestackCloudMessaging.INTENT_NAME_NOTIFICATION);
30+
Intent i = new Intent(FirestackMessaging.INTENT_NAME_NOTIFICATION);
2931
i.putExtra("data", remoteMessage);
3032
sendOrderedBroadcast(i, null);
3133

@@ -35,7 +37,7 @@ public void onMessageReceived(RemoteMessage remoteMessage) {
3537
public void onMessageSent(String msgId) {
3638
// Called when an upstream message has been successfully sent to the GCM connection server.
3739
Log.d(TAG, "upstream message has been successfully sent");
38-
Intent i = new Intent(FirestackCloudMessaging.INTENT_NAME_SEND);
40+
Intent i = new Intent(FirestackMessaging.INTENT_NAME_SEND);
3941
i.putExtra("msgId", msgId);
4042
sendOrderedBroadcast(i, null);
4143
}
@@ -44,7 +46,7 @@ public void onMessageSent(String msgId) {
4446
public void onSendError(String msgId, Exception exception) {
4547
// Called when there was an error sending an upstream message.
4648
Log.d(TAG, "error sending an upstream message");
47-
Intent i = new Intent(FirestackCloudMessaging.INTENT_NAME_SEND);
49+
Intent i = new Intent(FirestackMessaging.INTENT_NAME_SEND);
4850
i.putExtra("msgId", msgId);
4951
i.putExtra("hasError", true);
5052
SendException sendException = (SendException) exception;

android/src/main/java/io/fullstack/firestack/FirestackModule.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.fullstack.firestack;
22

3+
import java.util.HashMap;
34
import java.util.Map;
45

56
import android.util.Log;
@@ -16,6 +17,9 @@
1617
import com.facebook.react.bridge.ReadableMap;
1718
import com.facebook.react.bridge.ReactContext;
1819

20+
import com.google.android.gms.common.ConnectionResult;
21+
import com.google.android.gms.common.GoogleApiAvailability;
22+
1923
import com.google.firebase.FirebaseApp;
2024
import com.google.firebase.FirebaseOptions;
2125
import com.google.firebase.database.ServerValue;
@@ -25,7 +29,7 @@ interface KeySetterFn {
2529
}
2630

2731
@SuppressWarnings("WeakerAccess")
28-
class FirestackModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
32+
public class FirestackModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
2933
private static final String TAG = "Firestack";
3034
private Context context;
3135
private ReactContext mReactContext;
@@ -44,6 +48,21 @@ public String getName() {
4448
return TAG;
4549
}
4650

51+
private WritableMap getPlayServicesStatus() {
52+
GoogleApiAvailability gapi = GoogleApiAvailability.getInstance();
53+
final int status = gapi.isGooglePlayServicesAvailable(getReactApplicationContext());
54+
WritableMap result = Arguments.createMap();
55+
result.putInt("status", status);
56+
if (status == ConnectionResult.SUCCESS) {
57+
result.putBoolean("isAvailable", true);
58+
} else {
59+
result.putBoolean("isAvailable", false);
60+
result.putBoolean("isUserResolvableError", gapi.isUserResolvableError(status));
61+
result.putString("error", gapi.getErrorString(status));
62+
}
63+
return result;
64+
}
65+
4766
@ReactMethod
4867
public void configureWithOptions(final ReadableMap params, @Nullable final Callback onComplete) {
4968
Log.i(TAG, "configureWithOptions");
@@ -169,18 +188,25 @@ public void serverValue(@Nullable final Callback onComplete) {
169188
public void onHostResume() {
170189
WritableMap params = Arguments.createMap();
171190
params.putBoolean("isForground", true);
172-
FirestackUtils.sendEvent(mReactContext, "FirestackAppState", params);
191+
Utils.sendEvent(mReactContext, "FirestackAppState", params);
173192
}
174193

175194
@Override
176195
public void onHostPause() {
177196
WritableMap params = Arguments.createMap();
178197
params.putBoolean("isForground", false);
179-
FirestackUtils.sendEvent(mReactContext, "FirestackAppState", params);
198+
Utils.sendEvent(mReactContext, "FirestackAppState", params);
180199
}
181200

182201
@Override
183202
public void onHostDestroy() {
184203

185204
}
205+
206+
@Override
207+
public Map<String, Object> getConstants() {
208+
final Map<String, Object> constants = new HashMap<>();
209+
constants.put("googleApiAvailability", getPlayServicesStatus());
210+
return constants;
211+
}
186212
}

android/src/main/java/io/fullstack/firestack/FirestackPackage.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,19 @@
66
import com.facebook.react.bridge.JavaScriptModule;
77
import com.facebook.react.bridge.NativeModule;
88
import com.facebook.react.bridge.ReactApplicationContext;
9+
import com.facebook.react.uimanager.UIManagerModule;
910
import com.facebook.react.uimanager.ViewManager;
1011

1112
import java.util.List;
1213
import java.util.ArrayList;
1314
import java.util.Collections;
1415

16+
import io.fullstack.firestack.auth.FirestackAuth;
17+
import io.fullstack.firestack.storage.FirestackStorage;
18+
import io.fullstack.firestack.database.FirestackDatabase;
19+
import io.fullstack.firestack.analytics.FirestackAnalytics;
20+
import io.fullstack.firestack.messaging.FirestackMessaging;
21+
1522
@SuppressWarnings("unused")
1623
public class FirestackPackage implements ReactPackage {
1724
private Context mContext;
@@ -26,11 +33,11 @@ public FirestackPackage() {
2633
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
2734
List<NativeModule> modules = new ArrayList<>();
2835
modules.add(new FirestackModule(reactContext, reactContext.getBaseContext()));
29-
modules.add(new FirestackAuthModule(reactContext));
30-
modules.add(new FirestackDatabaseModule(reactContext));
31-
modules.add(new FirestackAnalyticsModule(reactContext));
32-
modules.add(new FirestackStorageModule(reactContext));
33-
modules.add(new FirestackCloudMessaging(reactContext));
36+
modules.add(new FirestackAuth(reactContext));
37+
modules.add(new FirestackDatabase(reactContext));
38+
modules.add(new FirestackAnalytics(reactContext));
39+
modules.add(new FirestackStorage(reactContext));
40+
modules.add(new FirestackMessaging(reactContext));
3441
return modules;
3542
}
3643

android/src/main/java/io/fullstack/firestack/FirestackUtils.java renamed to android/src/main/java/io/fullstack/firestack/Utils.java

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,22 @@
77
import java.util.List;
88
import java.util.Map;
99

10-
import com.facebook.react.bridge.ReactContext;
11-
import com.facebook.react.modules.core.DeviceEventManagerModule;
1210
import com.facebook.react.bridge.Arguments;
1311
import com.facebook.react.bridge.Callback;
1412
import com.facebook.react.bridge.WritableMap;
15-
import com.facebook.react.bridge.WritableArray;
1613
import com.facebook.react.bridge.ReadableMap;
14+
import com.facebook.react.bridge.ReactContext;
15+
import com.facebook.react.bridge.WritableArray;
16+
import com.facebook.react.modules.core.DeviceEventManagerModule;
1717

18-
import com.facebook.react.bridge.ReadableArray;
19-
import com.facebook.react.bridge.ReadableMapKeySetIterator;
2018
import com.facebook.react.bridge.ReadableType;
19+
import com.facebook.react.bridge.ReadableArray;
2120
import com.google.firebase.database.DataSnapshot;
21+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
2222

2323
@SuppressWarnings("WeakerAccess")
24-
public class FirestackUtils {
25-
private static final String TAG = "FirestackUtils";
24+
public class Utils {
25+
private static final String TAG = "Utils";
2626

2727
// TODO NOTE
2828
public static void todoNote(final String tag, final String name, final Callback callback) {
@@ -37,15 +37,13 @@ public static void todoNote(final String tag, final String name, final Callback
3737
/**
3838
* send a JS event
3939
**/
40-
public static void sendEvent(final ReactContext context,
41-
final String eventName,
42-
final WritableMap params) {
43-
if (context.hasActiveCatalystInstance()) {
40+
public static void sendEvent(final ReactContext context, final String eventName, final WritableMap params) {
41+
if (context != null) {
4442
context
4543
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
4644
.emit(eventName, params);
4745
} else {
48-
Log.d(TAG, "Waiting for CatalystInstance before sending event");
46+
Log.d(TAG, "Missing context - cannot send event!");
4947
}
5048
}
5149

@@ -84,12 +82,12 @@ public static WritableMap dataSnapshotToMap(
8482
data.putString("value", null);
8583
}
8684
} else {
87-
WritableMap valueMap = FirestackUtils.castSnapshotValue(dataSnapshot);
85+
WritableMap valueMap = Utils.castSnapshotValue(dataSnapshot);
8886
data.putMap("value", valueMap);
8987
}
9088

9189
// Child keys
92-
WritableArray childKeys = FirestackUtils.getChildKeys(dataSnapshot);
90+
WritableArray childKeys = Utils.getChildKeys(dataSnapshot);
9391
data.putArray("childKeys", childKeys);
9492

9593
Object priority = dataSnapshot.getPriority();
@@ -253,10 +251,10 @@ public static Map<String, Object> recursivelyDeconstructReadableMap(ReadableMap
253251
deconstructedMap.put(key, readableMap.getString(key));
254252
break;
255253
case Map:
256-
deconstructedMap.put(key, FirestackUtils.recursivelyDeconstructReadableMap(readableMap.getMap(key)));
254+
deconstructedMap.put(key, Utils.recursivelyDeconstructReadableMap(readableMap.getMap(key)));
257255
break;
258256
case Array:
259-
deconstructedMap.put(key, FirestackUtils.recursivelyDeconstructReadableArray(readableMap.getArray(key)));
257+
deconstructedMap.put(key, Utils.recursivelyDeconstructReadableArray(readableMap.getArray(key)));
260258
break;
261259
default:
262260
throw new IllegalArgumentException("Could not convert object with key: " + key + ".");
@@ -284,10 +282,10 @@ public static List<Object> recursivelyDeconstructReadableArray(ReadableArray rea
284282
deconstructedList.add(i, readableArray.getString(i));
285283
break;
286284
case Map:
287-
deconstructedList.add(i, FirestackUtils.recursivelyDeconstructReadableMap(readableArray.getMap(i)));
285+
deconstructedList.add(i, Utils.recursivelyDeconstructReadableMap(readableArray.getMap(i)));
288286
break;
289287
case Array:
290-
deconstructedList.add(i, FirestackUtils.recursivelyDeconstructReadableArray(readableArray.getArray(i)));
288+
deconstructedList.add(i, Utils.recursivelyDeconstructReadableArray(readableArray.getArray(i)));
291289
break;
292290
default:
293291
throw new IllegalArgumentException("Could not convert object at index " + i + ".");

android/src/main/java/io/fullstack/firestack/FirestackAnalytics.java renamed to android/src/main/java/io/fullstack/firestack/analytics/FirestackAnalytics.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.fullstack.firestack;
1+
package io.fullstack.firestack.analytics;
22

33
import java.util.Map;
44
import android.util.Log;
@@ -11,14 +11,16 @@
1111
import com.facebook.react.bridge.ReactApplicationContext;
1212
import com.facebook.react.bridge.ReactContextBaseJavaModule;
1313

14-
class FirestackAnalyticsModule extends ReactContextBaseJavaModule {
14+
import io.fullstack.firestack.Utils;
15+
16+
public class FirestackAnalytics extends ReactContextBaseJavaModule {
1517

1618
private static final String TAG = "FirestackAnalytics";
1719

1820
private ReactApplicationContext context;
1921
private FirebaseAnalytics mFirebaseAnalytics;
2022

21-
public FirestackAnalyticsModule(ReactApplicationContext reactContext) {
23+
public FirestackAnalytics(ReactApplicationContext reactContext) {
2224
super(reactContext);
2325
context = reactContext;
2426
Log.d(TAG, "New instance");
@@ -36,7 +38,7 @@ public String getName() {
3638

3739
@ReactMethod
3840
public void logEvent(final String name, final ReadableMap params) {
39-
Map<String, Object> m = FirestackUtils.recursivelyDeconstructReadableMap(params);
41+
Map<String, Object> m = Utils.recursivelyDeconstructReadableMap(params);
4042
final Bundle bundle = makeEventBundle(name, m);
4143
Log.d(TAG, "Logging event " + name);
4244
mFirebaseAnalytics.logEvent(name, bundle);
@@ -111,7 +113,7 @@ public void setUserProperty(final String name, final String value) {
111113
// todo refactor/clean me
112114
private Bundle makeEventBundle(final String name, final Map<String, Object> map) {
113115
Bundle bundle = new Bundle();
114-
// Available from the Analytics event
116+
// Available from the FirestackAnalytics event
115117
if (map.containsKey("id")) {
116118
String id = (String) map.get("id");
117119
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id);
@@ -125,16 +127,16 @@ private Bundle makeEventBundle(final String name, final Map<String, Object> map)
125127
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, val);
126128
}
127129
if (map.containsKey("quantity")) {
128-
long val = (long) map.get("quantity");
129-
bundle.putLong(FirebaseAnalytics.Param.QUANTITY, val);
130+
double val = (double) map.get("quantity");
131+
bundle.putDouble(FirebaseAnalytics.Param.QUANTITY, val);
130132
}
131133
if (map.containsKey("price")) {
132-
long val = (long) map.get("price");
133-
bundle.putLong(FirebaseAnalytics.Param.PRICE, val);
134+
double val = (double) map.get("price");
135+
bundle.putDouble(FirebaseAnalytics.Param.PRICE, val);
134136
}
135137
if (map.containsKey("value")) {
136-
long val = (long) map.get("value");
137-
bundle.putLong(FirebaseAnalytics.Param.VALUE, val);
138+
double val = (double) map.get("value");
139+
bundle.putDouble(FirebaseAnalytics.Param.VALUE, val);
138140
}
139141
if (map.containsKey("currency")) {
140142
String val = (String) map.get("currency");
@@ -194,7 +196,7 @@ private Bundle makeEventBundle(final String name, final Map<String, Object> map)
194196
}
195197
if (map.containsKey("shipping")) {
196198
double val = (double) map.get("shipping");
197-
bundle.putDouble(FirebaseAnalytics.Param.NUMBER_OF_PASSENGERS, val);
199+
bundle.putDouble(FirebaseAnalytics.Param.SHIPPING, val);
198200
}
199201
if (map.containsKey("group_id")) {
200202
String val = (String) map.get("group_id");

0 commit comments

Comments
 (0)