package org.bookdash.android.config; import android.support.annotation.NonNull; import android.util.Log; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.remoteconfig.FirebaseRemoteConfig; import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings; import org.bookdash.android.BuildConfig; import org.bookdash.android.R; public class FirebaseConfig implements RemoteConfigSettingsApi { private static final int CACHE_EXPIRATION_IN_SECONDS = 3600; private static final String DEFAULT_LANGUAGE_ID = "default_language_id"; private static final String DEFAULT_LANGUAGE_NAME = "default_language_name"; private static final String DEFAULT_LANGUAGE_ABBREVIATION = "default_language_abbreviation"; private static final String TAG = "FirebaseConfig"; private final FirebaseRemoteConfig firebaseRemoteConfig; private FirebaseConfig(FirebaseRemoteConfig firebaseRemoteConfig) { this.firebaseRemoteConfig = firebaseRemoteConfig; } public static FirebaseConfig newInstance() { final FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG).build(); firebaseRemoteConfig.setConfigSettings(configSettings); firebaseRemoteConfig.setDefaults(R.xml.firebase_remote_config_defaults); return new FirebaseConfig(firebaseRemoteConfig); } public FirebaseConfig init() { firebaseRemoteConfig.fetch(CACHE_EXPIRATION_IN_SECONDS).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { firebaseRemoteConfig.activateFetched(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.d(TAG, "onFailure() called with: " + "e = [" + e + "]", e); } }); return this; } @Override public String getDefaultLanguageId() { return firebaseRemoteConfig.getString(DEFAULT_LANGUAGE_ID); } @Override public String getDefaultLanguageName() { return firebaseRemoteConfig.getString(DEFAULT_LANGUAGE_NAME); } @Override public String getDefaultLanguageAbbreviation() { return firebaseRemoteConfig.getString(DEFAULT_LANGUAGE_ABBREVIATION); } }