Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcos Zuriaga <wolfi@wolfi.es>2022-09-08 16:57:06 +0300
committerMarcos Zuriaga <wolfi@wolfi.es>2022-09-08 16:57:06 +0300
commit788dd5e5eb22e6a01b8f8a404553268dfbb77420 (patch)
tree01a817c81aa860c502c0b90ec5d228d0e2a44577
parentb2d23b726ad94fb4d3d3ee14e229440cd05b5ab6 (diff)
parentca503ce0154a02a13d0efca2e0ef668042e74aab (diff)
Merge branch 'general-131-fixes'
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialAddFileResponseHandler.java5
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialDeleteResponseHandler.java7
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveForNewVaultResponseHandler.java7
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveResponseHandler.java7
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/CustomFieldFileDeleteResponseHandler.java5
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/FileDeleteResponseHandler.java5
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/VaultDeleteResponseHandler.java7
-rw-r--r--app/src/main/java/es/wolfi/app/ResponseHandlers/VaultSaveResponseHandler.java7
-rw-r--r--app/src/main/java/es/wolfi/app/passman/activities/LoginActivity.java3
-rw-r--r--app/src/main/java/es/wolfi/app/passman/activities/PasswordListActivity.java14
-rw-r--r--app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java2
-rw-r--r--app/src/main/java/es/wolfi/app/passman/adapters/VaultViewAdapter.java4
-rw-r--r--app/src/main/java/es/wolfi/app/passman/fragments/CredentialDisplayFragment.java5
-rw-r--r--app/src/main/java/es/wolfi/app/passman/fragments/SettingsFragment.java2
-rw-r--r--app/src/main/java/es/wolfi/app/passman/fragments/VaultLockScreenFragment.java16
-rw-r--r--app/src/main/java/es/wolfi/passman/API/Vault.java13
-rw-r--r--app/src/main/java/es/wolfi/utils/ProgressUtils.java13
-rw-r--r--app/src/main/res/drawable/ic_baseline_vpn_key_24.xml5
-rw-r--r--app/src/main/res/layout/fragment_vault_lock_screen.xml102
19 files changed, 143 insertions, 86 deletions
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialAddFileResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialAddFileResponseHandler.java
index 708aafd..0df4501 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialAddFileResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialAddFileResponseHandler.java
@@ -38,6 +38,7 @@ import es.wolfi.app.passman.adapters.FileEditAdapter;
import es.wolfi.passman.API.CustomField;
import es.wolfi.passman.API.File;
import es.wolfi.utils.FileUtils;
+import es.wolfi.utils.ProgressUtils;
public class CredentialAddFileResponseHandler extends AsyncHttpResponseHandler {
@@ -97,7 +98,7 @@ public class CredentialAddFileResponseHandler extends AsyncHttpResponseHandler {
} else {
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
});
}
@@ -111,7 +112,7 @@ public class CredentialAddFileResponseHandler extends AsyncHttpResponseHandler {
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
});
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
@Override
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialDeleteResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialDeleteResponseHandler.java
index 673c666..f4e99e3 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialDeleteResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialDeleteResponseHandler.java
@@ -44,6 +44,7 @@ import es.wolfi.app.passman.activities.PasswordListActivity;
import es.wolfi.passman.API.Credential;
import es.wolfi.passman.API.Vault;
import es.wolfi.utils.JSONUtils;
+import es.wolfi.utils.ProgressUtils;
public class CredentialDeleteResponseHandler extends AsyncHttpResponseHandler {
@@ -86,7 +87,7 @@ public class CredentialDeleteResponseHandler extends AsyncHttpResponseHandler {
backStackId = fragmentManager.getBackStackEntryAt(backStackCount - 2).getId();
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
fragmentManager.popBackStack(backStackId, FragmentManager.POP_BACK_STACK_INCLUSIVE);
return;
}
@@ -96,7 +97,7 @@ public class CredentialDeleteResponseHandler extends AsyncHttpResponseHandler {
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
passwordListActivity.runOnUiThread(() -> {
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
});
@@ -105,7 +106,7 @@ public class CredentialDeleteResponseHandler extends AsyncHttpResponseHandler {
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
String response = "";
if (responseBody != null && responseBody.length > 0) {
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveForNewVaultResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveForNewVaultResponseHandler.java
index 48d24c6..8aa4e7f 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveForNewVaultResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveForNewVaultResponseHandler.java
@@ -44,6 +44,7 @@ import es.wolfi.app.passman.R;
import es.wolfi.app.passman.activities.PasswordListActivity;
import es.wolfi.passman.API.Vault;
import es.wolfi.utils.JSONUtils;
+import es.wolfi.utils.ProgressUtils;
public class CredentialSaveForNewVaultResponseHandler extends AsyncHttpResponseHandler {
@@ -94,7 +95,7 @@ public class CredentialSaveForNewVaultResponseHandler extends AsyncHttpResponseH
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
});
}
@@ -116,7 +117,7 @@ public class CredentialSaveForNewVaultResponseHandler extends AsyncHttpResponseH
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
});
@@ -125,7 +126,7 @@ public class CredentialSaveForNewVaultResponseHandler extends AsyncHttpResponseH
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
String response = new String(responseBody);
new Handler(Looper.getMainLooper()).post(new Runnable() {
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveResponseHandler.java
index 7559005..7c6e95b 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/CredentialSaveResponseHandler.java
@@ -44,6 +44,7 @@ import es.wolfi.app.passman.activities.PasswordListActivity;
import es.wolfi.passman.API.Credential;
import es.wolfi.passman.API.Vault;
import es.wolfi.utils.JSONUtils;
+import es.wolfi.utils.ProgressUtils;
public class CredentialSaveResponseHandler extends AsyncHttpResponseHandler {
@@ -86,7 +87,7 @@ public class CredentialSaveResponseHandler extends AsyncHttpResponseHandler {
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
fragmentManager.popBackStack();
return;
}
@@ -96,7 +97,7 @@ public class CredentialSaveResponseHandler extends AsyncHttpResponseHandler {
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
passwordListActivity.runOnUiThread(() -> {
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
});
@@ -105,7 +106,7 @@ public class CredentialSaveResponseHandler extends AsyncHttpResponseHandler {
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
String response = "";
if (responseBody != null && responseBody.length > 0) {
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/CustomFieldFileDeleteResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/CustomFieldFileDeleteResponseHandler.java
index 638912b..4c184eb 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/CustomFieldFileDeleteResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/CustomFieldFileDeleteResponseHandler.java
@@ -34,6 +34,7 @@ import java.util.List;
import es.wolfi.app.passman.R;
import es.wolfi.app.passman.adapters.CustomFieldEditAdapter;
import es.wolfi.passman.API.CustomField;
+import es.wolfi.utils.ProgressUtils;
public class CustomFieldFileDeleteResponseHandler extends AsyncHttpResponseHandler {
@@ -62,7 +63,7 @@ public class CustomFieldFileDeleteResponseHandler extends AsyncHttpResponseHandl
}
});
}
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
@Override
@@ -74,7 +75,7 @@ public class CustomFieldFileDeleteResponseHandler extends AsyncHttpResponseHandl
Toast.makeText(progress.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
});
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
@Override
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/FileDeleteResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/FileDeleteResponseHandler.java
index eabea2e..10a26a9 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/FileDeleteResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/FileDeleteResponseHandler.java
@@ -35,6 +35,7 @@ import java.util.List;
import es.wolfi.app.passman.adapters.FileEditAdapter;
import es.wolfi.app.passman.R;
import es.wolfi.passman.API.File;
+import es.wolfi.utils.ProgressUtils;
public class FileDeleteResponseHandler extends AsyncHttpResponseHandler {
@@ -65,7 +66,7 @@ public class FileDeleteResponseHandler extends AsyncHttpResponseHandler {
}
});
}
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
@Override
@@ -77,7 +78,7 @@ public class FileDeleteResponseHandler extends AsyncHttpResponseHandler {
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
});
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
@Override
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultDeleteResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultDeleteResponseHandler.java
index 384c849..9fe5080 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultDeleteResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultDeleteResponseHandler.java
@@ -43,6 +43,7 @@ import es.wolfi.app.passman.R;
import es.wolfi.app.passman.activities.PasswordListActivity;
import es.wolfi.passman.API.Vault;
import es.wolfi.utils.JSONUtils;
+import es.wolfi.utils.ProgressUtils;
public class VaultDeleteResponseHandler extends AsyncHttpResponseHandler {
@@ -85,7 +86,7 @@ public class VaultDeleteResponseHandler extends AsyncHttpResponseHandler {
Objects.requireNonNull(passwordListActivity).deleteVaultInCurrentLocalVaultList(vault);
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
fragmentManager.popBackStack();
}
return;
@@ -96,7 +97,7 @@ public class VaultDeleteResponseHandler extends AsyncHttpResponseHandler {
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
});
@@ -105,7 +106,7 @@ public class VaultDeleteResponseHandler extends AsyncHttpResponseHandler {
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
String response = "";
if (responseBody != null && responseBody.length > 0) {
diff --git a/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultSaveResponseHandler.java b/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultSaveResponseHandler.java
index 7c8ee0d..5276966 100644
--- a/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultSaveResponseHandler.java
+++ b/app/src/main/java/es/wolfi/app/ResponseHandlers/VaultSaveResponseHandler.java
@@ -43,6 +43,7 @@ import es.wolfi.app.passman.activities.PasswordListActivity;
import es.wolfi.passman.API.Credential;
import es.wolfi.passman.API.Vault;
import es.wolfi.utils.JSONUtils;
+import es.wolfi.utils.ProgressUtils;
public class VaultSaveResponseHandler extends AsyncHttpResponseHandler {
@@ -83,7 +84,7 @@ public class VaultSaveResponseHandler extends AsyncHttpResponseHandler {
localVaultInstance.setName(vault.getName());
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
fragmentManager.popBackStack();
return;
} else {
@@ -124,7 +125,7 @@ public class VaultSaveResponseHandler extends AsyncHttpResponseHandler {
}
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
Toast.makeText(view.getContext(), R.string.error_occurred, Toast.LENGTH_LONG).show();
}
});
@@ -133,7 +134,7 @@ public class VaultSaveResponseHandler extends AsyncHttpResponseHandler {
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
alreadySaving.set(false);
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
String response = "";
if (responseBody != null && responseBody.length > 0) {
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 ba5fc27..9c154e1 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
@@ -62,6 +62,7 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
+import es.wolfi.app.passman.OfflineStorage;
import es.wolfi.app.passman.R;
import es.wolfi.app.passman.SettingValues;
import es.wolfi.app.passman.SingleTon;
@@ -95,6 +96,8 @@ public class LoginActivity extends AppCompatActivity {
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
+ new OfflineStorage(getBaseContext());
+
if (!isNextcloudFilesAppInstalled(this)) {
isLegacyOnly = true;
loadLegacyLogin();
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 61bad4b..07e2380 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
@@ -165,7 +165,7 @@ public class PasswordListActivity extends AppCompatActivity implements
@Override
public void onCompleted(Exception e, Boolean loggedIn) {
// To dismiss the dialog
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
attachClipboardListener();
@@ -267,7 +267,7 @@ public class PasswordListActivity extends AppCompatActivity implements
progress.show();
Vault.getVaults(this, (e, result) -> {
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
if (e != null) {
// Not logged in, restart activity
if (Objects.equals(e.getMessage(), "401")) {
@@ -310,13 +310,13 @@ public class PasswordListActivity extends AppCompatActivity implements
} else {
showUnlockVault();
}
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
} else {
final AppCompatActivity self = this;
Vault.getVault(this, vault.guid, new FutureCallback<Vault>() {
@Override
public void onCompleted(Exception e, Vault result) {
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
if (e != null) {
// Not logged in, restart activity
if (e.getMessage() != null && e.getMessage().equals("401")) {
@@ -489,7 +489,7 @@ public class PasswordListActivity extends AppCompatActivity implements
Vault.getVault(this, vault.guid, new FutureCallback<Vault>() {
@Override
public void onCompleted(Exception e, Vault result) {
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
if (e != null) {
// Not logged in, restart activity
if (e.getMessage() != null && e.getMessage().equals("401")) {
@@ -565,7 +565,7 @@ public class PasswordListActivity extends AppCompatActivity implements
Core.checkLogin(this, false, new FutureCallback<Boolean>() {
@Override
public void onCompleted(Exception e, Boolean loggedIn) {
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
if (loggedIn) {
showVaults();
@@ -736,7 +736,7 @@ public class PasswordListActivity extends AppCompatActivity implements
Toast.makeText(getApplicationContext(), getString(R.string.error_downloading_file), Toast.LENGTH_SHORT).show();
Log.e("FileSave", getString(R.string.error_downloading_file));
}
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
};
item.download(getApplicationContext(), cb);
diff --git a/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java b/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java
index 0f949dc..5f21f08 100644
--- a/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java
+++ b/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java
@@ -194,7 +194,7 @@ public class CustomFieldEditAdapter extends RecyclerView.Adapter<CustomFieldEdit
credential.sendFileDeleteRequest(context, file.getFileId(), responseHandler);
} catch (JSONException e) {
e.printStackTrace();
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
}
} else {
mValues.remove(holder.mItem);
diff --git a/app/src/main/java/es/wolfi/app/passman/adapters/VaultViewAdapter.java b/app/src/main/java/es/wolfi/app/passman/adapters/VaultViewAdapter.java
index 49d76ed..98b9b6e 100644
--- a/app/src/main/java/es/wolfi/app/passman/adapters/VaultViewAdapter.java
+++ b/app/src/main/java/es/wolfi/app/passman/adapters/VaultViewAdapter.java
@@ -113,7 +113,7 @@ public class VaultViewAdapter extends RecyclerView.Adapter<VaultViewAdapter.View
Vault.getVault(context, holder.mItem.guid, new FutureCallback<Vault>() {
@Override
public void onCompleted(Exception e, Vault result) {
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
if (e != null) {
Log.e(TAG, "Unknown network error", e);
@@ -150,7 +150,7 @@ public class VaultViewAdapter extends RecyclerView.Adapter<VaultViewAdapter.View
Vault.getVault(context, holder.mItem.guid, new FutureCallback<Vault>() {
@Override
public void onCompleted(Exception e, Vault result) {
- progress.dismiss();
+ ProgressUtils.dismiss(progress);
if (e != null) {
Log.e(TAG, "Unknown network error", e);
diff --git a/app/src/main/java/es/wolfi/app/passman/fragments/CredentialDisplayFragment.java b/app/src/main/java/es/wolfi/app/passman/fragments/CredentialDisplayFragment.java
index c150c0c..a00b88c 100644
--- a/app/src/main/java/es/wolfi/app/passman/fragments/CredentialDisplayFragment.java
+++ b/app/src/main/java/es/wolfi/app/passman/fragments/CredentialDisplayFragment.java
@@ -127,7 +127,10 @@ public class CredentialDisplayFragment extends Fragment {
if (getArguments() != null) {
Vault v = (Vault) SingleTon.getTon().getExtra(SettingValues.ACTIVE_VAULT.toString());
if (v != null) {
- credential = v.findCredentialByGUID(getArguments().getString(CREDENTIAL));
+ Credential credential = v.findCredentialByGUID(getArguments().getString(CREDENTIAL));
+ if (credential != null) { // credential may have been removed from vault in the meantime
+ this.credential = credential;
+ }
}
}
}
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 45bb1b6..bb70f43 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
@@ -330,7 +330,7 @@ public class SettingsFragment extends Fragment {
settings.edit().putInt(SettingValues.REQUEST_RESPONSE_TIMEOUT.toString(), Integer.parseInt(request_response_timeout_value.getText().toString())).commit();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
- if (default_autofill_vault.getSelectedItem().toString().equals(getContext().getString(R.string.automatically))) {
+ if (default_autofill_vault.getSelectedItem() == null || default_autofill_vault.getSelectedItem().toString().equals(getContext().getString(R.string.automatically))) {
ton.removeExtra(SettingValues.AUTOFILL_VAULT_GUID.toString());
settings.edit().putString(SettingValues.AUTOFILL_VAULT_GUID.toString(), "").commit();
} else {
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 bb157e9..a8b06a4 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
@@ -36,12 +36,12 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import es.wolfi.app.passman.R;
-import es.wolfi.app.passman.SettingValues;
-import es.wolfi.app.passman.SingleTon;
import es.wolfi.passman.API.Vault;
import es.wolfi.utils.KeyStoreUtils;
@@ -64,7 +64,7 @@ public class VaultLockScreenFragment extends Fragment {
@BindView(R.id.fragment_vault_password)
EditText vault_password;
@BindView(R.id.fragment_vault_unlock)
- Button btn_unlock;
+ FloatingActionButton btn_unlock;
@BindView(R.id.vault_lock_screen_chk_save_pw)
CheckBox chk_save;
@@ -110,9 +110,13 @@ public class VaultLockScreenFragment extends Fragment {
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- ButterKnife.bind(this, view);
- Log.e("VaultLockScreenFragment", "Vault guid: ".concat(vault.guid));
- vault_name.setText(vault.name);
+ if (vault != null) {
+ ButterKnife.bind(this, view);
+ Log.e("VaultLockScreenFragment", "Vault guid: ".concat(vault.guid));
+ vault_name.setText(vault.name);
+ } else {
+ Toast.makeText(getContext(), R.string.error_occurred, Toast.LENGTH_SHORT).show();
+ }
}
@Override
diff --git a/app/src/main/java/es/wolfi/passman/API/Vault.java b/app/src/main/java/es/wolfi/passman/API/Vault.java
index 0358d5c..5730aca 100644
--- a/app/src/main/java/es/wolfi/passman/API/Vault.java
+++ b/app/src/main/java/es/wolfi/passman/API/Vault.java
@@ -72,7 +72,7 @@ public class Vault extends Core implements Filterable {
public static Integer[] keyStrengths = {1024, 2048, 4096};
ArrayList<Credential> credentials;
- HashMap<String, Integer> credential_guid;
+ HashMap<String, Integer> credential_guid = new HashMap<>();
private String encryption_key = "";
@@ -182,8 +182,15 @@ public class Vault extends Core implements Filterable {
}
public Credential findCredentialByGUID(String guid) {
- Log.e("Vault", "GUID: ".concat(guid).concat(" Arr pos: ").concat(String.valueOf(credential_guid.get(guid))));
- return credentials.get(credential_guid.get(guid));
+ if (credential_guid != null && guid != null) {
+ Integer arrPos = credential_guid.get(guid);
+
+ Log.e("Vault", "GUID: ".concat(guid).concat(" Arr pos: ").concat(String.valueOf(arrPos)));
+ if (arrPos != null) {
+ return credentials.get(arrPos);
+ }
+ }
+ return null;
}
public Date getLastAccessTime() {
diff --git a/app/src/main/java/es/wolfi/utils/ProgressUtils.java b/app/src/main/java/es/wolfi/utils/ProgressUtils.java
index 647b660..af9c3a0 100644
--- a/app/src/main/java/es/wolfi/utils/ProgressUtils.java
+++ b/app/src/main/java/es/wolfi/utils/ProgressUtils.java
@@ -56,4 +56,17 @@ public class ProgressUtils {
return progress;
}
+
+ /**
+ * Checks if a dialog is shown and calls dismiss() on it if possible
+ *
+ * @param progress progress dialog to dismiss
+ */
+ public static void dismiss(ProgressDialog progress) {
+ if (progress != null) {
+ if (progress.isShowing()) {
+ progress.dismiss();
+ }
+ }
+ }
}
diff --git a/app/src/main/res/drawable/ic_baseline_vpn_key_24.xml b/app/src/main/res/drawable/ic_baseline_vpn_key_24.xml
new file mode 100644
index 0000000..1bdb032
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_vpn_key_24.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M12.65,10C11.83,7.67 9.61,6 7,6c-3.31,0 -6,2.69 -6,6s2.69,6 6,6c2.61,0 4.83,-1.67 5.65,-4H17v4h4v-4h2v-4H12.65zM7,14c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
+</vector>
diff --git a/app/src/main/res/layout/fragment_vault_lock_screen.xml b/app/src/main/res/layout/fragment_vault_lock_screen.xml
index 748e628..1daee42 100644
--- a/app/src/main/res/layout/fragment_vault_lock_screen.xml
+++ b/app/src/main/res/layout/fragment_vault_lock_screen.xml
@@ -20,60 +20,74 @@
*
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin"
- tools:context="es.wolfi.app.passman.fragments.VaultLockScreenFragment">
+ android:layout_height="match_parent">
- <!-- TODO: Update blank fragment layout -->
- <TextView
+ <ScrollView
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/fragment_vault_name"
- tools:text="Vault name"
- android:textAppearance="@style/TextAppearance.AppCompat.Large" />
+ android:layout_height="wrap_content">
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/input_layout_password"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@+id/fragment_vault_name"
- android:paddingTop="@dimen/activity_horizontal_margin">
-
- <EditText
- android:id="@+id/fragment_vault_password"
+ <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:ems="10"
- android:hint="@string/vault_password"
- android:inputType="textPassword">
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingBottom="@dimen/floating_button_parent_padding"
+ tools:context="es.wolfi.app.passman.fragments.VaultLockScreenFragment">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:id="@+id/fragment_vault_name"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.AppCompat.Large"
+ tools:text="Vault name" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/input_layout_password"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="@dimen/activity_horizontal_margin">
- <requestFocus/>
- </EditText>
+ <EditText
+ android:id="@+id/fragment_vault_password"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentStart="true"
+ android:ems="10"
+ android:hint="@string/vault_password"
+ android:inputType="textPassword">
- </com.google.android.material.textfield.TextInputLayout>
+ <requestFocus />
+ </EditText>
- <Button
- android:id="@+id/fragment_vault_unlock"
- style="@style/Button.Primary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentEnd="true"
- android:text="@string/unlock"
- android:theme="@style/Button.Primary"/>
+ </com.google.android.material.textfield.TextInputLayout>
- <CheckBox
- android:text="@string/vault_password_save"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/vault_lock_screen_chk_save_pw"
- android:layout_below="@+id/input_layout_password"
- android:layout_alignParentStart="true" />
+ <CheckBox
+ android:id="@+id/vault_lock_screen_chk_save_pw"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/vault_password_save" />
+ </LinearLayout>
+ </ScrollView>
+
+ <androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="bottom|end">
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/fragment_vault_unlock"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_margin="@dimen/fab_margin"
+ app:backgroundTint="?attr/colorPrimary"
+ app:srcCompat="@drawable/ic_baseline_vpn_key_24" />
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
</RelativeLayout>