Commit Graph

48 Commits (9b3e7136bd7fca3f5aee1e42450a2a94f6c73b29)

Author SHA1 Message Date
Alexander Bakker 9b3e7136bd Introduce optional 'name' field for iconpack icons
This introduces a new (optional) 'name' field for iconpack icons. It
will be used to describe the icon in the icon selection dialog. If it is
not present, the name of the icon will be derived from the filename,
like before. Using this new field allows usage of more exotic characters
in the icon name that are not allowed in a filename.
2 years ago
Michael Schättgen 9ff8efab69 Respect system animation setting
Co-authored-by: Alexander Bakker <ab@alexbakker.me>
2 years ago
Alexander Bakker ee15a61403 Prevent the use of MD5 for anything other than mOTP
This forcefully resets any HOTP/TOTP entries that were using MD5 back to
SHA1, because users could only configure this by mistake. No website should be
using it, as the HOTP algorithm was not made to be compatible with the
hash length of MD5.
3 years ago
Alexander Bakker aff441a7ee Include URI in ImportFileTask error messages 3 years ago
Alexander Bakker 84e179f9d3 Add helper to simplify animation end listeners 3 years ago
Alexander Bakker ad77bd687f Add support for predictive back gesture 3 years ago
elena 3441deee64 Add MOTP support 3 years ago
Alexander Bakker 71f2b54deb Use Dagger Hilt for dependency injection
This gets rid of our own janky dependency injection through the AegisApplication class
4 years ago
Alexander Bakker 3d13117752 Refactor Yandex support a bit and fix some style issues 4 years ago
Mikhail Prokofev af2bf6f683 Add Yandex OTP support 4 years ago
modelorona 97f28c6089 add note field to entry 4 years ago
Alexander Bakker 327b7ccbae Perform case changes using Locale.ROOT where applicable
Fixes #777
4 years ago
Alexander Bakker c27c4f0ac5
Merge pull request #760 from michaelschattgen/feature/usage-count
Add usage count to entries
4 years ago
Michael Schättgen 34cd16f240 Add usage count to entries
Update Preferences.java

Fix build error and review improvements
4 years ago
Johannes Henninger df9684a31c Fix blank text in delete dialog for entries with no issuer
Fixes #758
4 years ago
Alexander Bakker e2ddc8a80f Try to guess the MIME type if SAF doesn't provide it
This fixes a crash that would occur if SAF doesn't provide a MIME type
4 years ago
Alexander Bakker ad0088eca6 Don't rely on the intent action to decide whether to block auto lock 4 years ago
Alexander Bakker a5d3de55a2 Add support for selecting SVG icons through the file selection dialog
Fixes #724
4 years ago
Alexander Bakker 4f38988c0d Introduce support for icon packs 4 years ago
Alexander Bakker c7ef10367f Fix an issue where advanced fields were disabled inadvertently 5 years ago
Alexander Bakker 2c8a64f943 Disable some fields if Steam OTP type is selected
Also, move some magic default OTP parameters to constants
5 years ago
Alexander Bakker f4bdf4645b Hide some entry editing settings by default to reduce user confusion 5 years ago
Alexander Bakker 778000aa24 Minor fixes for group chips, remove remnants of filter menu item 5 years ago
Alexander Bakker bda1a1d5af Add a dialog for Aegis' license 5 years ago
Alexander Bakker 22c93bf5c6 Show some additional warning info in the entry deletion dialog
Close #565.
5 years ago
Alexander Bakker 68436fba9c Rewrite layout of EditEntryActivity to not use TableLayout
This prevents excessive overdraw and fixes the UI tests
5 years ago
Alexander Bakker eae31ef94b Switch from Appcompat to Material Components theme
Close #354.
5 years ago
Alexander Bakker 5a9da45a8e Strip " " and "-" when parsing secrets 5 years ago
Alexander Bakker d43e5e04c7 Prevent a crash caused by adding the same entry to the vault twice
This could happen in rare cases where writing the vault to disk failed.
5 years ago
Alexander Bakker a9ccf412e7 Combine ACTION_PICK and ACTION_GET_CONTENT when selecting an icon 5 years ago
Alexander Bakker 08ab8237e7 Improve backup error handling and frequency
This patch improves our backup functionality in a number of ways:
- Only backup the vault when important changes are made, not when the order of
  entries is changed, for instance.
- Don't bubble up backup errors when saving the vault.
- Instead, show an error bar in the main view if the most recent backup attempt
  failed.

<img src="https://alexbakker.me/u/kbhhj2hcgx.png" width="300" />

Clicking on the error bar will take the user to the backup settings.
5 years ago
Alexander Bakker a39d6ab346 Improve icon editing flow
This improves the entry icon editing flow as suggested in #252:
- Add an "Edit icon" menu item
- Save the icon even if the checkmark was not clicked
- Exit icon edit mode with the back button

Close #252.
5 years ago
Alexander Bakker cda78c56c5 Improve overall exception handling and error feedback to the user
The main goals of this patch are to:
- Improve the exception handling in Aegis and the way we present errors messages
  to the user when they occur.
- Write exception stack traces to the log in more places, so that the ADB logs
  we ask for from our users when reporting bugs become more useful.
- Reduce the amount of times we throw a RuntimeException, particularly when an
  Android Keystore operation fails.

Achieving the above goals ended up resulting in a very large refactor. The
intro and unlock flow of the app need to be retested entirely.
5 years ago
Alexander Bakker 301476ff5c Write entries to the vault directly in EditEntryActivity
This makes it so that EditEntryActivity directly saves entries to the vault,
instead of passing them back to MainActivity through an Intent first. This
prevents crashes that can occur when an entry has a large icon and the Bundle
inside the Intent becomes too large.

This is the first part of a series of patches I plan on submitting, where I try
to repair the damage done by my misguided obsession of only touching the global
state in certain places.
5 years ago
Alexander Bakker 0a4a933a2a Rename "profile" text to "entry" 5 years ago
Alexander Bakker 10ac1af6b0 Replace implementations of Base16, Base32 and Base64 with Guava
I kept the classes in the encoding package and turned them into wrappers for
Guava. I also changed the functions in the Base32 class to take and return
strings insteads if character arrays.
6 years ago
Alexander Bakker 5ab4307963 Rename "Database" to "Vault"
We decided on calling the state file the "vault" a while back. This patch makes
the naming consistent across the codebase. I left "DatabaseImporter" classes
alone, because I'm not sure what a better name for those would be.
6 years ago
Alexander Bakker e019fb6db2 Set a default value for period and digits for new entries
This is also in preparation for #24, but I haven't fully figured out how to do
that nicely yet, so that'll come later.
6 years ago
Michael Schättgen 1b5ab33c25 Add way to pass selected group to edit entry activity 6 years ago
Alexander Bakker 2323d89938 Introduce UUIDMap for storing objects that are keyed by a UUID
This patch introduces the new ``UUIDMap`` type, reducing code duplication and
making UUID lookups faster. We currently already use UUIDs as the identifier for
the ``DatabaseEntry`` and ``Slot`` types, but the way lookups by UUID work are
kind of ugly, as we simply iterate over the list until we find a match. As we're
probably going to have more types like this soon (groups and icons, for
example), I figured it'd be good to abstract this away into a separate type and
make it a map instead of a list.

The only thing that has gotten slower is the ``swap`` method. The internal
``LinkedHashMap`` retains insertion order with a linked list, but does not know
about the position of the values, so we basically have to copy the entire map to
simply swap two values. I don't think it's too big of a deal, because swap
operations still take less than a millisecond even with large vaults, but
suggestions for improving this are welcome.

I had to update gradle and JUnit to be able to use the new ``assertThrows``
assertion method, so this patch includes that as well.
6 years ago
Alexander Bakker 9c5726cbca Use glide to load and cache icons
This patch adds a dependency to glide to handle the loading and caching of
icons. In my testing it eliminated the lag previously experienced in the main
activity when quickly scrolling through a large list of entries. It does add an
extra 1MB to the APK size, but I think that's acceptable for the amount of
complexity it handles for us.
6 years ago
Michael Schättgen 3556cd0e66 Add possibility to ignore spaces in EditTexts 6 years ago
Alexander Bakker 9893b2f057 Add support for importing encrypted andOTP backups
This also refactors dialog_newgroup to serve as a generic text input dialog
6 years ago
Alexander Bakker 36e3dd559c Normalize formatting and 'optimize' imports 6 years ago
Alexander Bakker 1dd5f893da Add support for Steam OTP 6 years ago
Michael Schättgen cf4aecbd3e Refactor dark mode to allow multiple themes 6 years ago
Alexander Bakker 066a7447c0 Support an arbitrary number of digits 6 years ago
Alexander Bakker 62425511a1 Rename package to com.beemdevelopment.aegis 7 years ago