Commit Graph

41 Commits (837a27f9d784d138fe0816d978a40e5769333906)

Author SHA1 Message Date
Alexander Bakker fa799e9542 Remind users who use biometrics to enter their password periodically
Instead of showing the reminder after x unlocks, I decided to show the reminder
2 weeks after the vault was last unlocked with the password. Let me know if you
agree with that.

![](https://alexbakker.me/u/115z6be7go.png)
6 years ago
Alexander Bakker ab8f01284a Remove EXTERNAL_STORAGE permissions
As we switched to the SAF, we don't need these permissions anymore.
6 years ago
Alexander Bakker 1ede56e137 Rewrite the export functionality to use the Storage Access Framework
We noticed after the v1.1 release that we need to switch our external storage
access code over to use the Storage Access Framework. The export functionality
was the only piece of code that still used the deprecated method and this patch
addresses that.

The Storage Access Framework is a little annoying to work with, but I don't
think it'll be too painful for our usecase. This switch comes with some nice
benefits for users as well. Users are now able to select a custom storage
location, which can be local or in the cloud.

This also removes ``requestLegacyExternalStorage`` from the manifest, as we
don't need it anymore.
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 3be9aecb88 Replace the custom fingerprint auth UI with BiometricPrompt
This patch replaces the usage of the deprecated FingerprintManager API with
BiometricPrompt. This uses the Android X library, so we get the native biometric
prompt on recent versions of Android and a Google-made one on older versions. By
not working with custom prompts for biometric authentication like we do now, we
can be sure that any issues like #70, #81, #237 are not actually our fault.
Here's what it looks like:

![](https://alexbakker.me/u/b2rmf3x0b9.jpeg)

As a nice aside, this also adds support for the new facial recognition as an
authentication method on Pixel 4 phones.

This is still a draft, but early feedback is welcome.
6 years ago
Michael Schättgen be3f30e666 Add minor text improvement 6 years ago
Michael Schättgen 63b0f6bb99
Merge pull request #220 from alexbakker/highlight-entry
Add the option to highlight entries when tapped
6 years ago
Alexander Bakker 51a0a16afb Add the option to highlight entries when tapped
This adds an option to highlight tapped entries, so that it's easier to
distinguisch between the one you're trying to enter into a website and the other
ones.

Only one entry can be highlighted at a time. Perhaps it would make sense to
change our tap to reveal functionality to behave the same, so that the two
features are nicely in sync. I can address that in a separate PR if we decide to
do so.
6 years ago
Alexander Bakker e58dec35c0 Target API 29, update gradle and update the dependencies
This also fixes an issue with the use of the Iconics library where it was
initialized twice. I also removed the dependency to [AndroidX Preference
eXtended](https://github.com/takisoft/preferencex-android), as there don't seem
to be any issues with using the vanilla AndroidX preference library anymore.
6 years ago
Michael Schättgen 445410fcd7 Add ability to search in account names 6 years ago
Alexander Bakker 7af78b11f5
Merge pull request #192 from michaelschattgen/feature-fixbackpress
Add temporary backpress fix
6 years ago
Michael Schättgen a7e1a88dc8 Add temporary backpress fix 6 years ago
Alexander Bakker 79279630ba Fix all linter errors
Well almost all, just ignore missing translation errors
6 years ago
Michael Schättgen c774796422 Change auto lock preference visibility behaviour 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
Michael Schättgen 6769fefd00
Merge pull request #106 from alexbakker/feature-import-freeotp+
Add support for importing from FreeOTP+
6 years ago
Michael Schättgen 37c9b033c5
Merge pull request #141 from alexbakker/pref-lang
Add a language option to the preference menu
6 years ago
Michael Schättgen 1f5a46b883 Add notification to warn user about the unlock state
Clean up code

Add minor changes
6 years ago
Alexander Bakker b014d95005 Add a language option to the preference menu 6 years ago
Alexander Bakker d7093487dd Add support for importing from FreeOTP+
This also includes some other small changes:
- Make FreeOtpImporter more reusable
- Refactor preference file parsing logic into a separate class
- Add support for importing Steam tokens from FreeOTP(+)
- Make FileReader a bit leaner
- Add some missing @Override annotations
6 years ago
Alexander Bakker 4066cd83cc Limit the amount of entry info passed to SelectEntriesActivitiy
This horrid patch changes the vault import logic to pass an ImportEntry list to
SelectEntriesActivity, instead of a DatabaseEntry list. Previously, a crash
would occur when importing a vault with lots of icons, because the maximum
Parcel size was exceeded.

Storing icons in the vault file was a bad idea.
6 years ago
Alexander Bakker 6d26d1beb0 Fix the last couple of sorting bugs (#77)
This fixes the following bugs:
- Sort category is forgotten after lock/unlock
- The sort mode is not respected for new entries

I got a little carried away while working on this patch and also included the
following other enhancements:
- Simplify the SortCategory, Theme and ViewMode enums
- Simplify usage of string resources
- Don't call notifyDataSetChanged and runLayoutAnimation unnecessarily
6 years ago
Alexander Bakker 47df8968c7 Refactor database importer logic
Summary:
- Combine app and file importers into one type
- Split encrypted and plain text file logic into separate DatabaseImporter.State
  classes
- Add an abstract FileReader class that can handle reading from apps and files

The idea is that every importer implements its own UI logic to obtain
credentials for decryption through a dialog. Aegis databases are still an
exception to this rule as it still uses an Activity to ask for credentials. This
will be addressed in a future patch.

As a result of this change all app importers are now also available under
"Import from file".
6 years ago
Michael Schättgen 21fd8fdd8d Add ability to select entries when importing
Move onScroll to seperate class to avoid duplicate code

Move importing logic back to the PreferencesFragment

Add minor changes

Add ImportEntry to properly track checked states

Minor layout changes
6 years ago
Michael Schättgen b41e328d22 Add ability to translate themes and viewmodes
Closes #50
7 years ago
Alexander Bakker 0563ac917a Fix some rare crashes when restoring the app after termination
Also fixes an issue where the app shortcuts would not work for unencrypted vaults
7 years ago
Alexander Bakker 14fa493ac9 Remove keys from the KeyStore when disabling encryption or fingerprint 7 years ago
Alexander Bakker 36e3dd559c Normalize formatting and 'optimize' imports 7 years ago
Alexander Bakker a251685002 Add a dialog that displays a list of errors that occurred during import 7 years ago
Alexander Bakker 1dd5f893da Add support for Steam OTP 7 years ago
Michael Schättgen a46640f43d Fix recreate when setting view mode 7 years ago
Michael Schättgen f3ed79dc71 Add ability to change view mode 7 years ago
Alexander Bakker 592c6683c3 Continue importing entries even if one can't be parsed 7 years ago
Michael Schättgen a4ff9d6d31 Fix crash in API 19 7 years ago
Michael Schättgen f7c32bc28b Improve theme based texts 7 years ago
Michael Schättgen a7ac1adb80 Convert dark mode preference to select theme preference 7 years ago
Michael Schättgen cebf15ba44 Add ability to adjust tap to reveal timeout 7 years ago
Michael Schättgen 0e6828fae1 Add ability to tap to reveal codes 👀 7 years ago
Alexander Bakker ad1d3f04a6 Add support for importing from Google Authenticator
Close #29
7 years ago
Alexander Bakker dc742892e4 Make import errors a bit more specific 7 years ago
Alexander Bakker 62425511a1 Rename package to com.beemdevelopment.aegis 7 years ago