diff options
author | Marcos Zuriaga <wolfi@wolfi.es> | 2022-07-03 21:10:24 +0300 |
---|---|---|
committer | Marcos Zuriaga <wolfi@wolfi.es> | 2022-07-03 21:10:24 +0300 |
commit | a10d695a8a1f9896dfd6012b0f23056d9898a646 (patch) | |
tree | f82e3b8918b4735187614a1a0ef8c0da2ce9818d | |
parent | 6d45b5871e73992f321b00139e6792b7c31d8263 (diff) | |
parent | 0c9dc41ef40a565a8f846366ac9e9bcb571815c3 (diff) |
Merge branch 'fix-null-pointers'
6 files changed, 54 insertions, 30 deletions
diff --git a/app/src/main/java/es/wolfi/app/passman/activities/LoginActivity.java b/app/src/main/java/es/wolfi/app/passman/activities/LoginActivity.java index fa78add..c6f3ceb 100644 --- a/app/src/main/java/es/wolfi/app/passman/activities/LoginActivity.java +++ b/app/src/main/java/es/wolfi/app/passman/activities/LoginActivity.java @@ -42,6 +42,7 @@ import butterknife.ButterKnife; import butterknife.OnClick; import es.wolfi.app.passman.R; import es.wolfi.app.passman.SettingValues; +import es.wolfi.app.passman.SettingsCache; import es.wolfi.app.passman.SingleTon; import es.wolfi.passman.API.Core; import es.wolfi.utils.KeyStoreUtils; @@ -69,7 +70,8 @@ public class LoginActivity extends AppCompatActivity { setContentView(R.layout.activity_login); ButterKnife.bind(this); - settings = PreferenceManager.getDefaultSharedPreferences(this); + new SettingsCache().loadSharedPreferences(getBaseContext()); + settings = SettingsCache.getSharedPreferences(); KeyStoreUtils.initialize(settings); ton = SingleTon.getTon(); diff --git a/app/src/main/java/es/wolfi/app/passman/activities/PasswordListActivity.java b/app/src/main/java/es/wolfi/app/passman/activities/PasswordListActivity.java index 861ac0d..5fee3fb 100644 --- a/app/src/main/java/es/wolfi/app/passman/activities/PasswordListActivity.java +++ b/app/src/main/java/es/wolfi/app/passman/activities/PasswordListActivity.java @@ -332,7 +332,10 @@ public class PasswordListActivity extends AppCompatActivity implements } // Update the vault record to avoid future loads - ((HashMap<String, Vault>) ton.getExtra(SettingValues.VAULTS.toString())).put(result.guid, result); + HashMap<String, Vault> vaults = (HashMap<String, Vault>) ton.getExtra(SettingValues.VAULTS.toString()); + if (vaults != null) { + vaults.put(result.guid, result); + } ton.addExtra(SettingValues.ACTIVE_VAULT.toString(), result); showActiveVault(); @@ -354,7 +357,7 @@ public class PasswordListActivity extends AppCompatActivity implements getSupportFragmentManager() .beginTransaction() .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_out_left, R.anim.slide_out_left) - .replace(R.id.content_password_list, new VaultLockScreenFragment(), "vault") + .replace(R.id.content_password_list, VaultLockScreenFragment.newInstance(v), "vault") .addToBackStack(null) .commit(); } diff --git a/app/src/main/java/es/wolfi/app/passman/fragments/SettingsFragment.java b/app/src/main/java/es/wolfi/app/passman/fragments/SettingsFragment.java index e9e0b09..29fd1da 100644 --- a/app/src/main/java/es/wolfi/app/passman/fragments/SettingsFragment.java +++ b/app/src/main/java/es/wolfi/app/passman/fragments/SettingsFragment.java @@ -180,12 +180,13 @@ public class SettingsFragment extends Fragment { enable_credential_list_icons_switch.setChecked(settings.getBoolean(SettingValues.ENABLE_CREDENTIAL_LIST_ICONS.toString(), true)); enable_offline_cache_switch.setChecked(settings.getBoolean(SettingValues.ENABLE_OFFLINE_CACHE.toString(), true)); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + Set<Map.Entry<String, Vault>> vaults = getVaultsEntrySet(); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O && vaults != null) { String last_selected_guid = ""; if (settings.getString(SettingValues.AUTOFILL_VAULT_GUID.toString(), null) != null) { last_selected_guid = settings.getString(SettingValues.AUTOFILL_VAULT_GUID.toString(), null); } - Set<Map.Entry<String, Vault>> vaults = getVaultsEntrySet(); + String[] vault_names = new String[vaults.size() + 1]; vault_names[0] = getContext().getString(R.string.automatically); int i = 1; @@ -215,7 +216,7 @@ public class SettingsFragment extends Fragment { private Set<Map.Entry<String, Vault>> getVaultsEntrySet() { HashMap<String, Vault> vaults = (HashMap<String, Vault>) SingleTon.getTon().getExtra(SettingValues.VAULTS.toString()); - return vaults.entrySet(); + return vaults != null ? vaults.entrySet() : null; } @Override @@ -265,22 +266,24 @@ public class SettingsFragment extends Fragment { settings.edit().putString(SettingValues.AUTOFILL_VAULT_GUID.toString(), "").commit(); } else { Set<Map.Entry<String, Vault>> vaults = getVaultsEntrySet(); - for (Map.Entry<String, Vault> vault_entry : vaults) { - if (vault_entry.getValue().name.equals(default_autofill_vault.getSelectedItem().toString())) { - ton.addExtra(SettingValues.AUTOFILL_VAULT_GUID.toString(), vault_entry.getValue().guid); - settings.edit().putString(SettingValues.AUTOFILL_VAULT_GUID.toString(), vault_entry.getValue().guid).commit(); - - Vault.getVault(getContext(), vault_entry.getValue().guid, new FutureCallback<Vault>() { - @Override - public void onCompleted(Exception e, Vault result) { - if (e != null) { - return; + if (vaults != null) { + for (Map.Entry<String, Vault> vault_entry : vaults) { + if (vault_entry.getValue().name.equals(default_autofill_vault.getSelectedItem().toString())) { + ton.addExtra(SettingValues.AUTOFILL_VAULT_GUID.toString(), vault_entry.getValue().guid); + settings.edit().putString(SettingValues.AUTOFILL_VAULT_GUID.toString(), vault_entry.getValue().guid).commit(); + + Vault.getVault(getContext(), vault_entry.getValue().guid, new FutureCallback<Vault>() { + @Override + public void onCompleted(Exception e, Vault result) { + if (e != null) { + return; + } + Vault.updateAutofillVault(result, settings); } - Vault.updateAutofillVault(result, settings); - } - }); + }); - break; + break; + } } } } diff --git a/app/src/main/java/es/wolfi/app/passman/fragments/VaultFragment.java b/app/src/main/java/es/wolfi/app/passman/fragments/VaultFragment.java index ce4e54c..922c076 100644 --- a/app/src/main/java/es/wolfi/app/passman/fragments/VaultFragment.java +++ b/app/src/main/java/es/wolfi/app/passman/fragments/VaultFragment.java @@ -97,7 +97,10 @@ public class VaultFragment extends Fragment { } HashMap<String, Vault> vaults = (HashMap<String, Vault>) SingleTon.getTon().getExtra(SettingValues.VAULTS.toString()); - ArrayList<Vault> l = new ArrayList<Vault>(vaults.values()); + ArrayList<Vault> l = new ArrayList<Vault>(); + if (vaults != null) { + l = new ArrayList<Vault>(vaults.values()); + } recyclerView.setAdapter(new VaultViewAdapter(l, mListener, getParentFragmentManager())); view.findViewById(R.id.add_vault_button).setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/es/wolfi/app/passman/fragments/VaultLockScreenFragment.java b/app/src/main/java/es/wolfi/app/passman/fragments/VaultLockScreenFragment.java index 8a4a612..bb157e9 100644 --- a/app/src/main/java/es/wolfi/app/passman/fragments/VaultLockScreenFragment.java +++ b/app/src/main/java/es/wolfi/app/passman/fragments/VaultLockScreenFragment.java @@ -111,7 +111,6 @@ public class VaultLockScreenFragment extends Fragment { public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ButterKnife.bind(this, view); - vault = (Vault) SingleTon.getTon().getExtra(SettingValues.ACTIVE_VAULT.toString()); Log.e("VaultLockScreenFragment", "Vault guid: ".concat(vault.guid)); vault_name.setText(vault.name); } diff --git a/app/src/main/java/es/wolfi/passman/API/Core.java b/app/src/main/java/es/wolfi/passman/API/Core.java index 30b9321..5acf020 100644 --- a/app/src/main/java/es/wolfi/passman/API/Core.java +++ b/app/src/main/java/es/wolfi/passman/API/Core.java @@ -111,7 +111,12 @@ public abstract class Core { client.setResponseTimeout(getResponseTimeout(c)); client.setMaxRetriesAndTimeout(getConnectRetries(c), getConnectTimeout(c)); client.addHeader("Content-Type", JSON_CONTENT_TYPE); - client.get(host_internal.concat(endpoint), responseHandler); + + try { + client.get(host_internal.concat(endpoint), responseHandler); + } catch (Exception e) { + responseHandler.onFailure(0, null, null, e); + } } public static void requestAPIGET(Context c, String endpoint, final FutureCallback<String> callback) { @@ -122,7 +127,12 @@ public abstract class Core { client.setResponseTimeout(getResponseTimeout(c)); client.setMaxRetriesAndTimeout(getConnectRetries(c), getConnectTimeout(c)); client.addHeader("Content-Type", JSON_CONTENT_TYPE); - client.get(host.concat(endpoint), responseHandler); + + try { + client.get(host.concat(endpoint), responseHandler); + } catch (Exception e) { + responseHandler.onFailure(0, null, null, e); + } } public static void requestAPI(Context c, String endpoint, JSONObject jsonPostData, String requestType, final AsyncHttpResponseHandler responseHandler) @@ -139,12 +149,16 @@ public abstract class Core { StringEntity entity = new StringEntity(jsonPostData.toString()); - if (requestType.equals("POST")) { - client.post(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); - } else if (requestType.equals("PATCH")) { - client.patch(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); - } else if (requestType.equals("DELETE")) { - client.delete(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); + try { + if (requestType.equals("POST")) { + client.post(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); + } else if (requestType.equals("PATCH")) { + client.patch(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); + } else if (requestType.equals("DELETE")) { + client.delete(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); + } + } catch (Exception e) { + responseHandler.onFailure(0, null, null, e); } } |