diff options
| author | cyberta <cyberta@riseup.net> | 2026-01-24 15:21:55 +0100 |
|---|---|---|
| committer | cyberta <cyberta@riseup.net> | 2026-01-26 14:34:00 +0100 |
| commit | 3e99c1b6f119cd4f08087aff29f754b85ede21c8 (patch) | |
| tree | 105ba2d2a36039ba651ae026898689b1a7b0f02b /app | |
| parent | 94eaa148e0785b506b63ff46954b85b83ecd0d13 (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')
| -rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java | 25 | ||||
| -rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/utils/MapCompat.java | 13 |
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; + } +} |
