From 383840d7f875bb2447890714c4850da3924a2684 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Fri, 31 Jan 2025 15:07:39 +0100 Subject: persist v5 provider on successful provider setup, ensure introducer is also saved --- .../bitmaskclient/base/utils/PreferenceHelper.java | 24 ++++++++++------------ .../providersetup/ProviderApiManagerV5.java | 1 + .../providersetup/ProviderManager.java | 9 +++++--- 3 files changed, 18 insertions(+), 16 deletions(-) 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 0bf5dfb2..b7c6db5d 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 @@ -71,6 +71,7 @@ import org.json.JSONObject; import java.io.IOException; import java.net.URL; import java.security.GeneralSecurityException; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -212,20 +213,17 @@ public class PreferenceHelper { public static HashMap getCustomProviders() { Set providerDomains = getCustomProviderDomains(); HashMap customProviders = new HashMap<>(); - if (providerDomains.size() > 0) { - for (String domain : providerDomains) { - String mainURL = preferences.getString(Provider.MAIN_URL + "." + domain, null); - if (mainURL != null) { - Introducer introducer = null; - try { - introducer = Introducer.fromUrl(BitmaskCoreProvider.getBitmaskMobile().getIntroducerURLByDomain(domain)); - } catch (Exception e) { - e.printStackTrace(); - } - customProviders.put(mainURL, Provider.createCustomProvider(mainURL, domain, introducer)); + for (String domain : providerDomains) { + String mainURL = preferences.getString(Provider.MAIN_URL + "." + domain, null); + if (mainURL != null) { + Introducer introducer = null; + try { + introducer = Introducer.fromUrl(BitmaskCoreProvider.getBitmaskMobile().getIntroducerURLByDomain(domain)); + } catch (Exception e) { + e.printStackTrace(); } + customProviders.put(mainURL, Provider.createCustomProvider(mainURL, domain, introducer)); } - } return customProviders; @@ -851,7 +849,7 @@ public class PreferenceHelper { @Override public byte[] getByteArray(String s) { - String encodedString = preferences.getString(s, ""); + String encodedString = preferences.getString(s, Arrays.toString(Base64.encode(new byte[0], Base64.DEFAULT))); try { return Base64.decode(encodedString, Base64.DEFAULT); } catch (IllegalArgumentException e) { diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java index 9af14eda..2e2497d5 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java @@ -66,6 +66,7 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro case SET_UP_PROVIDER: result = setupProvider(provider, parameters); if (result.getBoolean(BROADCAST_RESULT_KEY)) { + serviceCallback.saveProvider(provider); eventSender.sendToReceiverOrBroadcast(receiver, PROVIDER_OK, result, provider); } else { eventSender.sendToReceiverOrBroadcast(receiver, PROVIDER_NOK, result, provider); 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 63fbde09..bcb177e2 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java @@ -45,8 +45,11 @@ public class ProviderManager { private boolean addDummyEntry = false; public static ProviderManager getInstance(AssetManager assetsManager) { - if (instance == null) + if (instance == null) { instance = new ProviderManager(assetsManager); + } else { + instance.updateCustomProviders(); + } return instance; } @@ -63,7 +66,7 @@ public class ProviderManager { private ProviderManager(AssetManager assetManager) { this.assetsManager = assetManager; addDefaultProviders(assetManager); - addCustomProviders(); + updateCustomProviders(); } private void addDefaultProviders(AssetManager assetManager) { @@ -117,7 +120,7 @@ public class ProviderManager { } - private void addCustomProviders() { + public void updateCustomProviders() { customProviders = PreferenceHelper.getCustomProviders(); } -- cgit v1.2.3