2020-07-01 17:08:28 +00:00
|
|
|
package awais.instagrabber.utils;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.os.Build;
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.annotation.StringDef;
|
|
|
|
import androidx.appcompat.app.AppCompatDelegate;
|
|
|
|
|
2021-03-13 15:21:31 +00:00
|
|
|
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_AUTO_REFRESH;
|
|
|
|
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_AUTO_REFRESH_FREQ_NUMBER;
|
|
|
|
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_AUTO_REFRESH_FREQ_UNIT;
|
|
|
|
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_NOTIFICATIONS;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.APP_LANGUAGE;
|
|
|
|
import static awais.instagrabber.utils.Constants.APP_THEME;
|
2021-01-11 21:37:34 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.APP_UA;
|
|
|
|
import static awais.instagrabber.utils.Constants.APP_UA_CODE;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.AUTOPLAY_VIDEOS;
|
2021-01-11 21:37:34 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.BROWSER_UA;
|
|
|
|
import static awais.instagrabber.utils.Constants.BROWSER_UA_CODE;
|
2020-08-22 21:03:55 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.CHECK_ACTIVITY;
|
2020-09-01 17:37:00 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.CHECK_UPDATES;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.COOKIE;
|
|
|
|
import static awais.instagrabber.utils.Constants.CUSTOM_DATE_TIME_FORMAT;
|
|
|
|
import static awais.instagrabber.utils.Constants.CUSTOM_DATE_TIME_FORMAT_ENABLED;
|
|
|
|
import static awais.instagrabber.utils.Constants.DATE_TIME_FORMAT;
|
|
|
|
import static awais.instagrabber.utils.Constants.DATE_TIME_SELECTION;
|
2020-09-06 15:37:05 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.DEFAULT_TAB;
|
2020-08-04 02:28:42 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.DEVICE_UUID;
|
2020-09-01 17:37:00 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.DM_MARK_AS_SEEN;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.DOWNLOAD_USER_FOLDER;
|
2021-03-18 21:00:23 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.FLAG_SECURE;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.FOLDER_PATH;
|
|
|
|
import static awais.instagrabber.utils.Constants.FOLDER_SAVE_TO;
|
2020-08-06 16:48:52 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.MARK_AS_SEEN;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.MUTED_VIDEOS;
|
2020-09-13 10:21:14 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_DARK_THEME;
|
2021-01-02 02:54:32 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_EMOJI_VARIANTS;
|
2020-11-01 11:34:42 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_HASHTAG_POSTS_LAYOUT;
|
2020-09-13 10:21:14 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_LIGHT_THEME;
|
2020-11-02 13:00:07 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_LIKED_POSTS_LAYOUT;
|
2020-11-01 12:56:04 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_LOCATION_POSTS_LAYOUT;
|
2020-10-17 10:07:03 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_POSTS_LAYOUT;
|
2020-10-27 11:33:21 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_PROFILE_POSTS_LAYOUT;
|
2021-01-13 13:22:25 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_REACTIONS;
|
2020-11-02 13:00:07 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_SAVED_POSTS_LAYOUT;
|
|
|
|
import static awais.instagrabber.utils.Constants.PREF_TAGGED_POSTS_LAYOUT;
|
2020-11-01 06:02:54 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREF_TOPIC_POSTS_LAYOUT;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.PREV_INSTALL_VERSION;
|
2021-01-17 18:55:14 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.SHOW_CAPTIONS;
|
2020-07-01 17:08:28 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.SHOW_QUICK_ACCESS_DIALOG;
|
2020-09-06 13:27:41 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.SKIPPED_VERSION;
|
2020-12-29 18:41:38 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.STORY_SORT;
|
2020-09-16 14:10:05 +00:00
|
|
|
import static awais.instagrabber.utils.Constants.SWAP_DATE_TIME_FORMAT_ENABLED;
|
2020-07-01 17:08:28 +00:00
|
|
|
|
|
|
|
public final class SettingsHelper {
|
|
|
|
private final SharedPreferences sharedPreferences;
|
|
|
|
|
|
|
|
public SettingsHelper(@NonNull final Context context) {
|
2020-09-20 18:52:34 +00:00
|
|
|
this.sharedPreferences = context.getSharedPreferences(Constants.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
2020-07-01 17:08:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
public String getString(@StringSettings final String key) {
|
|
|
|
final String stringDefault = getStringDefault(key);
|
|
|
|
if (sharedPreferences != null) return sharedPreferences.getString(key, stringDefault);
|
|
|
|
return stringDefault;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getInteger(@IntegerSettings final String key) {
|
|
|
|
final int integerDefault = getIntegerDefault(key);
|
|
|
|
if (sharedPreferences != null) return sharedPreferences.getInt(key, integerDefault);
|
|
|
|
return integerDefault;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getBoolean(@BooleanSettings final String key) {
|
2020-09-12 00:46:20 +00:00
|
|
|
if (sharedPreferences != null) return sharedPreferences.getBoolean(key, false);
|
|
|
|
return false;
|
2020-07-01 17:08:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
private String getStringDefault(@StringSettings final String key) {
|
|
|
|
if (DATE_TIME_FORMAT.equals(key))
|
|
|
|
return "hh:mm:ss a 'on' dd-MM-yyyy";
|
|
|
|
if (DATE_TIME_SELECTION.equals(key))
|
|
|
|
return "0;3;0";
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
private int getIntegerDefault(@IntegerSettings final String key) {
|
|
|
|
if (APP_THEME.equals(key)) return getThemeCode(true);
|
2021-01-11 21:37:34 +00:00
|
|
|
if (PREV_INSTALL_VERSION.equals(key) || APP_UA_CODE.equals(key) || BROWSER_UA_CODE.equals(key)) return -1;
|
2020-07-01 17:08:28 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getThemeCode(final boolean fromHelper) {
|
|
|
|
int themeCode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
|
|
|
|
|
|
|
if (!fromHelper && sharedPreferences != null) {
|
2020-08-30 06:47:04 +00:00
|
|
|
themeCode = Integer.parseInt(sharedPreferences.getString(APP_THEME, String.valueOf(themeCode)));
|
|
|
|
switch (themeCode) {
|
|
|
|
case 1:
|
|
|
|
themeCode = AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
themeCode = AppCompatDelegate.MODE_NIGHT_NO;
|
|
|
|
break;
|
|
|
|
case 0:
|
|
|
|
themeCode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
|
|
|
break;
|
|
|
|
}
|
2020-07-01 17:08:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (themeCode == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM && Build.VERSION.SDK_INT < 29)
|
|
|
|
themeCode = AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
|
|
|
|
|
|
|
return themeCode;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void putString(@StringSettings final String key, final String val) {
|
|
|
|
if (sharedPreferences != null) sharedPreferences.edit().putString(key, val).apply();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void putInteger(@IntegerSettings final String key, final int val) {
|
|
|
|
if (sharedPreferences != null) sharedPreferences.edit().putInt(key, val).apply();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void putBoolean(@BooleanSettings final String key, final boolean val) {
|
|
|
|
if (sharedPreferences != null) sharedPreferences.edit().putBoolean(key, val).apply();
|
|
|
|
}
|
|
|
|
|
2020-09-06 13:27:41 +00:00
|
|
|
@StringDef(
|
2021-01-11 21:37:34 +00:00
|
|
|
{APP_LANGUAGE, APP_THEME, APP_UA, BROWSER_UA, COOKIE, FOLDER_PATH, DATE_TIME_FORMAT, DATE_TIME_SELECTION,
|
|
|
|
CUSTOM_DATE_TIME_FORMAT, DEVICE_UUID, SKIPPED_VERSION, DEFAULT_TAB, PREF_DARK_THEME, PREF_LIGHT_THEME,
|
|
|
|
PREF_POSTS_LAYOUT, PREF_PROFILE_POSTS_LAYOUT, PREF_TOPIC_POSTS_LAYOUT, PREF_HASHTAG_POSTS_LAYOUT,
|
|
|
|
PREF_LOCATION_POSTS_LAYOUT, PREF_LIKED_POSTS_LAYOUT, PREF_TAGGED_POSTS_LAYOUT, PREF_SAVED_POSTS_LAYOUT,
|
2021-03-13 15:21:31 +00:00
|
|
|
STORY_SORT, PREF_EMOJI_VARIANTS, PREF_REACTIONS, PREF_ENABLE_DM_AUTO_REFRESH_FREQ_UNIT})
|
2020-07-01 17:08:28 +00:00
|
|
|
public @interface StringSettings {}
|
|
|
|
|
2020-09-12 00:46:20 +00:00
|
|
|
@StringDef({DOWNLOAD_USER_FOLDER, FOLDER_SAVE_TO, AUTOPLAY_VIDEOS, SHOW_QUICK_ACCESS_DIALOG, MUTED_VIDEOS,
|
2021-01-17 18:55:14 +00:00
|
|
|
SHOW_CAPTIONS, CUSTOM_DATE_TIME_FORMAT_ENABLED, MARK_AS_SEEN, DM_MARK_AS_SEEN, CHECK_ACTIVITY,
|
2021-03-18 21:00:23 +00:00
|
|
|
CHECK_UPDATES, SWAP_DATE_TIME_FORMAT_ENABLED, PREF_ENABLE_DM_NOTIFICATIONS, PREF_ENABLE_DM_AUTO_REFRESH,
|
|
|
|
FLAG_SECURE})
|
2020-07-01 17:08:28 +00:00
|
|
|
public @interface BooleanSettings {}
|
|
|
|
|
2021-03-13 15:21:31 +00:00
|
|
|
@StringDef({PREV_INSTALL_VERSION, BROWSER_UA_CODE, APP_UA_CODE, PREF_ENABLE_DM_AUTO_REFRESH_FREQ_NUMBER})
|
2020-07-01 17:08:28 +00:00
|
|
|
public @interface IntegerSettings {}
|
|
|
|
}
|