- Introduced the new material date range picker, to be used in the FilterOptionsDialog to select a date range. This was necessary because the old MaterialDatePicker that was used inside DatePickerFragment is no longer available in the latest version of the Material Components library.
- Added the new Firebase Android BoM (Bill of Materials), to easily manage Firebase libraries: https://firebase.google.com/docs/android/learn-more#bom.
- Updated the Gradle, Google Services and Crashlytics gradle plugins.
- Updated the Navigation architecture component library to the latest stable version, with no big changes required.
- Updated the Lifecycle architecture component library to the latest stable version, along with a bunch of changes related to the deprecation of some methods and the addition of others.
* Enable ViewBinding
- Migrate MainActivity to ViewBinding.
- Migrate HomeFragment to ViewBinding.
* Migrate a batch of Fragments to ViewBinding.
- Migrate BalancesFragment to ViewBinding.
- Migrate CreateAccountFragment to ViewBinding.
- Migrate EReceiptFragment to ViewBinding.
- Migrate FilterOptionsDialog to ViewBinding.
- Migrate HomeFragment to ViewBinding.
* Migrate another batch of Fragments to ViewBinding.
- Migrate ImportBrainkeyFragment to ViewBinding.
- Migrate LicenseFragment to ViewBinding.
- Migrate MerchantsFragment to ViewBinding.
- Migrate NetWorthFragment to ViewBinding.
- Migrate PatternSecurityLockDialog to ViewBinding.
* Migrate final batch of Fragments to ViewBinding.
- Migrate PINSecurityLockScreen to ViewBinding.
- Migrate ReceiveTransactionFragment to ViewBinding.
- Migrate SendTransactionFragment to ViewBinding.
- Migrate SettingsFragment to ViewBinding.
- Migrate TransactionsFragment to ViewBinding.
* Migrate to the kotlin-parcelize plugin.
- Get rid of the deprecated kotlin-android-extensions plugin.
- Added the PDFjet library as a Java Library module to the project and moved all the logic to create the transactions PDF in the TransactionsFragment to use the new PDF lib instead of the old one.
- Fixed the time formatter that was being used to format the transaction's times in exported PDF/CSV files, it was printing months in the place of minutes.
- After a lot of search I found that the issue with the EditText in the PINSecurityLockDialog being hidden below the SoftKeyboard was due to a bug in the ConstraintLayout library.
- Downgraded the appcompat library to v1.1.0-beta01, the v1.1.0 introduced a bug that causes a crash in the WebView in certain devices running Android L.
- Updated a bunch of libraries, fixed a couple of issues, and tested everything else worked correctly.
- Updated both compileSdkVersion and targetSdkVersion to 29 (Android 10).
- Renamed the MerchantsWebservice to BitsyWebservice because it is now going to serve as a source of information of more than just merchants and tellers, but also the nodes the app is gonna connect to.
- Created new NodeRepository which will be in charge of accessing and updating the nodes database table with the information obtained from the webservice.
- Bitsy is now going to try to obtain the list of nodes it is going to try to connect to from the dabatase and use a hardcoded list as a fallback. The list of nodes in the database is updated regularly as well as their respective latency, so that in future app's startups it can use those latencies to immediately connect to the best node in the last app session.
- Added the library dependency to use Kotlin Coroutines with Room.
- Created the Node Room Entity, which will create the nodes database table.
- Created NodeDao, which will be responsible to access the Room entity (nodes database table).
- Created a Room database migration, to create the nodes database table in existing instalations updating to the new version.
- Enabled Kotlin's Parcelize annotation and used it to easily make FilterOptions Parcelable.
- Converted the ServiceGenerator class to Kotlin. This is a helper class that generates instances of Retrofit Services.
- The project had been stale for a couple of months, so a lot of libraries were outdated. I updated most of the outdated libraries and verified everything kept working correctly.
- Simplified the ServiceGenerator, removing some stuff that is not used.