summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
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;
+ }
+}