diff options
author | Marcos Zuriaga <wolfi@wolfi.es> | 2022-09-08 16:57:06 +0300 |
---|---|---|
committer | Marcos Zuriaga <wolfi@wolfi.es> | 2022-09-08 16:57:06 +0300 |
commit | 788dd5e5eb22e6a01b8f8a404553268dfbb77420 (patch) | |
tree | 01a817c81aa860c502c0b90ec5d228d0e2a44577 | |
parent | b2d23b726ad94fb4d3d3ee14e229440cd05b5ab6 (diff) | |
parent | ca503ce0154a02a13d0efca2e0ef668042e74aab (diff) |
Merge branch 'general-131-fixes'
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> |