Commit graph

17680 commits

Author SHA1 Message Date
Gabriel Bernard
f4368b3185
Merge pull request #6675 from HenrikJannsen/clone_offer_with_shared_maker_fee
Add feature for cloning an offer with shared maker fee
2023-05-25 11:08:08 +00:00
Alejandro García
9abd5a9150
Merge pull request #6712 from HenrikJannsen/ignore_field_for_equals_and_hashcode
Exclude mostRecentAddress from EqualsAndHashCode
2023-05-25 09:35:34 +00:00
HenrikJannsen
93ba24aabb
Exclude mostRecentAddress from EqualsAndHashCode
The getter was called by EqualsAndHashCode which throws an exception as it is is not intended to get used anymore.

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-25 00:52:53 +02:00
Alejandro García
df6fe57423
Merge pull request #6708 from helixx87/refactor-radio
Refactor "remove radio" logic in JFXRadioButtonSkinBisqStyle
2023-05-23 09:06:15 +00:00
Alejandro García
25908771c7
Merge pull request #6705 from HenrikJannsen/remove_sleep_warning_popup
Remove warning popup when UI thread is blocked for > 20 sec.
2023-05-23 09:05:42 +00:00
Alejandro García
ad2908b2fc
Merge pull request #6702 from HenrikJannsen/cleanup_date_check
Remove date check
2023-05-23 09:05:09 +00:00
Alejandro García
91e10d4970
Merge pull request #6701 from HenrikJannsen/remove_activation_date_for_distributed_BM
Remove BurningManService.isActivated and apply changed to client code.
2023-05-23 09:04:25 +00:00
Alejandro García
1fa637ce4a
Merge pull request #6700 from HenrikJannsen/fix-bm-receive-address-selection
Fix BM receive address selection
2023-05-23 09:03:42 +00:00
HenrikJannsen
1cbdf043cd
Fix bug with selection of account combobox
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-22 19:17:22 +02:00
HenrikJannsen
114af3fef4
Add link to wiki
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-21 19:33:50 +02:00
helixx87
8d7af70fad
Refactor "remove radio" logic in JFXRadioButtonSkinBisqStyle 2023-05-20 14:37:23 +02:00
HenrikJannsen
a7ade008d0
Do not reset content in case the currentTab is editOpenOfferTab, duplicateOfferTab or cloneOpenOfferTab
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-20 08:34:46 +02:00
HenrikJannsen
dbd1098ebb
Add isCloneOfferViewActivated flag to avoid repeated code execution in doActivate.
Do not create a new observableArrayList in filterPaymentAccounts.

The reason why the wrong account gets selected is not completely clear to me. The selection handler gets called when the combobox gets filled and that overwrites the selected account from the data. It seems that the new observableArrayList in filterPaymentAccounts triggered that un-expected behaviour.
2023-05-20 08:31:52 +02:00
HenrikJannsen
8c37ddd57b
Use trigger price from model instead from sourceOpenOffer
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-20 06:36:38 +02:00
HenrikJannsen
4475857db3
Remove popup when UI thread is blocked for > 20 sec.
Fixes https://github.com/bisq-network/bisq/issues/6703

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 16:42:27 +07:00
HenrikJannsen
3cd164588c
Remove USE_FEE_FROM_FILTER_ACTIVATION_DATE and new Date().before(USE_FEE_FROM_FILTER_ACTIVATION_DATE) as it would always be false
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 13:42:08 +07:00
HenrikJannsen
0327872550
Remove BurningManService.isActivated and apply changed to client code.
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 13:36:40 +07:00
HenrikJannsen
92f1c86687
Change activation date to July 15th
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 13:10:26 +07:00
HenrikJannsen
bf325938d5
Add getMostRecentAddress with throwing a UnsupportedOperationException to make sure the old field is not used anymore from any client.
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 13:08:34 +07:00
HenrikJannsen
95023216ec
Use new getReceiverAddress methods instead of getMostRecentAddress
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 13:05:36 +07:00
HenrikJannsen
7253411b79
Add new field receiverAddress to BurningManCandidate.
Implement new selection algorithm.
Add methods for accessing the receiverAddress (not used yet, but will be used in next commits)

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 12:58:40 +07:00
HenrikJannsen
694e101646
Add isCustomAddress to CompensationModel
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 12:54:56 +07:00
HenrikJannsen
6a649416c2
Refactor code for assigning address for better to make it more clear when we use the custom address and when the change address.
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 12:53:59 +07:00
HenrikJannsen
658a01e5ae
Refactoring: Rename HOTFIX_ACTIVATION_DATE to BUGFIX_6699_ACTIVATION_DATE,
isHotfixActivated to isBugfix6699Activated,
wasHotfixActivatedAtTradeDate to wasBugfix6699ActivatedAtTradeDate

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 12:45:26 +07:00
HenrikJannsen
23156a3286
Remove handling of isHotfixActivated in getReceivers method.
We still keep the parameter as it will be reused later for the new bugfix

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 12:41:17 +07:00
Alejandro García
ac8ad24807
Merge pull request #6697 from stejbac/speed-up-burningman-and-statistics-view-loads
Speed up burningman and statistics view loads
2023-05-16 15:53:44 +00:00
Alejandro García
b1716d5f52
Merge pull request #6696 from alvasw/gradle_centralize_test_setup
Centralize Gradle Test Setup
2023-05-13 16:24:21 +00:00
Alejandro García
e442483642
Merge pull request #6695 from alvasw/enable_tests
Re-enable all tests
2023-05-13 16:24:05 +00:00
Alva Swanson
52ab467a65
Remove redundant 'useJUnitPlatform()' declarations 2023-05-13 23:05:04 +07:00
Alva Swanson
796205c7a6
Remove redundant 'testRuntimeOnly libs.junit.jupiter.engine' 2023-05-13 23:05:04 +07:00
Alva Swanson
ec7755a09f
Re-enable all tests
Relates to #6619
2023-05-13 23:03:49 +07:00
HenrikJannsen
13f7b39fbd
Do not show BSQ accounts in CloneOfferView
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-13 22:55:03 +07:00
HenrikJannsen
4262e91f1f
Reapply original code from @jmacxx in AddressEntryList
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-13 22:45:39 +07:00
Alejandro García
a3f2d6e439
Merge pull request #6694 from alvasw/fix_broken_protected_storage_entry_test
Fix broken ProtectedStorageEntryTest
2023-05-13 15:35:04 +00:00
Alejandro García
0cec85a00a
Merge pull request #6693 from alvasw/fix_broken_p2p_data_storage_persistable_network_payload_test
Fix broken P2PDataStoragePersistableNetworkPayloadTest
2023-05-13 15:34:23 +00:00
Alejandro García
2a79370bb9
Merge pull request #6692 from alvasw/fix_broken_coin_util_test_test_get_adjusted_amount
core: Fix broken CoinUtilTest.testGetAdjustedAmount
2023-05-13 15:33:30 +00:00
Alejandro García
ef4c855580
Merge pull request #6691 from alvasw/fix_broken_price_test_test_parse
core: Fix broken PriceTest.testParse test
2023-05-13 15:32:56 +00:00
Alejandro García
b0f94509c7
Merge pull request #6676 from alvasw/add_bisq2_tor_gradle_plugin
Add bisq2 Gradle Tor Plugin
2023-05-13 15:32:07 +00:00
HenrikJannsen
b11511e037
Do not use sourceOfferPayload for extraDataMap
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-13 22:15:38 +07:00
Alva Swanson
e94da0d74f
core: Fix broken CoinUtilTest.testGetAdjustedAmount
Relates to #6619
2023-05-13 14:09:34 +07:00
HenrikJannsen
e6dc26a26a
Further restrict cloning
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-12 21:02:19 +07:00
HenrikJannsen
63ca40db5c
Remove code for adjusting the security deposit.
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-12 19:30:27 +07:00
HenrikJannsen
f843345dcc
Use sourceOfferPayload when cloning the OfferPayload for the fields which must not get changed (like security deposit could get adjusted by the UI).
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-12 19:26:32 +07:00
Steven Barclay
f0b011e0ac
Optimise Price.getVolumeByAmount to speed up USD & BSQ conversions
Short circuit the BigInteger arithmetic in 'AltcoinExchangeRate' &
'org.bitcoinj.utils.ExchangeRate' (from which the former is adapted), by
using ordinary long arithmetic when it is guaranteed not to overflow due
to the two quantities to be multiplied fitting in an int. This will be
the case most of the time. Also remove duplicated logic, to ensure that
all conversions of BTC amounts to volumes happen via the 'Price'
instance methods, so that the optimisation always applies.

In particular, this speeds up the BTC -> BSQ conversions in the burning
man view, as well as the USD price calculations for the candles in the
trades charts view via 'TradeStatistics3.getTradeVolume()'.

Additionally, fix the lazy initialisation pattern in TradeStatistics3 to
ensure that it is thread safe (that is, it only has benign data races),
by making it of the form:

  Foo foo = this.foo;
  if (foo == null) {
      this.foo = foo = computeFoo();
  }
  return foo;

This avoids the problem that 'foo' is a nonvolatile field and can
therefore be seen to alternate any number of times between null and
nonnull from the PoV of the thread initialising it (at least when the
initialisation is racy).
2023-05-10 19:41:27 +01:00
Steven Barclay
b8505db48d
Memoise BurningManAccountingService.getAverageBsqPriceByMonth()
Add an 'averagePricesValid' boolean field to avoid needless refilling of
the cached BSQ prices map when calling 'getAverageBsqPriceByMonth()'.
(Also skip a redundant filling of the map will non-historical data upon
startup of the service.) Since the prices are calculated from the
(observable) set of all trade statistics, add a listener to the set to
invalidate the cache whenever it changes.

This significantly speeds up the burning man view, since the getter is
called several times when activating it.
2023-05-10 19:41:26 +01:00
Steven Barclay
ade339349c
Clean up BurningManAccountingService: deduplicate code
Factor out duplicated logic in the 'Stream.map' lambdas to compute the
BSQ value of the BTC of each streamed ReceivedBtcBalanceEntry, returned
as an 'Optional<Long>'. Also simplify the logic slightly and return an
OptionalLong instead for greater efficiency.

(Also replace a statement lambda with an expression lambda.)
2023-05-10 19:41:26 +01:00
Steven Barclay
e287177e49
Speed up burn target calculations in burning man view
Optimise 'BurningManPresentationService.getCandidateBurnTarget' to avoid
the repeated computation of the total accumulated decayed burned amount
for every listed burning man. To this end, cache the total in a nullable
Long field, along with the method 'getAccumulatedDecayedBurnedAmount()'
to lazily initialise it. (This eliminates a minor hotspot in the burning
man view revealed by JProfiler.)
2023-05-10 19:41:25 +01:00
Steven Barclay
9ce9ffc694
Use TemporalAdjusterModel cache to speed up BSQ supply view
Use the previously added 'ChartDataModel.toCachedTimeIntervalFn' to
additionally speed up some of the charts in the BSQ supply view, in
particular the trade fees & total burned BSQ, via the DaoChartDataModel
methods 'getBsqTradeFeeByInterval' & 'getTotalBurnedByInterval'. (The
other changes in the BSQ supply, such as proofs of burn or issuance, are
too infrequent to benefit from the LocalDate caching.)

For this to work, the filtered BSQ txs must be streamed in chronological
order, so provide local methods 'get[Burnt|Trade]FeeTxStream()', to use
in place of the DaoStateService methods 'get[Burnt|Trade]FeeTxs()',
which return unordered HashSets.
2023-05-10 19:41:25 +01:00
Steven Barclay
f3fd555ced
Add caches to TemporalAdjusterModel to speed up BSQ dashboard view
Now that the trade statistics are retrieved in chronological order,
optimise the per-interval BSQ & USD price and volume calculations in
PriceChartDataModel & VolumeChartDataModel, by adding caches to avoid
relatively expensive timezone calculations in TemporalAdjusterModel,
similarly to the cache added for 'ChartCalculations.roundToTick' (as
profiling shows 'TemporalAdjusterModel.toTimeInteval' is a hotspot).

Add a cache to speed up Instant -> LocalDate mappings by storing the
unix time (Instant) range of the last seen day (LocalDate) in a tuple,
then just returning that day if the next Instant falls in range. Also
add a cache of the last temporal adjustment (start of month, week, etc.)
of that day. In this way, successive calls to 'toTimeInteval(Instant)'
with input times on the same day are sped up.

Since TemporalAdjusterModel is used by multiple threads simultaneously,
store the caches in instance fields and add a 'withCache' method which
clones the model and enables the caching, since otherwise the separate
threads keep invalidating one another's caches, making it slower than it
would be without them. (We could use ThreadLocals, but profiling
suggests they are too heavyweight to be very useful here, so instead use
unsynchronised caching with nonfinal fields and benign data races.)

Provide the method 'ChartDataModel.toCachedTimeIntervalFn' which returns
a method reference to a cloned & cache-enabled TemporalAdjustedModel, to
use in place of the delegate method 'ChartDataModel.toTimeInterval' when
the caching is beneficial.
2023-05-10 19:41:25 +01:00
Steven Barclay
964321a1e1
Use parallelStream to speed up fillTradeCurrencies
As profiling shows a hotspot mapping the set of trade statistics to a
list of currencies to pass to 'CurrencyList.updateWithCurrencies',
attempt to speed this up with a parallel stream. For this to work
correctly, take care to use the backing set (with unmodifiable wrapper)
in place of 'tradeStatisticsManager.getObservableTradeStatisticsSet()',
as ObservableSetWrapper doesn't delegate calls to its spliterator.
2023-05-10 19:41:24 +01:00