diff --git a/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java b/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java
index 51d01bba..390faf5c 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java
@@ -48,6 +48,7 @@ import timber.log.Timber;
import static gr.thmmy.mthmmy.activities.settings.SettingsActivity.DISPLAY_RELATIVE_TIME;
+// TODO: Replace MultiDexApplication with Application after KitKat support is dropped
public class BaseApplication extends MultiDexApplication {
private static BaseApplication baseApplication; //BaseApplication singleton
@@ -63,9 +64,6 @@ public class BaseApplication extends MultiDexApplication {
private boolean displayRelativeTime;
- //TODO: maybe use PreferenceManager.getDefaultSharedPreferences here as well?
- private static final String SHARED_PREFS = "ThmmySharedPrefs";
-
//Display Metrics
private static float widthDp;
private static int widthPxl, heightPxl;
@@ -84,10 +82,32 @@ public class BaseApplication extends MultiDexApplication {
Timber.plant(new Timber.DebugTree());
//Shared Preferences
- SharedPreferences sharedPrefs = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
+ SharedPreferences sessionSharedPrefs = getSharedPreferences(getString(R.string.session_shared_prefs), MODE_PRIVATE);
SharedPreferences settingsSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences draftsPrefs = getSharedPreferences(getString(R.string.pref_topic_drafts_key), MODE_PRIVATE);
+ initFirebase(settingsSharedPrefs);
+
+ SharedPrefsCookiePersistor sharedPrefsCookiePersistor = new SharedPrefsCookiePersistor(getApplicationContext());
+ PersistentCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), sharedPrefsCookiePersistor);
+
+ initOkHttp(cookieJar);
+
+ sessionManager = new SessionManager(client, cookieJar, sharedPrefsCookiePersistor, sessionSharedPrefs, draftsPrefs);
+
+ //Sets up upload service
+ UploadService.NAMESPACE = BuildConfig.APPLICATION_ID;
+ UploadService.HTTP_STACK = new OkHttpStack(client);
+
+ //Initialize and create the image loader logic for the drawer
+ initDrawerImageLoader();
+
+ setDisplayMetrics();
+
+ displayRelativeTime = settingsSharedPrefs.getBoolean(DISPLAY_RELATIVE_TIME, true);
+ }
+
+ private void initFirebase(SharedPreferences settingsSharedPrefs){
if (settingsSharedPrefs.getBoolean(getString(R.string.pref_privacy_crashlytics_enable_key), false)){
Timber.i("Starting app with Firebase Crashlytics enabled.");
setFirebaseCrashlyticsEnabled(true);
@@ -105,9 +125,10 @@ public class BaseApplication extends MultiDexApplication {
Timber.i("Starting app with Firebase Analytics enabled.");
else
Timber.i("Starting app with Firebase Analytics disabled.");
+ }
+
+ private void initOkHttp(PersistentCookieJar cookieJar){
- SharedPrefsCookiePersistor sharedPrefsCookiePersistor = new SharedPrefsCookiePersistor(getApplicationContext());
- PersistentCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), sharedPrefsCookiePersistor);
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.cookieJar(cookieJar)
.addInterceptor(chain -> {
@@ -115,9 +136,9 @@ public class BaseApplication extends MultiDexApplication {
HttpUrl oldUrl = chain.request().url();
if (Objects.equals(chain.request().url().host(), "www.thmmy.gr")
&& !oldUrl.toString().contains("theme=4")) {
- //Probably works but needs more testing:
- HttpUrl newUrl = oldUrl.newBuilder().addQueryParameter("theme", "4").build();
- request = request.newBuilder().url(newUrl).build();
+ //Probably works but needs more testing:
+ HttpUrl newUrl = oldUrl.newBuilder().addQueryParameter("theme", "4").build();
+ request = request.newBuilder().url(newUrl).build();
}
return chain.proceed(request);
})
@@ -143,14 +164,9 @@ public class BaseApplication extends MultiDexApplication {
builder.addInterceptor(new OkHttpProfilerInterceptor());
client = builder.build();
+ }
- sessionManager = new SessionManager(client, cookieJar, sharedPrefsCookiePersistor, sharedPrefs, draftsPrefs);
-
- //Sets up upload service
- UploadService.NAMESPACE = BuildConfig.APPLICATION_ID;
- UploadService.HTTP_STACK = new OkHttpStack(client);
-
- //Initialize and create the image loader logic
+ private void initDrawerImageLoader(){
DrawerImageLoader.init(new AbstractDrawerImageLoader() {
@Override
public void set(ImageView imageView, Uri uri, Drawable placeholder, String tag) {
@@ -167,24 +183,25 @@ public class BaseApplication extends MultiDexApplication {
if (DrawerImageLoader.Tags.PROFILE.name().equals(tag)) {
return new IconicsDrawable(ctx).icon(FontAwesome.Icon.faw_user)
.paddingDp(10)
- .color(ContextCompat.getColor(ctx, R.color.primary_light))
+ .color(ContextCompat.getColor(ctx, R.color.iron))
.backgroundColor(ContextCompat.getColor(ctx, R.color.primary));
}
return super.placeholder(ctx, tag);
}
});
+ }
+ private void setDisplayMetrics(){
DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
widthPxl = displayMetrics.widthPixels;
widthDp = widthPxl / displayMetrics.density;
heightPxl = displayMetrics.heightPixels;
-
- displayRelativeTime = settingsSharedPrefs.getBoolean(DISPLAY_RELATIVE_TIME, true);
}
- //Getters
+
+ //-------------------- Getters --------------------
public Context getContext() {
return getApplicationContext();
}
@@ -213,7 +230,7 @@ public class BaseApplication extends MultiDexApplication {
return displayRelativeTime;
}
- //--------------------Firebase--------------------
+ //-------------------- Firebase --------------------
public void logFirebaseAnalyticsEvent(String event, Bundle params) {
firebaseAnalytics.logEvent(event, params);
diff --git a/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java b/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java
index e87cdf05..2c5cc42b 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java
@@ -60,25 +60,25 @@ public class SessionManager {
private final SharedPrefsCookiePersistor cookiePersistor; //Used to explicitly edit cookies in cookieJar
//Shared Preferences & its keys
- private final SharedPreferences sharedPrefs;
+ private final SharedPreferences sessionSharedPrefs;
private final SharedPreferences draftsPrefs;
private static final String USERNAME = "Username";
private static final String USER_ID = "UserID";
- public static final String AVATAR_LINK = "AvatarLink";
- public static final String HAS_AVATAR = "HasAvatar";
+ private static final String AVATAR_LINK = "AvatarLink";
+ private static final String HAS_AVATAR = "HasAvatar";
private static final String SESC = "Sesc";
private static final String LOGOUT_LINK = "LogoutLink";
private static final String MARK_ALL_AS_READ_LINK = "MarkAllAsReadLink";
- public static final String LOGGED_IN = "LoggedIn";
+ private static final String LOGGED_IN = "LoggedIn";
private static final String LOGIN_SCREEN_AS_DEFAULT = "LoginScreenAsDefault";
//Constructor
public SessionManager(OkHttpClient client, PersistentCookieJar cookieJar,
- SharedPrefsCookiePersistor cookiePersistor, SharedPreferences sharedPrefs, SharedPreferences draftsPrefs) {
+ SharedPrefsCookiePersistor cookiePersistor, SharedPreferences sessionSharedPrefs, SharedPreferences draftsPrefs) {
this.client = client;
this.cookiePersistor = cookiePersistor;
this.cookieJar = cookieJar;
- this.sharedPrefs = sharedPrefs;
+ this.sessionSharedPrefs = sessionSharedPrefs;
this.draftsPrefs = draftsPrefs;
}
@@ -124,7 +124,7 @@ public class SessionManager {
setPersistentCookieSession(); //Store cookies
//Edit SharedPreferences, save session's data
- SharedPreferences.Editor editor = sharedPrefs.edit();
+ SharedPreferences.Editor editor = sessionSharedPrefs.edit();
setLoginScreenAsDefault(false);
editor.putBoolean(LOGGED_IN, true);
editor.putString(USERNAME, extractUserName(document));
@@ -247,10 +247,10 @@ public class SessionManager {
public void clearSessionData() {
cookieJar.clear();
- sharedPrefs.edit().clear().apply(); //Clear session data
- sharedPrefs.edit().putString(USERNAME, guestName).apply();
- sharedPrefs.edit().putInt(USER_ID, -1).apply();
- sharedPrefs.edit().putBoolean(LOGGED_IN, false).apply(); //User logs out
+ sessionSharedPrefs.edit().clear().apply(); //Clear session data
+ sessionSharedPrefs.edit().putString(USERNAME, guestName).apply();
+ sessionSharedPrefs.edit().putInt(USER_ID, -1).apply();
+ sessionSharedPrefs.edit().putBoolean(LOGGED_IN, false).apply(); //User logs out
draftsPrefs.edit().clear().apply(); //Clear saved drafts
Timber.i("Session data cleared.");
}
@@ -267,15 +267,15 @@ public class SessionManager {
//---------------------------------------GETTERS------------------------------------------------
public String getUsername() {
- return sharedPrefs.getString(USERNAME, USERNAME);
+ return sessionSharedPrefs.getString(USERNAME, USERNAME);
}
public int getUserId() {
- return sharedPrefs.getInt(USER_ID, -1);
+ return sessionSharedPrefs.getInt(USER_ID, -1);
}
public String getAvatarLink() {
- return sharedPrefs.getString(AVATAR_LINK, AVATAR_LINK);
+ return sessionSharedPrefs.getString(AVATAR_LINK, AVATAR_LINK);
}
public Cookie getThmmyCookie() {
@@ -288,7 +288,7 @@ public class SessionManager {
}
public String getMarkAllAsReadLink() {
- String markAsReadLink = sharedPrefs.getString(MARK_ALL_AS_READ_LINK, null);
+ String markAsReadLink = sessionSharedPrefs.getString(MARK_ALL_AS_READ_LINK, null);
if(markAsReadLink == null){ //For older versions, extract it from logout link (otherwise user would have to login again)
String sesc = extractSescFromLink(getLogoutLink());
if(sesc!=null) {
@@ -302,38 +302,38 @@ public class SessionManager {
}
private String getLogoutLink() {
- return sharedPrefs.getString(LOGOUT_LINK, null);
+ return sessionSharedPrefs.getString(LOGOUT_LINK, null);
}
public boolean hasAvatar() {
- return sharedPrefs.getBoolean(HAS_AVATAR, false);
+ return sessionSharedPrefs.getBoolean(HAS_AVATAR, false);
}
public boolean isLoggedIn() {
- return sharedPrefs.getBoolean(LOGGED_IN, false);
+ return sessionSharedPrefs.getBoolean(LOGGED_IN, false);
}
public boolean isLoginScreenDefault() {
- return sharedPrefs.getBoolean(LOGIN_SCREEN_AS_DEFAULT, true);
+ return sessionSharedPrefs.getBoolean(LOGIN_SCREEN_AS_DEFAULT, true);
}
//--------------------------------------GETTERS END---------------------------------------------
//---------------------------------------SETTERS------------------------------------------------
private void setSesc(String sesc){
- SharedPreferences.Editor editor = sharedPrefs.edit();
+ SharedPreferences.Editor editor = sessionSharedPrefs.edit();
editor.putString(SESC, sesc);
editor.apply();
}
private void setMarkAsReadLink(String markAllAsReadLink){
- SharedPreferences.Editor editor = sharedPrefs.edit();
+ SharedPreferences.Editor editor = sessionSharedPrefs.edit();
editor.putString(MARK_ALL_AS_READ_LINK, markAllAsReadLink);
editor.apply();
}
private void setLogoutLink(String logoutLink){
- SharedPreferences.Editor editor = sharedPrefs.edit();
+ SharedPreferences.Editor editor = sessionSharedPrefs.edit();
editor.putString(LOGOUT_LINK, logoutLink);
editor.apply();
}
@@ -367,7 +367,7 @@ public class SessionManager {
}
private void setLoginScreenAsDefault(boolean b){
- sharedPrefs.edit().putBoolean(LOGIN_SCREEN_AS_DEFAULT, b).apply();
+ sessionSharedPrefs.edit().putBoolean(LOGIN_SCREEN_AS_DEFAULT, b).apply();
}
@NonNull
@@ -448,7 +448,7 @@ public class SessionManager {
if (matcher.find())
return matcher.group(1);
}
- Timber.e(new ParseException("Parsing failed(extractSescFromLogoutLink)"),"ParseException");
+ Timber.e(new ParseException("Parsing failed(extractSescFromLink)"),"ParseException");
return null;
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d1c69acb..f881b88d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -209,7 +209,7 @@
Analytics data reports
Automatically send us anonymized data for analytical purposes
-
+
Black
Red
Yellow
@@ -229,8 +229,12 @@
Link text
Required
-
+
New topic
Create topic
Link copied
+
+
+ SessionSharedPrefs
+