* [#921] AGP 7.4.2
* Bump AGP to version 8.0.2
- Includes necessary changes
* Gradle and Rust plugin compatibility workaround
* Release build proguard rules
After bumping to the AGP 8.0.2 some new proguard rules are autogenerated and one new for the io.grpc.okhttp.OkHttpChannelProvider is needed
* Plugins compatibility workaround update
* Disable unnecessary benchmark module minification
As we just need to keep the target module obfuscated.
* [#1067] Gradle 8.1.1
* [#1068] Activity Compose 1.7.2
* [#1069] Protobuf
* [#1070] Tracing 1.2.0-rc01
* [#1071] JUnit 5.9.3
* [#1072] Mockito 5.3.1
* Demo app release build timeout increase
- Our latest change (double build due to Rust integration issue) possibly causes our build timeout to exceed with the latest Gradle version
* Dep issue template update
* Fix deprecated Runtime.exec()
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
- We rather use add address method for this use case, as the addresses field does not seem to be initialized with a fixed size at the time of address setting
* [#895] Adopt new Response result
* Change catch flow part
* Correct emit from flow catch
* Additional changes after Block store on disk merged
* Simplify networking model structure
* Enhance flow filter
* Switch to coroutine client in a few tests too
* Use StatusException
* Switch client in a few tests
* Switch client for download block case
* Link fetch UTXOs issue
* Refactor refresh and process UTXOs
* Improve downloadBlockRange logging
* Switch getTAddressTransactions to the Response result
* Move some parts of requests out of try-catch
* Remove link to issue
* Refactor fetchUtxos to return Response
* Throws custom exception from ResponseFailure
- To trigger existing re-try mechanisms in case of any particular trouble
* [#674] Use suspending functions for networking
- Initial commit to set up how we transform to the coroutine version of networking client
* Enhance flow filter
* Switch to coroutine client in a few tests too
* Use StatusException
* Comment out old UI demo app cases
* Switch client in a few tests
* Switch client for download block case
* Remove the blocking networking client entirely
* Link fetch UTXOs issue
* Refactor refresh and process UTXOs
* Improve downloadBlockRange logging
* Remove CompactBlockRepository.write(sequence)
* Remove “Coroutine” prefix
Since we only have a single implementation, the designation shouldn’t matter anymore
* Fix collection bug
* Finish network client renaming
* Collect write results internally
* Write method simplification
* Blocks sync logging reduce
* Unused unsafe models remove
---------
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
* Switch to FsBlockDb for caching CompactBlocks
* Add RustBackend.getLatestHeight() method
* Raise MSRV to 1.60
* Migrate to latest Rust crate API
* Add RustBackend.findBlockMetadata() method
* Add RustBackend.rewindBlockMetadataToHeight() method
* [#765] implementation of FileCompactBlockRepository
* writing block metadata to database
* split write function into smaller easier to test blocks
* testing for FileCompactBlockRepository
* fixed rewinding
* fixed tests
* fixed FileCompactBlockRepositoryTest and SynchronizerFactoryTest
* code review fixes
* updated proto files
* override all functions in FakeRustBackend
* code review fixes
* Fix function body formatting
* Improve clear function clarity
* Use length of string const
* Delete single file instead of directory
* Improve function clarity
* Refactor outputs counting
- Found a typo in intermediary model class JniBlockMeta parameter change of which does not impact encoding from rust to kotlin according to rust layer implementation.
* Check blocks mkdir result
* Remove unnecessary detekt warning suppression
* Refactor buffer size check
* Improve visibility annotations
* Make file finalise obvious and self documenting
* Remove prevHash logging
* Move instantiation to the object itself
* Enrich fixture with default values
* Extend eror message
* Rename benchmark blocks range fixture
* Fix rebase changes
* Improve FileCompactBlockRepositoryTest
- "De-integrated" the test suite - it now works with fixture blocks
- Created needed fixtures for a clear mocked blocks providing
- Enhanced getting of FileCompactBlockRepository in FileCompactBlockRepositoryTest to clarify that it works with mock components
* Fix ktlintFormat findings
* Bump actions/cache from 3.2.4 to 3.2.5 in /.github/actions/setup (#927)
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](627f0f41f6...6998d139dd)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix incorrect dir checking
* More robust min/max checking
* Rewinding to more robust middle value
* Strengthen blocks counts after rewind
* Add check of temp finalized file
* Refactor DatabaseCoordinatorTest
* Rename cache files root directory
- To have the same unified variable name across our repositories - fsBlockDbRoot
* Refactor FileCompactBlockRepositoryTest
- To have these tests more clear
- Fixed FakeRustBackend instantiation bug
* Revert back JniBlockMeta param name
* Delete legacy Cache db files
- Deleted from both the older and the newer legacy locations
- All related db files deleted - rollback files included
- The deletion is run once we try to access the new store blocks on disk root directory
- The deletion check does not throw any exception in case of failure, we just log it in console and try it on the next time
- Related new test added too
* Test refactoring
- Made few changes to improve clarity of provided tests and fixtures
- Prepared few new "failure path" tests
- Enhanced existing tests
* Manual test case
* Simplify error printing
- As we had some commented out code there
* Reset manual tests steps numbering
* [#924] Remove alias from WalletCoordinator
Also make Compose UI the default. The old UI is deprecated but is still used by the benchmarking tests
* Bump benchmark version
* Protect JniBlockMetadata agains minification
* Enable debuggable while benchmarking
* Enhance benchmark screen waiting
* Fix cache db files deletion
- With this construct we delete all blocks blob metadata files, as well as their sqlite file
* Add new benchmark results
* Remove benchmark operations receiver fix
- As it's not needed after the latest profiler dependency update
* Bump gradle/wrapper-validation-action from 1.0.5 to 1.0.6 (#928)
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](55e685c48d...8d49e559aa)
---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump actions/cache from 3.2.5 to 3.2.6 in /.github/actions/setup (#929)
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](6998d139dd...69d9d449ac)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update DatabaseCoordinator.kt
Move if/else out from log message body
* Update Switch cache to store blocks on disk.md
Reset documentation bullets numbering
* Hide internal constants from public package
* Update manual test user with new UI requirement
* Comment out cargo.toml test values
* Inline fixture blocks metadata with its creation
* Switch to FsBlockDb for caching CompactBlocks
* Add RustBackend.getLatestHeight() method
* Raise MSRV to 1.60
* Migrate to latest Rust crate API
* Add RustBackend.findBlockMetadata() method
* Add RustBackend.rewindBlockMetadataToHeight() method
* Update cargo.lock
* Switch to FsBlockDb for caching CompactBlocks
* Migrate to latest Rust crate API
* [#765] implementation of FileCompactBlockRepository
* writing block metadata to database
* split write function into smaller easier to test blocks
* testing for FileCompactBlockRepository
* fixed rewinding
* fixed tests
* fixed FileCompactBlockRepositoryTest and SynchronizerFactoryTest
* code review fixes
* updated proto files
* override all functions in FakeRustBackend
* code review fixes
* Fix function body formatting
* Improve clear function clarity
* Use length of string const
* Delete single file instead of directory
* Improve function clarity
* Refactor outputs counting
- Found a typo in intermediary model class JniBlockMeta parameter change of which does not impact encoding from rust to kotlin according to rust layer implementation.
* Check blocks mkdir result
* Remove unnecessary detekt warning suppression
* Refactor buffer size check
* Improve visibility annotations
* Make file finalise obvious and self documenting
* Remove prevHash logging
* Move instantiation to the object itself
* Enrich fixture with default values
* Extend eror message
* Rename benchmark blocks range fixture
* Fix rebase changes
* Improve FileCompactBlockRepositoryTest
- "De-integrated" the test suite - it now works with fixture blocks
- Created needed fixtures for a clear mocked blocks providing
- Enhanced getting of FileCompactBlockRepository in FileCompactBlockRepositoryTest to clarify that it works with mock components
* Fix ktlintFormat findings
* Fix incorrect dir checking
* More robust min/max checking
* Rewinding to more robust middle value
* Strengthen blocks counts after rewind
* Add check of temp finalized file
* Refactor DatabaseCoordinatorTest
* Rename cache files root directory
- To have the same unified variable name across our repositories - fsBlockDbRoot
* Refactor FileCompactBlockRepositoryTest
- To have these tests more clear
- Fixed FakeRustBackend instantiation bug
* Revert back JniBlockMeta param name
* Delete legacy Cache db files
- Deleted from both the older and the newer legacy locations
- All related db files deleted - rollback files included
- The deletion is run once we try to access the new store blocks on disk root directory
- The deletion check does not throw any exception in case of failure, we just log it in console and try it on the next time
- Related new test added too
* Test refactoring
- Made few changes to improve clarity of provided tests and fixtures
- Prepared few new "failure path" tests
- Enhanced existing tests
* Manual test case
* Simplify error printing
- As we had some commented out code there
* Reset manual tests steps numbering
* Bump benchmark version
* Protect JniBlockMetadata agains minification
* Enable debuggable while benchmarking
* Enhance benchmark screen waiting
* Fix cache db files deletion
- With this construct we delete all blocks blob metadata files, as well as their sqlite file
* Add new benchmark results
* Remove benchmark operations receiver fix
- As it's not needed after the latest profiler dependency update
* Update DatabaseCoordinator.kt
Move if/else out from log message body
* Update Switch cache to store blocks on disk.md
Reset documentation bullets numbering
* Hide internal constants from public package
* Update manual test user with new UI requirement
* Comment out cargo.toml test values
* Inline fixture blocks metadata with its creation
* Update cargo.lock
* Update Cargo.lock
* Check and document JniBlockMeta params ranges
* Add assert for gradle property
* Use UInt internally
uint
* Change array API to list
* Fix for using correct SDK Synchronizer alias
- Only the older Demo-app UI was impacted.
- Thus also our benchmarking was impacted.
* Apply documentation suggestions from code review
Co-authored-by: Kris Nuttycombe <kris@electriccoin.co>
* Final manual test instructions update
* Fixture block hash deterministically generated from block height
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Jack Grigg <jack@electriccoin.co>
Co-authored-by: Jack Grigg <jack@z.cash>
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
Co-authored-by: Kris Nuttycombe <kris@electriccoin.co>
* [#615] Refactor lightwalletd client
This moves the lightwalletd client code to a separate Gradle module, but does not yet do much clean up the public API (e.g. hiding generated GRPC objects). That will be a followon change via #673
I’ve prototyped a safer version of the API that would be implemented for #673 for two specific calls: obtaining the current block height and obtaining the light wallet info. These were the easiest endpoints to update and they provide a useful exploration for the future changes needed.
* Fix benchmarking for networking module
- Moved to fixture and build type check components to the new networking module, so it's accessible from all needed parts of the projects
- Changed fixture return type to fit to all needed usages
* Align with previous review comment
* Fix wrong merge
* Add basic sanity test
- To satisfy tests requirements on emulators.wtf service
* Remove grpc dependency from sdk-lib module
* Repackage cash.z.wallet.sdk.rpc to cash.z.wallet.sdk.internal.rpc
* Fix BuildConfig path
* Update demo-app paths to rpc
* Fix broken grpc services locations
- Our aim here is to change only the local services location (package name), the server location can't be changed due to backward compatibility.
* Enhance GRPC Response model
* Adopt enhanced GRPC response model
- Adopted in a few endpoints
* Enhance Connection failure type
* Add simple fixture test
* Refactor fetchTransaction() to work with Response
- Refactored this server call to adopt our new Response mechanism
- GrpsStatusResolver.resolveFailureFromStatus() now accepts Throwable input
- Added Response.Failure.toThrowable() to satisfy subsequent server calls results processing
- A few other minor refactoring changes
* Remove commented out log
* Unify return type of collection returning methods
- Switched fetchUtxos() to return Sequence instead of List
- Added a check on empty tAddress input
* fetchUtxos returns flow
- Switched fetchUtxos() to return Flow of Service.GetAddressUtxosReply
- Internally it calls getAddressUtxosStream() instead of getAddressUtxos() from GRPC layer
* Update unsafe suffix documentation
* Address several minor change requests
* Remove code parameter
- Removed from the locally triggered failures with default codes.
* Rename local variable
* Switch from empty response to exception
- Our server calls now rather throw IllegalArgumentException than return an empty response
- Removed commented out log message
- Updated javadocs
* Update proto files
- Plus related api changes adoption
* Unify new clients instances name
* AGP 7.4.0 changes
- packagingOptions -> androidComponents in sdk-lib and lightwallet-client-lib modules
* SDK version bump
* Response resolver tests
* Release build upload timeout increase
* Release build upload timeout increase fix
* Revert timeout
- As Github has some infrastructure troubles and we need to wait
* Add migrations documentation
* Sort packaging filters
* Remove private field from public documentation
* Hide private variables
* Remove package from Android Manifest
* Throw exception instead of custom error
- This step unify our approach to validation on client side across all server calls
* Replace setAddresses index const with number
* Fix indentation in proto file
---------
Co-authored-by: Honza <rychnovsky.honza@gmail.com>