Skip to content
This repository has been archived by the owner on Apr 23, 2021. It is now read-only.

Commit

Permalink
add firebase remote config & extract Firebase code into Util class
Browse files Browse the repository at this point in the history
* currently only FIREBASE_DB_URL, but easy to add more
  • Loading branch information
l3d00m committed May 5, 2017
1 parent 367b8a3 commit 4e31e65
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,14 @@
import static de.pscom.pietsmiet.util.PostType.UPLOADPLAN;

public class FirebaseRepository extends MainRepository {
private static final String FIREBASE_URL = "https://pietsmiet-de5ff.firebaseio.com";
FirebaseApiInterface apiInterface;

FirebaseRepository(MainActivity view) {
super(view);
RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io());

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(FIREBASE_URL)
.baseUrl(SettingsHelper.stringFirebaseDbUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(rxAdapter)
.build();
Expand Down
74 changes: 74 additions & 0 deletions app/src/main/java/de/pscom/pietsmiet/util/FirebaseUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package de.pscom.pietsmiet.util;

import android.app.Activity;
import android.content.Context;

import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.crash.FirebaseCrash;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;

import de.pscom.pietsmiet.BuildConfig;

@SuppressWarnings("WeakerAccess")
public abstract class FirebaseUtil {
private static final String PARAM_FIREBASE_DB_URL = "FIREBASE_DB_URL";

private static final String TOPIC_VIDEO = "video";
private static final String TOPIC_UPLOADPLAN = "uploadplan";
private static final String TOPIC_NEWS = "news";
private static final String TOPIC_PIETCAST = "pietcast";
private static final String TOPIC_TEST = "test2";


public static void loadRemoteConfig(Activity context) {
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
mFirebaseRemoteConfig.fetch()
.addOnCompleteListener(context, task -> {
if (task.isSuccessful()) {
mFirebaseRemoteConfig.activateFetched();

String firebaseDbUrl = mFirebaseRemoteConfig.getString(PARAM_FIREBASE_DB_URL);
if (firebaseDbUrl != null && firebaseDbUrl != "") {
SharedPreferenceHelper.setSharedPreferenceString(
context, SharedPreferenceHelper.KEY_FIREBASE_DB_URL, firebaseDbUrl);
SettingsHelper.loadAllSettings(context);
}
}
});
}

public static void setupTopicSubscriptions(Context context) {
if (BuildConfig.DEBUG) {
FirebaseMessaging.getInstance().subscribeToTopic(TOPIC_TEST);
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(false);
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic(TOPIC_TEST);
}
if (SettingsHelper.boolUploadplanNotification) {
FirebaseMessaging.getInstance().subscribeToTopic(TOPIC_UPLOADPLAN);
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic(TOPIC_UPLOADPLAN);
}
if (SettingsHelper.boolVideoNotification) {
FirebaseMessaging.getInstance().subscribeToTopic(TOPIC_VIDEO);
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic(TOPIC_VIDEO);
}
if (SettingsHelper.boolNewsNotification) {
FirebaseMessaging.getInstance().subscribeToTopic(TOPIC_NEWS);
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic(TOPIC_NEWS);
}
if (SettingsHelper.boolPietcastNotification) {
FirebaseMessaging.getInstance().subscribeToTopic(TOPIC_PIETCAST);
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic(TOPIC_PIETCAST);
}
}

public static void reportError(String message, Throwable tr) {
FirebaseCrash.log(message);
FirebaseCrash.report(tr);
}
}
5 changes: 1 addition & 4 deletions app/src/main/java/de/pscom/pietsmiet/util/PsLog.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import android.support.compat.BuildConfig;
import android.util.Log;

import com.google.firebase.crash.FirebaseCrash;

import java.net.SocketTimeoutException;
import java.net.UnknownHostException;

Expand Down Expand Up @@ -93,8 +91,7 @@ public static void e(String message, Throwable tr) {
!(tr instanceof SocketTimeoutException) &&
!(tr instanceof UnknownHostException) &&
!(tr instanceof SSLException)) {
FirebaseCrash.log(getTag() + " " + message + ": " + Log.getStackTraceString(tr));
FirebaseCrash.report(tr);
FirebaseUtil.reportError(getTag() + " " + message, tr);
}
Log.e(getTag(), message, tr);
}
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/de/pscom/pietsmiet/util/SettingsHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_CATEGORY_PIETSMIET_VIDEOS;
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_CATEGORY_TWITTER;
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_CATEGORY_YOUTUBE_VIDEOS;
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_FIREBASE_DB_URL;
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_NOTIFY_NEWS_SETTING;
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_NOTIFY_PIETCAST_SETTING;
import static de.pscom.pietsmiet.util.SharedPreferenceHelper.KEY_NOTIFY_UPLOADPLAN_SETTING;
Expand Down Expand Up @@ -39,6 +40,7 @@ public class SettingsHelper {
public static boolean boolCategoryFacebook;

public static String stringTwitterBearer;
public static String stringFirebaseDbUrl;

public static int intQualityLoadHDImages;
public static final int TYPE_HD_NEVER = 0;
Expand All @@ -53,6 +55,7 @@ public static void loadAllSettings(Context context) {
boolNewsNotification = getSharedPreferenceBoolean(context, KEY_NOTIFY_NEWS_SETTING, false);
boolPietcastNotification = getSharedPreferenceBoolean(context, KEY_NOTIFY_PIETCAST_SETTING, false);
stringTwitterBearer = getSharedPreferenceString(context, KEY_TWITTER_BEARER, null);
stringFirebaseDbUrl = getSharedPreferenceString(context, KEY_FIREBASE_DB_URL, "https://pietsmiet-de5ff.firebaseio.com/new/");
intQualityLoadHDImages = getSharedPreferenceInt(context, KEY_QUALITY_IMAGE_LOAD_HD_SETTING, TYPE_HD_ALWAYS);

// SWITCHES
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ public class SharedPreferenceHelper {
public static final String KEY_CATEGORY_TWITTER = "KEY_CATEGORY_TWITTER";
public static final String KEY_CATEGORY_FACEBOOK = "KEY_CATEGORY_FACEBOOK";

public static final String KEY_FIREBASE_DB_URL = "KEY_FIREBASE_DB_URL";

private final static String PREF_FILE = "PREF";

/**
Expand Down
31 changes: 3 additions & 28 deletions app/src/main/java/de/pscom/pietsmiet/view/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import de.pscom.pietsmiet.service.MyFirebaseMessagingService;
import de.pscom.pietsmiet.util.CacheUtil;
import de.pscom.pietsmiet.util.DatabaseHelper;
import de.pscom.pietsmiet.util.FirebaseUtil;
import de.pscom.pietsmiet.util.NetworkUtil;
import de.pscom.pietsmiet.util.PostType;
import de.pscom.pietsmiet.util.PsLog;
Expand Down Expand Up @@ -146,34 +147,8 @@ public void onHidden(FloatingActionButton fab) {
SharedPreferenceHelper.setSharedPreferenceBoolean(this, KEY_APP_FIRST_RUN, false);
}


if (BuildConfig.DEBUG) {
FirebaseMessaging.getInstance().subscribeToTopic("test2");
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false);
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic("test2");
}
if (SettingsHelper.boolUploadplanNotification) {
FirebaseMessaging.getInstance().subscribeToTopic("uploadplan");
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic("uploadplan");
}
if (SettingsHelper.boolVideoNotification) {
FirebaseMessaging.getInstance().subscribeToTopic("video");
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic("video");
}
if (SettingsHelper.boolNewsNotification) {
FirebaseMessaging.getInstance().subscribeToTopic("news");
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic("news");
}
if (SettingsHelper.boolPietcastNotification) {
FirebaseMessaging.getInstance().subscribeToTopic("pietcast");
} else {
FirebaseMessaging.getInstance().unsubscribeFromTopic("pietcast");
}

FirebaseUtil.loadRemoteConfig(this);
FirebaseUtil.setupTopicSubscriptions(this.getApplicationContext());

new SecretConstants(this);

Expand Down

0 comments on commit 4e31e65

Please sign in to comment.