1 package abi47_0_0.expo.modules.firebase.core; 2 3 import android.content.Context; 4 5 import com.google.firebase.FirebaseApp; 6 import com.google.firebase.FirebaseOptions; 7 8 import abi47_0_0.expo.modules.core.interfaces.InternalModule; 9 10 import java.util.List; 11 import java.util.Collections; 12 13 public class FirebaseCoreService implements InternalModule, FirebaseCoreInterface { 14 15 protected static final String DEFAULT_APP_NAME = "[DEFAULT]"; 16 17 private Context mContext; 18 FirebaseCoreService(Context context)19 public FirebaseCoreService(Context context) { 20 super(); 21 mContext = context; 22 } 23 24 @Override getExportedInterfaces()25 public List<Class> getExportedInterfaces() { 26 return Collections.singletonList((Class) FirebaseCoreInterface.class); 27 } 28 29 // FirebaseCoreInterface 30 getDefaultApp()31 public FirebaseApp getDefaultApp() { 32 return getFirebaseApp(getAppName()); 33 } 34 35 // Overridable 36 getAppName()37 protected String getAppName() { 38 FirebaseApp app = getFirebaseApp(null); 39 return (app != null) ? app.getName() : DEFAULT_APP_NAME; 40 } 41 getAppOptions()42 protected FirebaseOptions getAppOptions() { 43 FirebaseApp app = getFirebaseApp(null); 44 return (app != null) ? app.getOptions() : FirebaseOptions.fromResource(mContext); 45 } 46 isAppAccessible(final String name)47 protected boolean isAppAccessible(final String name) { 48 return true; 49 } 50 updateFirebaseApp(final FirebaseOptions options, final String name)51 protected FirebaseApp updateFirebaseApp(final FirebaseOptions options, final String name) { 52 FirebaseApp app = getFirebaseApp(name); 53 if (app != null) { 54 if (options == null) { 55 app.delete(); 56 } else { 57 if (!FirebaseCoreOptions.isEqual(options, app.getOptions())) { 58 app.delete(); 59 if (name == null) { 60 app = FirebaseApp.initializeApp(mContext, options); 61 } else { 62 app = FirebaseApp.initializeApp(mContext, options, name); 63 } 64 } 65 } 66 } else { 67 if (options != null) { 68 if (name == null) { 69 app = FirebaseApp.initializeApp(mContext, options); 70 } else { 71 app = FirebaseApp.initializeApp(mContext, options, name); 72 } 73 } 74 } 75 76 return app; 77 } 78 79 // Static 80 getFirebaseApp(String name)81 protected static FirebaseApp getFirebaseApp(String name) { 82 FirebaseApp app; 83 try { 84 return (name == null) ? FirebaseApp.getInstance() : FirebaseApp.getInstance(name); 85 } catch (Exception e) { 86 return null; 87 } 88 } 89 } 90