Commit graph

47 commits

Author SHA1 Message Date
Michael Schättgen
9ff8efab69 Respect system animation setting
Co-authored-by: Alexander Bakker <ab@alexbakker.me>
2023-08-30 15:07:09 +02:00
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.
2022-12-04 18:49:54 +01:00
Alexander Bakker
aff441a7ee Include URI in ImportFileTask error messages 2022-11-28 18:50:49 +01:00
Alexander Bakker
84e179f9d3 Add helper to simplify animation end listeners 2022-10-12 17:36:46 +02:00
Alexander Bakker
ad77bd687f Add support for predictive back gesture 2022-10-12 17:25:40 +02:00
elena
3441deee64 Add MOTP support 2022-08-07 16:40:08 +01:00
Alexander Bakker
71f2b54deb Use Dagger Hilt for dependency injection
This gets rid of our own janky dependency injection through the AegisApplication class
2022-03-06 13:06:34 +01:00
Alexander Bakker
3d13117752 Refactor Yandex support a bit and fix some style issues 2022-02-02 17:55:09 +01:00
Mikhail Prokofev
af2bf6f683 Add Yandex OTP support 2022-01-26 18:43:55 +03:00
modelorona
97f28c6089 add note field to entry 2021-08-30 10:21:54 +01:00
Alexander Bakker
327b7ccbae Perform case changes using Locale.ROOT where applicable
Fixes #777
2021-06-23 18:06:01 +02:00
Alexander Bakker
c27c4f0ac5
Merge pull request #760 from michaelschattgen/feature/usage-count
Add usage count to entries
2021-06-17 20:04:51 +02:00
Michael Schättgen
34cd16f240 Add usage count to entries
Update Preferences.java

Fix build error and review improvements
2021-06-16 16:22:11 +02:00
Johannes Henninger
df9684a31c Fix blank text in delete dialog for entries with no issuer
Fixes #758
2021-06-04 14:29:53 +02:00
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
2021-05-20 21:46:56 +02:00
Alexander Bakker
ad0088eca6 Don't rely on the intent action to decide whether to block auto lock 2021-05-08 10:42:04 +02:00
Alexander Bakker
a5d3de55a2 Add support for selecting SVG icons through the file selection dialog
Fixes #724
2021-04-14 22:52:00 +02:00
Alexander Bakker
4f38988c0d Introduce support for icon packs 2021-04-07 17:28:08 +02:00
Alexander Bakker
c7ef10367f Fix an issue where advanced fields were disabled inadvertently 2021-02-17 12:59:59 +01:00
Alexander Bakker
2c8a64f943 Disable some fields if Steam OTP type is selected
Also, move some magic default OTP parameters to constants
2021-01-30 16:41:25 +01:00
Alexander Bakker
f4bdf4645b Hide some entry editing settings by default to reduce user confusion 2021-01-27 20:09:53 +01:00
Alexander Bakker
778000aa24 Minor fixes for group chips, remove remnants of filter menu item 2021-01-27 18:24:52 +01:00
Alexander Bakker
bda1a1d5af Add a dialog for Aegis' license 2021-01-27 13:54:11 +01:00
Alexander Bakker
22c93bf5c6 Show some additional warning info in the entry deletion dialog
Close #565.
2021-01-24 14:20:29 +01:00
Alexander Bakker
68436fba9c Rewrite layout of EditEntryActivity to not use TableLayout
This prevents excessive overdraw and fixes the UI tests
2021-01-24 12:53:29 +01:00
Alexander Bakker
eae31ef94b Switch from Appcompat to Material Components theme
Close #354.
2021-01-23 15:23:02 +01:00
Alexander Bakker
5a9da45a8e Strip " " and "-" when parsing secrets 2020-10-24 14:25:10 +02:00
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.
2020-08-15 18:38:24 +02:00
Alexander Bakker
a9ccf412e7 Combine ACTION_PICK and ACTION_GET_CONTENT when selecting an icon 2020-07-15 12:53:16 +02:00
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.
2020-06-14 20:39:09 +02:00
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.
2020-05-24 13:49:30 +02:00
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.
2020-05-09 16:12:38 +02:00
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.
2020-05-06 15:07:19 +02:00
Alexander Bakker
0a4a933a2a Rename "profile" text to "entry" 2020-04-11 14:37:28 +02:00
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.
2020-02-01 14:11:55 +01:00
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.
2019-12-25 19:21:34 +01:00
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.
2019-09-04 23:48:30 +02:00
Michael Schättgen
1b5ab33c25 Add way to pass selected group to edit entry activity 2019-08-31 13:46:18 +02:00
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.
2019-08-03 17:50:25 +02:00
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.
2019-06-25 21:01:50 +02:00
Michael Schättgen
3556cd0e66 Add possibility to ignore spaces in EditTexts 2019-05-21 21:18:01 +02:00
Alexander Bakker
9893b2f057 Add support for importing encrypted andOTP backups
This also refactors dialog_newgroup to serve as a generic text input dialog
2019-05-01 14:42:39 +02:00
Alexander Bakker
36e3dd559c Normalize formatting and 'optimize' imports 2019-04-04 14:07:36 +02:00
Alexander Bakker
1dd5f893da Add support for Steam OTP 2019-04-01 22:37:52 +02:00
Michael Schättgen
cf4aecbd3e Refactor dark mode to allow multiple themes 2019-03-28 00:54:30 +01:00
Alexander Bakker
066a7447c0 Support an arbitrary number of digits 2019-03-26 00:59:51 +01:00
Alexander Bakker
62425511a1 Rename package to com.beemdevelopment.aegis 2019-02-07 22:39:33 +01:00
Renamed from app/src/main/java/me/impy/aegis/ui/EditEntryActivity.java (Browse further)