diff --git a/README.md b/README.md index 8be62f9b..d7f65f8d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Aegis is a free, secure and open source 2FA app for Android. - Secure - Encryption (AES-256) - Password (scrypt) - - Fingerprint (Android Keystore) + - Fingerprint (Android Keystore) - Screen capture prevention - Tap to reveal ability - Multiple ways to add new entries diff --git a/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java b/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java index c1f760b8..7d316626 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java +++ b/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java @@ -10,10 +10,10 @@ import android.os.Build; import com.beemdevelopment.aegis.db.DatabaseManager; import com.beemdevelopment.aegis.ui.MainActivity; -import androidx.annotation.RequiresApi; - import java.util.Collections; +import androidx.annotation.RequiresApi; + public class AegisApplication extends Application { private DatabaseManager _manager; private Preferences _prefs; diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index b43640df..0fdbb107 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -11,10 +11,6 @@ public class Preferences { _prefs = PreferenceManager.getDefaultSharedPreferences(context); } - public boolean isDarkModeEnabled() { - return _prefs.getBoolean("pref_dark_mode", false); - } - public boolean isTapToRevealEnabled() { return _prefs.getBoolean("pref_tap_to_reveal", false); } @@ -47,7 +43,6 @@ public class Preferences { return _prefs.getInt("pref_current_sort_category", 0); } - public int getTapToRevealTime() { return _prefs.getInt("pref_tap_to_reveal_time", 30); } @@ -58,7 +53,6 @@ public class Preferences { public void setCurrentTheme(Theme theme) { _prefs.edit().putInt("pref_current_theme", theme.ordinal()).apply(); - } public int getCurrentViewMode() { @@ -67,11 +61,8 @@ public class Preferences { public void setCurrentViewMode(ViewMode viewMode) { _prefs.edit().putInt("pref_current_view_mode", viewMode.ordinal()).apply(); - } - - public int getTimeout() { return _prefs.getInt("pref_timeout", -1); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/SortCategory.java b/app/src/main/java/com/beemdevelopment/aegis/SortCategory.java index 7e6e6bbf..03d7f115 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/SortCategory.java +++ b/app/src/main/java/com/beemdevelopment/aegis/SortCategory.java @@ -13,7 +13,7 @@ public enum SortCategory { ISSUERREVERSED; public static SortCategory fromInteger(int x) { - switch(x) { + switch (x) { case 0: return CUSTOM; case 1: @@ -29,7 +29,7 @@ public enum SortCategory { } public static Comparator getComparator(SortCategory sortCategory) { - switch(sortCategory) { + switch (sortCategory) { case ACCOUNT: case ACCOUNTREVERSED: return new AccountNameComparator(); @@ -43,7 +43,7 @@ public enum SortCategory { } public static boolean isReversed(SortCategory sortCategory) { - switch(sortCategory) { + switch (sortCategory) { case ACCOUNTREVERSED: case ISSUERREVERSED: return true; @@ -65,7 +65,6 @@ public enum SortCategory { return R.id.menu_sort_alphabetically; case ISSUERREVERSED: return R.id.menu_sort_alphabetically_reverse; - default: return R.id.menu_sort_custom; } diff --git a/app/src/main/java/com/beemdevelopment/aegis/Theme.java b/app/src/main/java/com/beemdevelopment/aegis/Theme.java index 13ebd7c9..57f8194c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Theme.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Theme.java @@ -6,7 +6,7 @@ public enum Theme { AMOLED; public static Theme fromInteger(int x) { - switch(x) { + switch (x) { case 0: return LIGHT; case 1: @@ -18,7 +18,7 @@ public enum Theme { } public static String getThemeName(int x) { - switch(x) { + switch (x) { case 0: return "Light theme"; case 1: @@ -30,7 +30,7 @@ public enum Theme { } public static String[] getThemeNames() { - return new String[] { + return new String[]{ "Light theme", "Dark theme", "Amoled theme" diff --git a/app/src/main/java/com/beemdevelopment/aegis/ViewMode.java b/app/src/main/java/com/beemdevelopment/aegis/ViewMode.java index 44d1c6f4..0d61c9d3 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ViewMode.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ViewMode.java @@ -6,7 +6,7 @@ public enum ViewMode { SMALL; public static ViewMode fromInteger(int x) { - switch(x) { + switch (x) { case 0: return NORMAL; case 1: @@ -18,7 +18,7 @@ public enum ViewMode { } public static String getViewModeName(int x) { - switch(x) { + switch (x) { case 0: return "Normal"; case 1: @@ -30,7 +30,7 @@ public enum ViewMode { } public static String[] getViewModeNames() { - return new String[] { + return new String[]{ "Normal", "Compact", "Small" diff --git a/app/src/main/java/com/beemdevelopment/aegis/crypto/CryptoUtils.java b/app/src/main/java/com/beemdevelopment/aegis/crypto/CryptoUtils.java index e4b12230..d5720b54 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/crypto/CryptoUtils.java +++ b/app/src/main/java/com/beemdevelopment/aegis/crypto/CryptoUtils.java @@ -2,6 +2,8 @@ package com.beemdevelopment.aegis.crypto; import android.os.Build; +import org.spongycastle.crypto.generators.SCrypt; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; @@ -24,8 +26,6 @@ import javax.crypto.spec.GCMParameterSpec; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; -import org.spongycastle.crypto.generators.SCrypt; - public class CryptoUtils { public static final String CRYPTO_AEAD = "AES/GCM/NoPadding"; public static final byte CRYPTO_AEAD_KEY_SIZE = 32; diff --git a/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java b/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java index 9e4f45d8..5c5afec0 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java +++ b/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java @@ -2,8 +2,8 @@ package com.beemdevelopment.aegis.crypto.otp; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.security.NoSuchAlgorithmException; import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; diff --git a/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseEntryList.java b/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseEntryList.java index e19f58d8..a0a7c56c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseEntryList.java +++ b/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseEntryList.java @@ -1,7 +1,5 @@ package com.beemdevelopment.aegis.db; -import androidx.annotation.NonNull; - import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; @@ -9,6 +7,8 @@ import java.util.Iterator; import java.util.List; import java.util.UUID; +import androidx.annotation.NonNull; + public class DatabaseEntryList implements Iterable, Serializable { private List _entries = new ArrayList<>(); diff --git a/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseFileCredentials.java b/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseFileCredentials.java index 8b666e49..d4a2d5a4 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseFileCredentials.java +++ b/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseFileCredentials.java @@ -4,11 +4,10 @@ import com.beemdevelopment.aegis.crypto.CryptParameters; import com.beemdevelopment.aegis.crypto.CryptResult; import com.beemdevelopment.aegis.crypto.MasterKey; import com.beemdevelopment.aegis.crypto.MasterKeyException; +import com.beemdevelopment.aegis.db.slots.SlotList; import java.io.Serializable; -import com.beemdevelopment.aegis.db.slots.SlotList; - public class DatabaseFileCredentials implements Serializable { private MasterKey _key; private SlotList _slots; diff --git a/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseManager.java b/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseManager.java index a01d7e8f..641632b6 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseManager.java +++ b/app/src/main/java/com/beemdevelopment/aegis/db/DatabaseManager.java @@ -3,6 +3,9 @@ package com.beemdevelopment.aegis.db; import android.content.Context; import android.os.Environment; +import com.beemdevelopment.aegis.BuildConfig; +import com.beemdevelopment.aegis.R; + import org.json.JSONObject; import java.io.DataInputStream; @@ -15,9 +18,6 @@ import java.util.List; import java.util.TreeSet; import java.util.UUID; -import com.beemdevelopment.aegis.BuildConfig; -import com.beemdevelopment.aegis.R; - public class DatabaseManager { private static final String FILENAME = "aegis.json"; private static final String FILENAME_EXPORT = "aegis_export.json"; diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/FingerprintUiHelper.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/FingerprintUiHelper.java index 49161cf9..69a65c58 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/FingerprintUiHelper.java +++ b/app/src/main/java/com/beemdevelopment/aegis/helpers/FingerprintUiHelper.java @@ -22,12 +22,12 @@ package com.beemdevelopment.aegis.helpers; import android.hardware.fingerprint.FingerprintManager; import android.os.Build; import android.os.CancellationSignal; -import androidx.annotation.RequiresApi; import android.widget.TextView; +import com.beemdevelopment.aegis.R; import com.mattprecious.swirl.SwirlView; -import com.beemdevelopment.aegis.R; +import androidx.annotation.RequiresApi; /** * Small helper class to manage text/icon around fingerprint authentication UI. diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/PermissionHelper.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/PermissionHelper.java index 26b98ed0..5be0ab06 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/PermissionHelper.java +++ b/app/src/main/java/com/beemdevelopment/aegis/helpers/PermissionHelper.java @@ -3,12 +3,13 @@ package com.beemdevelopment.aegis.helpers; import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; import java.util.ArrayList; import java.util.List; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + public class PermissionHelper { private PermissionHelper() { diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/SimpleItemTouchHelperCallback.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/SimpleItemTouchHelperCallback.java index 0856ba71..b5524850 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/SimpleItemTouchHelperCallback.java +++ b/app/src/main/java/com/beemdevelopment/aegis/helpers/SimpleItemTouchHelperCallback.java @@ -1,7 +1,7 @@ package com.beemdevelopment.aegis.helpers; -import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.RecyclerView; public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback { diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/SpinnerHelper.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/SpinnerHelper.java index 93d0d185..cbfbb458 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/SpinnerHelper.java +++ b/app/src/main/java/com/beemdevelopment/aegis/helpers/SpinnerHelper.java @@ -1,12 +1,13 @@ package com.beemdevelopment.aegis.helpers; import android.content.Context; -import androidx.annotation.ArrayRes; import android.widget.ArrayAdapter; import android.widget.Spinner; import java.util.List; +import androidx.annotation.ArrayRes; + public class SpinnerHelper { private SpinnerHelper() { diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/comparators/IssuerNameComparator.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/comparators/IssuerNameComparator.java index 283c97fa..8f48daf6 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/comparators/IssuerNameComparator.java +++ b/app/src/main/java/com/beemdevelopment/aegis/helpers/comparators/IssuerNameComparator.java @@ -1,7 +1,6 @@ package com.beemdevelopment.aegis.helpers.comparators; import com.beemdevelopment.aegis.db.DatabaseEntry; -import com.beemdevelopment.aegis.ui.views.EntryHolder; import java.util.Comparator; @@ -10,4 +9,4 @@ public class IssuerNameComparator implements Comparator { public int compare(DatabaseEntry a, DatabaseEntry b) { return a.getIssuer().compareToIgnoreCase(b.getIssuer()); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/AegisFileImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/AegisFileImporter.java index 27a0f0a7..7adf8486 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/AegisFileImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/AegisFileImporter.java @@ -2,10 +2,6 @@ package com.beemdevelopment.aegis.importers; import android.content.Context; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.db.DatabaseFile; import com.beemdevelopment.aegis.db.DatabaseFileCredentials; @@ -14,6 +10,10 @@ import com.beemdevelopment.aegis.encoding.Base64Exception; import com.beemdevelopment.aegis.otp.OtpInfoException; import com.beemdevelopment.aegis.util.ByteInputStream; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + public class AegisFileImporter extends DatabaseFileImporter { private DatabaseFileCredentials _creds; private DatabaseFile _file; diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/AndOtpFileImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/AndOtpFileImporter.java index b4cedd31..5ebb2012 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/AndOtpFileImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/AndOtpFileImporter.java @@ -2,12 +2,6 @@ package com.beemdevelopment.aegis.importers; import android.content.Context; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.nio.charset.StandardCharsets; - import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.encoding.Base32; import com.beemdevelopment.aegis.encoding.Base32Exception; @@ -18,6 +12,12 @@ import com.beemdevelopment.aegis.otp.SteamInfo; import com.beemdevelopment.aegis.otp.TotpInfo; import com.beemdevelopment.aegis.util.ByteInputStream; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.nio.charset.StandardCharsets; + public class AndOtpFileImporter extends DatabaseFileImporter { private JSONArray _obj; diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseAppImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseAppImporter.java index 9dc02c21..5dca6f16 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseAppImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseAppImporter.java @@ -2,12 +2,9 @@ package com.beemdevelopment.aegis.importers; import android.content.Context; -import com.beemdevelopment.aegis.db.DatabaseEntry; - import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; public abstract class DatabaseAppImporter implements DatabaseImporter { diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseFileImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseFileImporter.java index bcb96bde..cec937f9 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseFileImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseFileImporter.java @@ -2,15 +2,13 @@ package com.beemdevelopment.aegis.importers; import android.content.Context; +import com.beemdevelopment.aegis.util.ByteInputStream; + import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; -import com.beemdevelopment.aegis.db.DatabaseEntry; -import com.beemdevelopment.aegis.util.ByteInputStream; - public abstract class DatabaseFileImporter implements DatabaseImporter { private static Map> _importers; static { diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java index baf5614a..4b408a89 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java @@ -2,10 +2,6 @@ package com.beemdevelopment.aegis.importers; import android.content.Context; -import com.beemdevelopment.aegis.db.DatabaseEntry; - -import java.util.List; - public interface DatabaseImporter { void parse() throws DatabaseImporterException; DatabaseImporterResult convert() throws DatabaseImporterException; diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/FreeOtpFileImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/FreeOtpFileImporter.java index 7965e072..def6af8b 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/FreeOtpFileImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/FreeOtpFileImporter.java @@ -3,6 +3,13 @@ package com.beemdevelopment.aegis.importers; import android.content.Context; import android.util.Xml; +import com.beemdevelopment.aegis.db.DatabaseEntry; +import com.beemdevelopment.aegis.otp.HotpInfo; +import com.beemdevelopment.aegis.otp.OtpInfo; +import com.beemdevelopment.aegis.otp.OtpInfoException; +import com.beemdevelopment.aegis.otp.TotpInfo; +import com.beemdevelopment.aegis.util.ByteInputStream; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -13,13 +20,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import com.beemdevelopment.aegis.db.DatabaseEntry; -import com.beemdevelopment.aegis.otp.HotpInfo; -import com.beemdevelopment.aegis.otp.OtpInfo; -import com.beemdevelopment.aegis.otp.OtpInfoException; -import com.beemdevelopment.aegis.otp.TotpInfo; -import com.beemdevelopment.aegis.util.ByteInputStream; - public class FreeOtpFileImporter extends DatabaseFileImporter { private List _xmlEntries; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java index ba23cba9..3dfafd9e 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java @@ -1,7 +1,6 @@ package com.beemdevelopment.aegis.ui; import android.os.Bundle; -import androidx.appcompat.app.AppCompatActivity; import android.view.WindowManager; import com.beemdevelopment.aegis.AegisApplication; @@ -9,6 +8,8 @@ import com.beemdevelopment.aegis.Preferences; import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.Theme; +import androidx.appcompat.app.AppCompatActivity; + public abstract class AegisActivity extends AppCompatActivity { private AegisApplication _app; @@ -39,11 +40,9 @@ public abstract class AegisActivity extends AppCompatActivity { case LIGHT: setTheme(R.style.AppTheme); break; - case DARK: setTheme(R.style.AppTheme_Dark); break; - case AMOLED: setTheme(R.style.AppTheme_TrueBlack); break; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java index 630633fc..324b9f5a 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java @@ -3,7 +3,6 @@ package com.beemdevelopment.aegis.ui; import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.os.Build; -import androidx.appcompat.app.AlertDialog; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; @@ -14,28 +13,26 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.crypto.KeyStoreHandle; import com.beemdevelopment.aegis.crypto.KeyStoreHandleException; import com.beemdevelopment.aegis.crypto.MasterKey; import com.beemdevelopment.aegis.db.DatabaseFileCredentials; +import com.beemdevelopment.aegis.db.slots.FingerprintSlot; +import com.beemdevelopment.aegis.db.slots.PasswordSlot; +import com.beemdevelopment.aegis.db.slots.Slot; +import com.beemdevelopment.aegis.db.slots.SlotException; +import com.beemdevelopment.aegis.db.slots.SlotList; import com.beemdevelopment.aegis.helpers.EditTextHelper; import com.beemdevelopment.aegis.helpers.FingerprintHelper; import com.beemdevelopment.aegis.helpers.FingerprintUiHelper; import com.beemdevelopment.aegis.ui.tasks.SlotListTask; import com.mattprecious.swirl.SwirlView; -import java.lang.reflect.UndeclaredThrowableException; - import javax.crypto.Cipher; import javax.crypto.SecretKey; -import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.slots.FingerprintSlot; -import com.beemdevelopment.aegis.db.slots.PasswordSlot; -import com.beemdevelopment.aegis.db.slots.Slot; -import com.beemdevelopment.aegis.db.slots.SlotList; -import com.beemdevelopment.aegis.db.slots.SlotException; +import androidx.appcompat.app.AlertDialog; public class AuthActivity extends AegisActivity implements FingerprintUiHelper.Callback, SlotListTask.Callback { private EditText _textPassword; @@ -95,7 +92,7 @@ public class AuthActivity extends AegisActivity implements FingerprintUiHelper.C } } } catch (KeyStoreHandleException | SlotException e) { - throw new UndeclaredThrowableException(e); + throw new RuntimeException(e); } // display a help message if a matching invalidated keystore entry was found diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java b/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java index 2703dbae..bdba9542 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java @@ -14,8 +14,14 @@ import android.widget.EditText; import android.widget.NumberPicker; import android.widget.TextView; +import com.beemdevelopment.aegis.Preferences; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.crypto.KeyStoreHandle; import com.beemdevelopment.aegis.crypto.KeyStoreHandleException; +import com.beemdevelopment.aegis.db.slots.FingerprintSlot; +import com.beemdevelopment.aegis.db.slots.PasswordSlot; +import com.beemdevelopment.aegis.db.slots.Slot; +import com.beemdevelopment.aegis.db.slots.SlotException; import com.beemdevelopment.aegis.helpers.EditTextHelper; import com.beemdevelopment.aegis.helpers.FingerprintHelper; import com.beemdevelopment.aegis.helpers.FingerprintUiHelper; @@ -30,14 +36,6 @@ import javax.crypto.SecretKey; import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; -import com.beemdevelopment.aegis.Preferences; -import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.slots.FingerprintSlot; -import com.beemdevelopment.aegis.db.slots.PasswordSlot; -import com.beemdevelopment.aegis.db.slots.Slot; -import com.beemdevelopment.aegis.db.slots.SlotException; - public class Dialogs { private Dialogs() { @@ -130,8 +128,12 @@ public class Dialogs { boolean equal = EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm); buttonOK.get().setEnabled(equal); } - public void beforeTextChanged(CharSequence c, int start, int count, int after) { } - public void afterTextChanged(Editable c) { } + + public void beforeTextChanged(CharSequence c, int start, int count, int after) { + } + + public void afterTextChanged(Editable c) { + } }; textPassword.addTextChangedListener(watcher); textPasswordConfirm.addTextChangedListener(watcher); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java index 4966196a..f5d0e489 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java @@ -10,9 +10,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; -import androidx.annotation.ArrayRes; -import androidx.appcompat.app.ActionBar; - import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; @@ -30,6 +27,8 @@ import android.widget.TableRow; import com.amulyakhare.textdrawable.TextDrawable; import com.avito.android.krop.KropView; +import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.encoding.Base32; import com.beemdevelopment.aegis.encoding.Base32Exception; import com.beemdevelopment.aegis.helpers.EditTextHelper; @@ -54,10 +53,10 @@ import java.util.List; import java.util.TreeSet; import java.util.concurrent.atomic.AtomicReference; +import androidx.annotation.ArrayRes; +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import de.hdodenhof.circleimageview.CircleImageView; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.db.DatabaseEntry; public class EditEntryActivity extends AegisActivity { private static final int PICK_IMAGE_REQUEST = 0; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/GroupManagerActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/GroupManagerActivity.java index fb06408d..5c08a199 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/GroupManagerActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/GroupManagerActivity.java @@ -4,6 +4,9 @@ import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; +import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.ui.views.GroupAdapter; + import java.text.Collator; import java.util.ArrayList; import java.util.TreeSet; @@ -12,8 +15,6 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.ui.views.GroupAdapter; public class GroupManagerActivity extends AegisActivity implements GroupAdapter.Listener { private GroupAdapter _adapter; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/IntroActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/IntroActivity.java index 17ef1540..2a4f580e 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/IntroActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/IntroActivity.java @@ -2,35 +2,34 @@ package com.beemdevelopment.aegis.ui; import android.content.Intent; import android.os.Bundle; -import androidx.fragment.app.Fragment; import android.view.WindowManager; -import com.github.paolorotolo.appintro.AppIntro2; -import com.github.paolorotolo.appintro.AppIntroFragment; -import com.github.paolorotolo.appintro.model.SliderPage; +import com.beemdevelopment.aegis.Preferences; +import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.db.Database; +import com.beemdevelopment.aegis.db.DatabaseFile; import com.beemdevelopment.aegis.db.DatabaseFileCredentials; +import com.beemdevelopment.aegis.db.DatabaseFileException; +import com.beemdevelopment.aegis.db.DatabaseManager; +import com.beemdevelopment.aegis.db.DatabaseManagerException; +import com.beemdevelopment.aegis.db.slots.FingerprintSlot; +import com.beemdevelopment.aegis.db.slots.PasswordSlot; +import com.beemdevelopment.aegis.db.slots.Slot; +import com.beemdevelopment.aegis.db.slots.SlotException; +import com.beemdevelopment.aegis.db.slots.SlotList; import com.beemdevelopment.aegis.ui.slides.CustomAuthenticatedSlide; import com.beemdevelopment.aegis.ui.slides.CustomAuthenticationSlide; import com.beemdevelopment.aegis.ui.tasks.DerivationTask; +import com.github.paolorotolo.appintro.AppIntro2; +import com.github.paolorotolo.appintro.AppIntroFragment; +import com.github.paolorotolo.appintro.model.SliderPage; import org.json.JSONObject; import javax.crypto.Cipher; import javax.crypto.SecretKey; -import com.beemdevelopment.aegis.Preferences; -import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.DatabaseFileException; -import com.beemdevelopment.aegis.db.DatabaseManagerException; -import com.beemdevelopment.aegis.db.slots.FingerprintSlot; -import com.beemdevelopment.aegis.db.slots.PasswordSlot; -import com.beemdevelopment.aegis.db.slots.Slot; -import com.beemdevelopment.aegis.db.slots.SlotList; -import com.beemdevelopment.aegis.db.Database; -import com.beemdevelopment.aegis.db.DatabaseFile; -import com.beemdevelopment.aegis.db.DatabaseManager; -import com.beemdevelopment.aegis.db.slots.SlotException; +import androidx.fragment.app.Fragment; public class IntroActivity extends AppIntro2 implements DerivationTask.Callback { public static final int RESULT_OK = 0; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index b39c3066..8599712c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -8,11 +8,6 @@ import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.graphics.Rect; - -import com.beemdevelopment.aegis.SortCategory; -import com.beemdevelopment.aegis.ViewMode; -import com.beemdevelopment.aegis.helpers.comparators.IssuerNameComparator; -import com.google.android.material.bottomsheet.BottomSheetDialog; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; @@ -24,23 +19,22 @@ import android.view.animation.DecelerateInterpolator; import android.widget.LinearLayout; import android.widget.Toast; -import com.getbase.floatingactionbutton.FloatingActionsMenu; -import com.beemdevelopment.aegis.db.DatabaseFileCredentials; -import com.beemdevelopment.aegis.helpers.PermissionHelper; -import com.beemdevelopment.aegis.ui.views.EntryListView; - -import java.lang.reflect.UndeclaredThrowableException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.TreeSet; - import com.beemdevelopment.aegis.AegisApplication; import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.DatabaseManagerException; +import com.beemdevelopment.aegis.SortCategory; +import com.beemdevelopment.aegis.ViewMode; import com.beemdevelopment.aegis.db.DatabaseEntry; +import com.beemdevelopment.aegis.db.DatabaseFileCredentials; import com.beemdevelopment.aegis.db.DatabaseManager; +import com.beemdevelopment.aegis.db.DatabaseManagerException; +import com.beemdevelopment.aegis.helpers.PermissionHelper; +import com.beemdevelopment.aegis.ui.views.EntryListView; +import com.getbase.floatingactionbutton.FloatingActionsMenu; +import com.google.android.material.bottomsheet.BottomSheetDialog; + +import java.util.ArrayList; +import java.util.List; +import java.util.TreeSet; import androidx.coordinatorlayout.widget.CoordinatorLayout; @@ -61,12 +55,13 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene private DatabaseManager _db; private boolean _loaded; private String _checkedGroup; - private SortCategory _sortCategory; private Menu _menu; private FloatingActionsMenu _fabMenu; private EntryListView _entryListView; + private boolean _isAnimating; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -177,13 +172,10 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene boolean showAccountName = getPreferences().isAccountNameVisible(); boolean tapToReveal = getPreferences().isTapToRevealEnabled(); int tapToRevealTime = getPreferences().getTapToRevealTime(); - int viewMode = getPreferences().getCurrentViewMode(); _entryListView.setShowAccountName(showAccountName); _entryListView.setTapToReveal(tapToReveal); _entryListView.setTapToRevealTime(tapToRevealTime); - _entryListView.refresh(true); - } } @@ -269,10 +261,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene } private void setSortCategory(SortCategory sortCategory) { - _sortCategory = sortCategory; - - if(sortCategory == SortCategory.CUSTOM) - { + if (sortCategory == SortCategory.CUSTOM) { _entryListView.clearEntries(); loadEntries(); } @@ -293,7 +282,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene if (resultCode == IntroActivity.RESULT_EXCEPTION) { // TODO: user feedback Exception e = (Exception) data.getSerializableExtra("exception"); - throw new UndeclaredThrowableException(e); + throw new RuntimeException(e); } DatabaseFileCredentials creds = (DatabaseFileCredentials) data.getSerializableExtra("creds"); @@ -459,19 +448,15 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene case R.id.menu_sort_alphabetically: sortCategory = SortCategory.ISSUER; break; - case R.id.menu_sort_alphabetically_reverse: sortCategory = SortCategory.ISSUERREVERSED; break; - case R.id.menu_sort_alphabetically_name: sortCategory = SortCategory.ACCOUNT; break; - case R.id.menu_sort_alphabetically_name_reverse: sortCategory = SortCategory.ACCOUNTREVERSED; break; - case R.id.menu_sort_custom: default: sortCategory = SortCategory.CUSTOM; @@ -571,12 +556,10 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene saveDatabase(); } - private boolean isAnimating; - @Override public void onScroll(int dx, int dy) { - if (dy > 0 && _fabMenu.getVisibility() == View.VISIBLE && !isAnimating) { - isAnimating = true; + if (dy > 0 && _fabMenu.getVisibility() == View.VISIBLE && !_isAnimating) { + _isAnimating = true; CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) _fabMenu.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; _fabMenu.animate() @@ -585,12 +568,12 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - isAnimating = false; + _isAnimating = false; _fabMenu.setVisibility(View.INVISIBLE); super.onAnimationEnd(animation); } }).start(); - } else if (dy < 0 && _fabMenu.getVisibility() != View.VISIBLE && !isAnimating) { + } else if (dy < 0 && _fabMenu.getVisibility() != View.VISIBLE && !_isAnimating) { _fabMenu.setVisibility(View.VISIBLE); _fabMenu.animate() .translationY(0) @@ -598,7 +581,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - isAnimating = false; + _isAnimating = false; super.onAnimationEnd(animation); } }).start(); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java index 2c3adb1c..a7a68ee7 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java @@ -10,21 +10,25 @@ import android.content.Intent; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Bundle; -import androidx.appcompat.app.AlertDialog; -import androidx.preference.Preference; - import android.text.TextUtils; -import android.view.Gravity; -import android.view.View; import android.view.Window; import android.view.WindowManager; -import android.widget.AdapterView; import android.widget.Toast; -import com.beemdevelopment.aegis.Preferences; +import com.beemdevelopment.aegis.AegisApplication; +import com.beemdevelopment.aegis.BuildConfig; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.Theme; import com.beemdevelopment.aegis.ViewMode; +import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.db.DatabaseFileCredentials; +import com.beemdevelopment.aegis.db.DatabaseManager; +import com.beemdevelopment.aegis.db.DatabaseManagerException; +import com.beemdevelopment.aegis.db.slots.FingerprintSlot; +import com.beemdevelopment.aegis.db.slots.PasswordSlot; +import com.beemdevelopment.aegis.db.slots.Slot; +import com.beemdevelopment.aegis.db.slots.SlotException; +import com.beemdevelopment.aegis.db.slots.SlotList; import com.beemdevelopment.aegis.helpers.FingerprintHelper; import com.beemdevelopment.aegis.helpers.PermissionHelper; import com.beemdevelopment.aegis.importers.AegisFileImporter; @@ -38,6 +42,7 @@ import com.beemdevelopment.aegis.ui.preferences.SwitchPreference; import com.beemdevelopment.aegis.util.ByteInputStream; import com.google.android.material.snackbar.Snackbar; import com.takisoft.preferencex.PreferenceFragmentCompat; +import com.topjohnwu.superuser.Shell; import java.io.FileNotFoundException; import java.io.IOException; @@ -51,18 +56,8 @@ import java.util.concurrent.atomic.AtomicReference; import javax.crypto.Cipher; -import com.beemdevelopment.aegis.AegisApplication; -import com.beemdevelopment.aegis.BuildConfig; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.db.DatabaseEntry; -import com.beemdevelopment.aegis.db.DatabaseManager; -import com.beemdevelopment.aegis.db.DatabaseManagerException; -import com.beemdevelopment.aegis.db.slots.FingerprintSlot; -import com.beemdevelopment.aegis.db.slots.PasswordSlot; -import com.beemdevelopment.aegis.db.slots.Slot; -import com.beemdevelopment.aegis.db.slots.SlotException; -import com.beemdevelopment.aegis.db.slots.SlotList; -import com.topjohnwu.superuser.Shell; +import androidx.appcompat.app.AlertDialog; +import androidx.preference.Preference; public class PreferencesFragment extends PreferenceFragmentCompat { // activity request codes diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java index 4ff9fe04..07566554 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java @@ -8,19 +8,19 @@ import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.Theme; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.Result; +import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.helpers.SquareFinderView; import com.beemdevelopment.aegis.otp.GoogleAuthInfo; import com.beemdevelopment.aegis.otp.GoogleAuthInfoException; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; import java.util.Collections; import me.dm7.barcodescanner.core.IViewFinder; import me.dm7.barcodescanner.zxing.ZXingScannerView; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.db.DatabaseEntry; import static android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK; import static android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/SlotManagerActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/SlotManagerActivity.java index 28689066..49f15db1 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/SlotManagerActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/SlotManagerActivity.java @@ -2,30 +2,29 @@ package com.beemdevelopment.aegis.ui; import android.content.Intent; import android.os.Bundle; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AlertDialog; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.crypto.KeyStoreHandle; import com.beemdevelopment.aegis.crypto.KeyStoreHandleException; import com.beemdevelopment.aegis.db.DatabaseFileCredentials; +import com.beemdevelopment.aegis.db.slots.FingerprintSlot; +import com.beemdevelopment.aegis.db.slots.PasswordSlot; +import com.beemdevelopment.aegis.db.slots.Slot; +import com.beemdevelopment.aegis.db.slots.SlotException; +import com.beemdevelopment.aegis.db.slots.SlotList; import com.beemdevelopment.aegis.helpers.FingerprintHelper; import com.beemdevelopment.aegis.ui.views.SlotAdapter; import javax.crypto.Cipher; -import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.slots.FingerprintSlot; -import com.beemdevelopment.aegis.db.slots.PasswordSlot; -import com.beemdevelopment.aegis.db.slots.Slot; -import com.beemdevelopment.aegis.db.slots.SlotList; -import com.beemdevelopment.aegis.db.slots.SlotException; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; public class SlotManagerActivity extends AegisActivity implements SlotAdapter.Listener, Dialogs.SlotListener { private DatabaseFileCredentials _creds; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/preferences/SwitchPreference.java b/app/src/main/java/com/beemdevelopment/aegis/ui/preferences/SwitchPreference.java index 0ea96e29..044230e6 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/preferences/SwitchPreference.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/preferences/SwitchPreference.java @@ -2,10 +2,11 @@ package com.beemdevelopment.aegis.ui.preferences; import android.content.Context; import android.os.Build; +import android.util.AttributeSet; + import androidx.annotation.RequiresApi; import androidx.preference.Preference; import androidx.preference.SwitchPreferenceCompat; -import android.util.AttributeSet; public class SwitchPreference extends SwitchPreferenceCompat { private Preference.OnPreferenceChangeListener _listener; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java b/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java index 3b69ea56..5ad075e3 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java @@ -5,8 +5,6 @@ import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.os.Build; import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,23 +12,22 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; -import com.github.paolorotolo.appintro.ISlidePolicy; -import com.github.paolorotolo.appintro.ISlideSelectionListener; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.crypto.KeyStoreHandle; import com.beemdevelopment.aegis.crypto.KeyStoreHandleException; +import com.beemdevelopment.aegis.db.slots.FingerprintSlot; +import com.beemdevelopment.aegis.db.slots.Slot; import com.beemdevelopment.aegis.helpers.EditTextHelper; import com.beemdevelopment.aegis.helpers.FingerprintUiHelper; +import com.github.paolorotolo.appintro.ISlidePolicy; +import com.github.paolorotolo.appintro.ISlideSelectionListener; +import com.google.android.material.snackbar.Snackbar; import com.mattprecious.swirl.SwirlView; -import java.lang.reflect.UndeclaredThrowableException; - import javax.crypto.Cipher; import javax.crypto.SecretKey; -import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.slots.FingerprintSlot; -import com.beemdevelopment.aegis.db.slots.Slot; +import androidx.fragment.app.Fragment; public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiHelper.Callback, ISlidePolicy, ISlideSelectionListener { private int _cryptType; @@ -105,7 +102,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH } key = _storeHandle.generateKey(_fingerSlot.getUUID().toString()); } catch (KeyStoreHandleException e) { - throw new UndeclaredThrowableException(e); + throw new RuntimeException(e); } if (_fingerHelper == null) { @@ -116,7 +113,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH try { _fingerCipher = Slot.createEncryptCipher(key); } catch (Exception e) { - throw new UndeclaredThrowableException(e); + throw new RuntimeException(e); } _fingerHelper.startListening(new FingerprintManager.CryptoObject(_fingerCipher)); break; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticationSlide.java b/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticationSlide.java index 42b89d2d..a64d6a07 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticationSlide.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticationSlide.java @@ -3,8 +3,6 @@ package com.beemdevelopment.aegis.ui.slides; import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,10 +10,12 @@ import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; -import com.github.paolorotolo.appintro.ISlidePolicy; -import com.beemdevelopment.aegis.helpers.FingerprintHelper; - import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.helpers.FingerprintHelper; +import com.github.paolorotolo.appintro.ISlidePolicy; +import com.google.android.material.snackbar.Snackbar; + +import androidx.fragment.app.Fragment; public class CustomAuthenticationSlide extends Fragment implements ISlidePolicy, RadioGroup.OnCheckedChangeListener { public static final int CRYPT_TYPE_INVALID = 0; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/DerivationTask.java b/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/DerivationTask.java index 1973a798..15d68af1 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/DerivationTask.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/DerivationTask.java @@ -2,15 +2,13 @@ package com.beemdevelopment.aegis.ui.tasks; import android.content.Context; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.crypto.CryptoUtils; import com.beemdevelopment.aegis.crypto.SCryptParameters; +import com.beemdevelopment.aegis.db.slots.PasswordSlot; import javax.crypto.SecretKey; -import com.beemdevelopment.aegis.R; - -import com.beemdevelopment.aegis.db.slots.PasswordSlot; - public class DerivationTask extends ProgressDialogTask { private Callback _cb; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/ProgressDialogTask.java b/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/ProgressDialogTask.java index 4aa9608e..deb9a5a5 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/ProgressDialogTask.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/ProgressDialogTask.java @@ -4,9 +4,11 @@ import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Process; -import androidx.annotation.CallSuper; + import com.beemdevelopment.aegis.ui.Dialogs; +import androidx.annotation.CallSuper; + public abstract class ProgressDialogTask extends AsyncTask { private ProgressDialog _dialog; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/SlotListTask.java b/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/SlotListTask.java index ab0cd074..3b4370f8 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/SlotListTask.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/tasks/SlotListTask.java @@ -2,19 +2,17 @@ package com.beemdevelopment.aegis.ui.tasks; import android.content.Context; -import com.beemdevelopment.aegis.crypto.MasterKey; - -import javax.crypto.Cipher; -import javax.crypto.SecretKey; - import com.beemdevelopment.aegis.R; - +import com.beemdevelopment.aegis.crypto.MasterKey; import com.beemdevelopment.aegis.db.slots.FingerprintSlot; import com.beemdevelopment.aegis.db.slots.PasswordSlot; import com.beemdevelopment.aegis.db.slots.Slot; -import com.beemdevelopment.aegis.db.slots.SlotList; import com.beemdevelopment.aegis.db.slots.SlotException; import com.beemdevelopment.aegis.db.slots.SlotIntegrityException; +import com.beemdevelopment.aegis.db.slots.SlotList; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; public class SlotListTask extends ProgressDialogTask { private Callback _cb; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java index 2ed9b493..860902b3 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java @@ -1,14 +1,14 @@ package com.beemdevelopment.aegis.ui.views; -import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.SortCategory; import com.beemdevelopment.aegis.ViewMode; +import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.helpers.ItemTouchHelperAdapter; -import com.beemdevelopment.aegis.helpers.comparators.IssuerNameComparator; import com.beemdevelopment.aegis.otp.HotpInfo; import com.beemdevelopment.aegis.otp.OtpInfo; import com.beemdevelopment.aegis.otp.OtpInfoException; @@ -19,8 +19,7 @@ import java.util.Collections; import java.util.List; import java.util.UUID; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.db.DatabaseEntry; +import androidx.recyclerview.widget.RecyclerView; public class EntryAdapter extends RecyclerView.Adapter implements ItemTouchHelperAdapter { private List _entries; @@ -161,8 +160,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I if (_sortCategory != sortCategory && sortCategory != SortCategory.CUSTOM) { Collections.sort(_shownEntries, SortCategory.getComparator(sortCategory)); - if(SortCategory.isReversed(sortCategory)) - { + if (SortCategory.isReversed(sortCategory)) { Collections.reverse(_shownEntries); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryHolder.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryHolder.java index b9a0c9d1..1f97ccd0 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryHolder.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryHolder.java @@ -3,13 +3,14 @@ package com.beemdevelopment.aegis.ui.views; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.PorterDuff; - -import androidx.recyclerview.widget.RecyclerView; +import android.os.Handler; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.amulyakhare.textdrawable.TextDrawable; +import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.helpers.TextDrawableHelper; import com.beemdevelopment.aegis.helpers.UiRefresher; import com.beemdevelopment.aegis.otp.HotpInfo; @@ -17,9 +18,7 @@ import com.beemdevelopment.aegis.otp.OtpInfo; import com.beemdevelopment.aegis.otp.SteamInfo; import com.beemdevelopment.aegis.otp.TotpInfo; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.db.DatabaseEntry; -import android.os.Handler; +import androidx.recyclerview.widget.RecyclerView; public class EntryHolder extends RecyclerView.ViewHolder { private TextView _profileName; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index 20a72d7f..dad373fc 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -2,27 +2,26 @@ package com.beemdevelopment.aegis.ui.views; import android.content.Context; import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.ItemTouchHelper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.view.animation.LayoutAnimationController; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.SortCategory; import com.beemdevelopment.aegis.ViewMode; +import com.beemdevelopment.aegis.db.DatabaseEntry; import com.beemdevelopment.aegis.helpers.SimpleItemTouchHelperCallback; import com.beemdevelopment.aegis.helpers.UiRefresher; import com.beemdevelopment.aegis.otp.TotpInfo; import java.util.List; -import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.db.DatabaseEntry; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; public class EntryListView extends Fragment implements EntryAdapter.Listener { private EntryAdapter _adapter; @@ -219,6 +218,5 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { void onEntryDrop(DatabaseEntry entry); void onEntryChange(DatabaseEntry entry); void onScroll(int dx, int dy); - } } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupAdapter.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupAdapter.java index 942d2170..8aea6075 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupAdapter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupAdapter.java @@ -4,10 +4,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.beemdevelopment.aegis.R; + import java.util.ArrayList; import androidx.recyclerview.widget.RecyclerView; -import com.beemdevelopment.aegis.R; public class GroupAdapter extends RecyclerView.Adapter { private GroupAdapter.Listener _listener; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupHolder.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupHolder.java index 3d24894d..436a14fa 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupHolder.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/GroupHolder.java @@ -1,12 +1,13 @@ package com.beemdevelopment.aegis.ui.views; -import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.beemdevelopment.aegis.R; +import androidx.recyclerview.widget.RecyclerView; + public class GroupHolder extends RecyclerView.ViewHolder { private TextView _slotName; private ImageView _buttonDelete; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/PeriodProgressBar.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/PeriodProgressBar.java index 7b0c68c2..05969122 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/PeriodProgressBar.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/PeriodProgressBar.java @@ -3,13 +3,14 @@ package com.beemdevelopment.aegis.ui.views; import android.animation.ObjectAnimator; import android.content.Context; import android.os.Build; -import androidx.annotation.RequiresApi; import android.util.AttributeSet; import android.view.animation.LinearInterpolator; import android.widget.ProgressBar; import com.beemdevelopment.aegis.otp.TotpInfo; +import androidx.annotation.RequiresApi; + public class PeriodProgressBar extends ProgressBar { private int _period; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotAdapter.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotAdapter.java index fdf06b60..5c4c102c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotAdapter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotAdapter.java @@ -1,15 +1,16 @@ package com.beemdevelopment.aegis.ui.views; -import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import java.util.ArrayList; - import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.db.slots.Slot; +import java.util.ArrayList; + +import androidx.recyclerview.widget.RecyclerView; + public class SlotAdapter extends RecyclerView.Adapter { private Listener _listener; private ArrayList _slots; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotHolder.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotHolder.java index a3230880..827f266c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotHolder.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/SlotHolder.java @@ -1,21 +1,20 @@ package com.beemdevelopment.aegis.ui.views; -import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.crypto.KeyStoreHandle; import com.beemdevelopment.aegis.crypto.KeyStoreHandleException; -import com.beemdevelopment.aegis.helpers.FingerprintHelper; - -import com.beemdevelopment.aegis.R; - import com.beemdevelopment.aegis.db.slots.FingerprintSlot; import com.beemdevelopment.aegis.db.slots.PasswordSlot; import com.beemdevelopment.aegis.db.slots.RawSlot; import com.beemdevelopment.aegis.db.slots.Slot; +import com.beemdevelopment.aegis.helpers.FingerprintHelper; + +import androidx.recyclerview.widget.RecyclerView; public class SlotHolder extends RecyclerView.ViewHolder { private TextView _slotUsed; diff --git a/app/src/main/res/layout/activity_auth.xml b/app/src/main/res/layout/activity_auth.xml index c397ce8e..ccf628bd 100644 --- a/app/src/main/res/layout/activity_auth.xml +++ b/app/src/main/res/layout/activity_auth.xml @@ -1,6 +1,5 @@