summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2025-01-31 15:07:39 +0100
committercyBerta <cyberta@riseup.net>2025-02-03 16:21:57 +0100
commit383840d7f875bb2447890714c4850da3924a2684 (patch)
tree263f42332004b8e52bf8d0d5c13fc7cf8ac7d2fd
parent5dfe7ac7fa0ed2389dc5615ff9ec599f141dfb58 (diff)
persist v5 provider on successful provider setup, ensure introducer is also saved
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java24
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java1
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java9
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<String, Provider> getCustomProviders() {
Set<String> providerDomains = getCustomProviderDomains();
HashMap<String, Provider> 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();
}