summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/base/utils
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2021-11-24 09:26:40 +0000
committercyberta <cyberta@riseup.net>2021-11-24 09:26:40 +0000
commit68ca9c827da3c3fad9e70c74960f113560fd6711 (patch)
treedda6f99c2ef2b222d4f07d0ef80d5d0cc373604e /app/src/main/java/se/leap/bitmaskclient/base/utils
parent9b2b57d8617e60c0b69713e1e5f14dbb8e57c70a (diff)
parente3cd28aa6ef16d9bde179a3e1117cdfa585939a4 (diff)
Merge branch 'simply_secure_UI_changes' into 'master'
Gateway selection UI overhaul Closes #9047 See merge request leap/bitmask_android!140
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/utils')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java20
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java28
2 files changed, 46 insertions, 2 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
index 64b51960..6c242e5a 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
@@ -197,6 +197,26 @@ public class ConfigHelper {
return Calendar.getInstance().get(Calendar.ZONE_OFFSET) / 3600000;
}
+ public static int timezoneDistance(int local_timezone, int remoteTimezone) {
+ // Distance along the numberline of Prime Meridian centric, assumes UTC-11 through UTC+12
+ int dist = Math.abs(local_timezone - remoteTimezone);
+ // Farther than 12 timezones and it's shorter around the "back"
+ if (dist > 12)
+ dist = 12 - (dist - 12); // Well i'll be. Absolute values make equations do funny things.
+ return dist;
+ }
+
+ /**
+ *
+ * @param remoteTimezone
+ * @return a value between 0.1 and 1.0
+ */
+ public static double getConnectionQualityFromTimezoneDistance(int remoteTimezone) {
+ int localTimeZone = ConfigHelper.getCurrentTimezone();
+ int distance = ConfigHelper.timezoneDistance(localTimeZone, remoteTimezone);
+ return Math.max(distance / 12.0, 0.1);
+ }
+
public static String getProviderFormattedString(Resources resources, @StringRes int resourceId) {
String appName = resources.getString(R.string.app_name);
return resources.getString(resourceId, appName);
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java
index 06fb25e9..40b7fc05 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java
@@ -2,7 +2,9 @@ package se.leap.bitmaskclient.base.utils;
import android.content.Context;
import android.content.SharedPreferences;
+
import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
import org.json.JSONException;
import org.json.JSONObject;
@@ -33,8 +35,8 @@ import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_VPN_CERTIFICA
import static se.leap.bitmaskclient.base.models.Constants.RESTART_ON_UPDATE;
import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
import static se.leap.bitmaskclient.base.models.Constants.SHOW_EXPERIMENTAL;
-import static se.leap.bitmaskclient.base.models.Constants.USE_IPv6_FIREWALL;
import static se.leap.bitmaskclient.base.models.Constants.USE_BRIDGES;
+import static se.leap.bitmaskclient.base.models.Constants.USE_IPv6_FIREWALL;
import static se.leap.bitmaskclient.base.models.Constants.USE_TOR;
/**
@@ -229,8 +231,9 @@ public class PreferenceHelper {
return getString(context, PREFERRED_CITY, null);
}
+ @WorkerThread
public static void setPreferredCity(Context context, String city) {
- putString(context, PREFERRED_CITY, city);
+ putStringSync(context, PREFERRED_CITY, city);
}
public static JSONObject getEipDefinitionFromPreferences(SharedPreferences preferences) {
@@ -263,21 +266,42 @@ public class PreferenceHelper {
}
public static long getLong(Context context, String key, long defValue) {
+ if (context == null) {
+ return defValue;
+ }
SharedPreferences preferences = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
return preferences.getLong(key, defValue);
}
public static void putLong(Context context, String key, long value) {
+ if (context == null) {
+ return;
+ }
SharedPreferences preferences = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
preferences.edit().putLong(key, value).apply();
}
public static String getString(Context context, String key, String defValue) {
+ if (context == null) {
+ return defValue;
+ }
SharedPreferences preferences = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
return preferences.getString(key, defValue);
}
+ @WorkerThread
+ public static void putStringSync(Context context, String key, String value) {
+ if (context == null) {
+ return;
+ }
+ SharedPreferences preferences = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
+ preferences.edit().putString(key, value).commit();
+ }
+
public static void putString(Context context, String key, String value) {
+ if (context == null) {
+ return;
+ }
SharedPreferences preferences = context.getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
preferences.edit().putString(key, value).apply();
}