- draft
[#1140] ClearCache action before anything starts
- ClearCache action right after the idle action, clearing out metadata so the sync process can be fully restored from the DB and live blockchain values only.
- InternalSyncProgress removed
- InternalSyncProgressStorage removed
- Sync process control logic updated, controlled by latestScannedHeight and firstUnenhancedHeight only
- cleaned up unused code
[#1140] ClearCache action before anything starts
- ChecksBeforeSyncAction removed
- Offline tests fixed
[#1140] ClearCache action before anything starts
- fixed injection of a wallet birthday, the sync range must start with wallet BD instead of lower bound
[#1140] ClearCache action before anything starts
- Network tests fixed
- DarkSideTests partially fixed
[#1140] ClearCache action before anything starts
- rewind actions extension in compact block processor added
[#1140] ClearCache action before anything starts
- draft
[#1140] ClearCache action before anything starts
- DarkSideTests fixed
[#1140] ClearCache action before anything starts
- SyncRanges modified to be even less dependent on ranges, now it holds just 3 values (latest block height, latest scanned height if any, first unenhanced height if any), the rest is computed on the fly
[#1140] ClearCache action before anything starts
- SyncRanges struct not anymore, refactored to SyncControlData, holding just 3 mentioned values
[#1140] ClearCache action before anything starts
- cleanup
[#1140] ClearCache action before anything starts (#1148)
- TODO solved, the UTXOs fetcher doesn't work with range anymore, therefore reporting 100%
Closes#1111
- `InternalSyncProgress` has now new disk storage implementation:
`InternalSyncProgressDiskStorage`.
- When then `UserDefaults` was used as disk storage there were no IO errors
to handle. But now the code in `InternalSyncProgressDiskStorage`
writes to files and reads from files. So there are errors to handle.
Because of this protocol `InternalSyncProgressStorage` changed a bit
and API of `InternalSyncProgress` changed a bit. Now all the functions
throws.
- It is possible to make progress storage IO errors silent but I think
that storing of the progress is very essential to the sync process. So
I think that when progress storage fails then the sync process should
fail.
- `Initializer` has new parameter `generalStorageURL`. It is directory
where `InternalSyncProgressDiskStorage` stores progress files. In
future this can be used for storing any data the SDK wants.
Closes#1012
- This is the first change for the dependency injection. This change
adds `DIContainer` which is used to register and resolve dependencies.
- Then this change shows how `DIContainer` can be used to resolve
dependencies. And it also shows how to mock dependencies in tests.
- Constructors of `Initializer` are changed to support mocking of
depedendencies. But it doesn't affect public API in any way.
- Depedencies are registered in `Dependencies.setup()`. Then in the code
`container.resolve(SomeType.self)` is called to get instance of the
dependency.
- `ZcashTestCase` class is added. It inherits from `XCTestCase` and
should be used for base class in tests. `ZcashTestCase` takes care of
creation of `DIContainer` for dependencies mocking. In future we can
maybe move there more things that are used in each test.
- Lot is missing here. Not all the code is using dependency injection.
Tests for `DIContainer` are missing. Only `OfflineTests` work now
(other tests can't be even compiled). It will be added in future
changes.