1 package io.keybase.ossifrage.modules;
2 
3 import android.content.Context;
4 import android.os.Build;
5 import android.telephony.TelephonyManager;
6 
7 import androidx.annotation.NonNull;
8 
9 import com.facebook.react.BuildConfig;
10 import com.facebook.react.bridge.Promise;
11 import com.facebook.react.bridge.ReactApplicationContext;
12 import com.facebook.react.bridge.ReactContextBaseJavaModule;
13 import com.facebook.react.bridge.ReactMethod;
14 import com.google.android.gms.tasks.OnCompleteListener;
15 import com.google.android.gms.tasks.Task;
16 import com.google.firebase.FirebaseApp;
17 import com.google.firebase.FirebaseOptions;
18 import com.google.firebase.iid.FirebaseInstanceId;
19 import com.google.firebase.iid.InstanceIdResult;
20 
21 public class Utils extends ReactContextBaseJavaModule {
22     private static final String NAME = "Utils";
23 
Utils(final ReactApplicationContext reactContext)24     public Utils(final ReactApplicationContext reactContext) { super(reactContext); }
25 
26     @Override
getName()27     public String getName() { return NAME; }
28 
29     @ReactMethod
getRegistrationToken(Promise promise)30     public void getRegistrationToken(Promise promise) {
31       boolean firebaseInitialized = FirebaseApp.getApps(getReactApplicationContext()).size() == 1;
32       if (!firebaseInitialized) {
33         FirebaseApp.initializeApp(getReactApplicationContext(),
34           new FirebaseOptions.Builder()
35             .setApplicationId(BuildConfig.APPLICATION_ID)
36             .setGcmSenderId("9603251415").build()
37         );
38       }
39       FirebaseInstanceId.getInstance().getInstanceId()
40         .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
41             @Override
42             public void onComplete(@NonNull Task<InstanceIdResult> task) {
43                 if (!task.isSuccessful()) {
44                     NativeLogger.warn("getInstanceId failed", task.getException());
45                     promise.reject(task.getException());
46                     return;
47                 }
48 
49 
50                 // Get new Instance ID token
51                 String token = task.getResult().getToken();
52                 NativeLogger.info("Got token: " + token);
53                 promise.resolve(token);
54             }
55         });
56     }
57 
58 
59 
60     @ReactMethod
getDefaultCountryCode(Promise promise)61     public void getDefaultCountryCode(Promise promise) {
62         try {
63             TelephonyManager tm = (TelephonyManager) this.getReactApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
64             String countryCode = tm.getNetworkCountryIso();
65             promise.resolve(countryCode);
66         } catch (Exception e) {
67             promise.reject(e);
68         }
69     }
70 }
71