Reduce # of hash calculations in UI OfferBook view #5682
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We can cache an offer payload hash as soon as its
offerFeePaymentTxId
is set. (The payload hash cannot be calculated until the object can be transformed into a protobuf message, which requires a non-nullofferFeePaymentTxId
.)Another benefit is removal of the payload hash argument from the
OfferBookListItem
constructor.Changes include
OfferPayload
Addedtransient byte[] hash
field + getter method (where hash is calculated and cached).OfferBookService
RemovedP2PDataStorage.ByteArray hashOfPayload
parameter fromOfferBookChangedListener
listener methodsonAdded
&onRemoved
. (Hash is cached inOfferPayload
.)P2PDataStorage
Added null check toByteArray
class constructor.OfferBook
Adjusted for change toOfferBookChangedListener
, and removed redundant payload hash null checks.TakeOfferDataModel
andMarketAlerts
Adjusted for change toOfferBookChangedListener
.OfferBookListItem
Removed overloaded constructor with@Nullable P2PDataStorage.ByteArray hashOfPayload
parameter. (Field value is set from cached offer payload hash.)OfferBookViewModelTest
andOfferMaker
Adjusted test and test fixture: do not attempt to create offer payloads without anofferFeePaymentTxId
.Follow up to the last PR in series to support API
editoffer
method.