summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2026-01-24 15:21:55 +0100
committercyberta <cyberta@riseup.net>2026-01-26 14:34:00 +0100
commit3e99c1b6f119cd4f08087aff29f754b85ede21c8 (patch)
tree105ba2d2a36039ba651ae026898689b1a7b0f02b /app/src
parent94eaa148e0785b506b63ff46954b85b83ecd0d13 (diff)
add backwards compatible static getOrDefault method for maps, ensure that the name of v3 proiders are shown correctly in the navigation drawer
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java25
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/MapCompat.java13
2 files changed, 35 insertions, 3 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
index bf3fab04..2a42395f 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
@@ -66,6 +66,7 @@ import io.swagger.client.model.ModelsProvider;
import motd.IStringCollection;
import motd.Motd;
import se.leap.bitmaskclient.BuildConfig;
+import se.leap.bitmaskclient.base.utils.MapCompat;
/**
* @author Sean Leonard <meanderingcode@aetherislands.net>
@@ -509,8 +510,10 @@ public final class Provider implements Parcelable {
// Should we pass the locale in, or query the system here?
String lang = Locale.getDefault().getLanguage();
String name = "";
- if (modelsProvider != null) {
- name = modelsProvider.getName().getOrDefault(lang, modelsProvider.getDefaultLanguage());
+ if (apiVersion < 5) {
+ name = getApiv3Name(lang);
+ } else if (modelsProvider != null) {
+ name = MapCompat.getOrDefault(modelsProvider.getName(), lang, modelsProvider.getDefaultLanguage());
}
if (name == null || name.isEmpty()) {
name = getHostFromUrl(mainUrl);
@@ -519,6 +522,22 @@ public final class Provider implements Parcelable {
return name;
}
+ private String getApiv3Name(String language) {
+ String name = null;
+ if (definition == null) {
+ return null;
+ }
+ try {
+ return definition.getJSONObject(API_TERM_NAME).getString(language);
+ } catch (JSONException e) {
+ try {
+ String defaultLanguage = definition.getString(DEFAULT_LANGUAGE);
+ return definition.getJSONObject(API_TERM_NAME).getString(defaultLanguage);
+ } catch (JSONException ignored) { }
+ }
+ return null;
+ }
+
public String getDescription() {
String lang = Locale.getDefault().getLanguage();
String desc = null;
@@ -533,7 +552,7 @@ public final class Provider implements Parcelable {
}
}
} else if (modelsProvider != null) {
- desc = modelsProvider.getDescription().getOrDefault(lang, modelsProvider.getDescription().get(modelsProvider.getDefaultLanguage()));
+ desc = MapCompat.getOrDefault(modelsProvider.getDescription(), lang, modelsProvider.getDescription().get(modelsProvider.getDefaultLanguage()));
}
return desc;
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/MapCompat.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/MapCompat.java
new file mode 100644
index 00000000..c7be03e3
--- /dev/null
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/MapCompat.java
@@ -0,0 +1,13 @@
+package se.leap.bitmaskclient.base.utils;
+
+import androidx.annotation.NonNull;
+import java.util.Map;
+
+public class MapCompat {
+ public static <K, V> V getOrDefault(@NonNull Map<K, V> map, K key, V defaultValue) {
+ V value;
+ return (((value = map.get(key)) != null) || map.containsKey(key))
+ ? value
+ : defaultValue;
+ }
+}