diff options
Diffstat (limited to 'app/src/main/java/se')
3 files changed, 47 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java index bcb177e2..72341033 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java @@ -140,6 +140,12 @@ public class ProviderManager { return allProviders; } + public List<Provider> getDefaultProviders() { + List<Provider> providers = new ArrayList<>(); + providers.addAll(defaultProviders); + return providers; + } + public int size() { return providers().size(); } diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java index f3da117b..157b582c 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java @@ -61,6 +61,8 @@ public class ProviderSelectionFragment extends BaseSetupFragment implements Canc @Nullable Bundle savedInstanceState) { binding = FProviderSelectionBinding.inflate(inflater, container, false); + binding.tvProviderDescription.setText(viewModel.getGeneralDescription(binding.getRoot().getContext())); + radioButtons = new ArrayList<>(); // add configured providers for (int i = 0; i < viewModel.size(); i++) { diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java index 954c9301..f5bc54e6 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java @@ -70,6 +70,31 @@ public class ProviderSelectionViewModel extends ViewModel { return selected == ADD_PROVIDER || selected == INVITE_CODE_PROVIDER; } + public CharSequence getGeneralDescription(Context context) { + List<Provider> providerList = providerManager.getDefaultProviders(); + StringBuilder builder = new StringBuilder(); + if (providerList.size() < 2) { + // Our string sources expect at least 2 pre-shipped providers + return ""; + } + if (providerList.size() > 2) { + // enumerate all but last provider, comma separated + int penultimateIndex = providerList.size() - 1; + for (int i = 0; i < penultimateIndex; i++) { + builder.append(getProviderNameForGeneralDescription(providerList.get(i))); + if (i + 1 < penultimateIndex) { + builder.append(", "); + } + } + } else { + // exactly 2 providers + builder.append(getProviderNameForGeneralDescription(providerList.get(0))); + } + String arg1 = builder.toString(); + String arg2 = getProviderNameForGeneralDescription(providerList.get(providerList.size() - 1)); + return context.getString(R.string.select_provider_description, arg1, arg2); + } + public CharSequence getProviderDescription(Context context) { if (selected == ADD_PROVIDER) { return context.getText(R.string.add_provider_description); @@ -140,6 +165,20 @@ public class ProviderSelectionViewModel extends ViewModel { return domain; } + private String getProviderNameForGeneralDescription(Provider p) { + if (p == null) { + return ""; + } + String domain = p.getDomain(); + if ("riseup.net".equals(domain) || "black.riseup.net".equals(domain)) { + return "Riseup"; + } + if ("calyx.net".equals(domain)) { + return "Calyx"; + } + return domain; + } + public CharSequence getHint(Context context) { if (selected == ADD_PROVIDER) { return context.getText(R.string.add_provider_prompt); |
