Commit Graph

3789 Commits

Author SHA1 Message Date
Alva Swanson
9d593ae32e
Remove broken DockerFile 2023-09-10 18:28:48 +02:00
Alejandro García
2bad8ea76c
Merge pull request #6849 from HenrikJannsen/add_filter_to_awesome_font_demo_app
Add filter to AwesomeFontDemo
2023-09-06 21:41:55 +00:00
Alejandro García
d3f60c4a5f
Merge pull request #6848 from jmacxx/streamline_create_take_offer_flow
Improve flow in create/take offer process.
2023-09-06 21:41:12 +00:00
Alejandro García
f99cd13283
Merge pull request #6843 from jmacxx/arbitration_ticket_manual_close_reopen
Allow arbitration tickets to be manually reopened.
2023-09-06 21:38:45 +00:00
jmacxx
dd1c339432
Add MercadoPago payment method. 2023-09-05 16:27:31 -05:00
HenrikJannsen
a0009a95c3
Add filter to AwesomeFontDemo
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-09-05 15:12:31 +07:00
jmacxx
e9ec3d72e1
Improve flow in create/take offer process.
When creating or taking an offer the user gets the choice to fund the
trade from an external wallet for potentially better privacy (avoid
coin merge if inputs from ext. wallet are kept separated). From
feedback it seems that most users are not using that option and then
they need to do that extra click on the "Fund from internal Bisq
wallet" button.
We offer a way to avoid that extra step if the user chooses
to use the internal wallet. We show at the first time a popup
with background info why funding from an external wallet could
improve privacy and if the user prefers to not use that to give them
an option to skip that step in future. In the settings we could add
a toggle to re-enable it again.
The review screen can be skipped if user chooses this feature,
leading to data entry > confirm rather than
data entry > fund > review > confirm.
2023-09-04 13:35:46 -05:00
jmacxx
1bc6a9fc90
Allow arbitration tickets to be manually reopened.
This is useful in cases where a user did not receive the ticket
closure message:
The user messages the arbitrator asking for clarification.
Arbitrator re-opens the ticket and re-sends the closing message.
2023-09-01 10:36:24 -05:00
jmacxx
4bc5494ce9
Add info popup about ARS market prices. 2023-08-30 14:33:35 -05:00
jmacxx
1a184a2e4f
Arbitration broadcast DPT and dispute message in parallel.
Previously the dispute message would only be sent once the DPT had
finished propagation.  To a user it would appear as if nothing
happened and they would attempt to initiate the process again.
That would cause the DPT logic to fail (we already have an
open timer etc..) and the logic failing would result in no
happy path therefore no Dispute message being sent.

Testing confirmed there is no requirement for the dispute to be
chained on the successful propagation of the DPT to nodes.
Both the DPT and the dispute can be attempted again by the user
if necessary.  Rebroadcasting an already published DPT causes
no harm.  Re-sending the dispute message also causes no harm
as there is logic to detect if it already exists and handle it
gracefully.
2023-08-18 17:51:54 -05:00
Alva Swanson
4464a2db3d
desktop: Move JVM args definition to build.gradle 2023-08-05 19:42:12 +02:00
Alva Swanson
44ab029c7e
Gradle: Apply shadow plugin only to desktop module 2023-08-05 15:18:59 +02:00
Alva Swanson
9ce8f83719
Gradle: Centralize application setup 2023-08-05 15:14:04 +02:00
Alva Swanson
af6b664548
desktop: Switch to 'bisq.javafx' Gradle Plugin 2023-08-04 13:31:10 +02:00
Alva Swanson
41eafd2b31
desktop: Move build configuration to its own build.gradle 2023-08-04 13:30:46 +02:00
Alejandro García
85a457c6f1
Merge branch 'master' into release/v1.9.12 2023-07-13 15:11:38 +00:00
Alejandro García
3f2d55a356
Revert to SNAPSHOT version 2023-07-13 17:06:14 +02:00
Gabriel Bernard
02e87d545d
Merge pull request #6767 from bisq-network/release/v1.9.11
Release/v1.9.11
2023-07-13 11:32:14 +00:00
jmacxx
089d4e9237
Show more available UTXOs in Send Funds screen. 2023-07-03 13:44:07 -05:00
Alejandro García
67182ca41f
Merge pull request #6738 from HenrikJannsen/add_bm_accounting_preferences
Add reset buttons for BM accounting
2023-07-01 21:52:41 +00:00
Alejandro García
323399647c
Merge pull request #6679 from napoly/fix_hide_edit_button_bsq_offer
Remove edit button for BSQ offers
2023-07-01 21:51:08 +00:00
HenrikJannsen
1ebc92e5b8
Add reset buttons for BM accounting 2023-07-01 14:25:43 +02:00
Alejandro García
d95dc58a06
Bump version number for v1.9.12 2023-06-30 23:55:18 +02:00
jmacxx
da9caf56a2
Seednode accounting set by command line, overrides UserPreferences. 2023-06-30 20:02:53 +02:00
Alejandro García
1cc2b35c89
Merge pull request #6744 from jmacxx/fix_seednode_accounting_pref
Seednode accounting option is by command line, overrides UserPreferences.
2023-06-30 18:00:50 +00:00
Alejandro García
6b0f32f8e7
Merge pull request #6742 from jmacxx/csv_export_proof_of_burn
Add CSV export for Proof of Burn table.
2023-06-30 18:00:12 +00:00
jmacxx
a9bc45c173
Seednode accounting set by command line, overrides UserPreferences. 2023-06-30 10:10:23 -05:00
jmacxx
aa79b01fd3
Add CSV export for Proof of Burn table. 2023-06-26 18:20:13 -05:00
jmacxx
8024b72860
Add burned BSQ column in monthly burningman status report. 2023-06-26 13:31:55 -05:00
Alejandro García
31b427c92e
Bump version number for v1.9.11 2023-06-22 14:35:22 +03:00
jmacxx
b486522c89
Allow dispute agent to resend ticket, fixes #6690. 2023-06-05 15:27:14 -05:00
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
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
HenrikJannsen
1cbdf043cd
Fix bug with selection of account combobox
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-22 19:17:22 +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
95023216ec
Use new getReceiverAddress methods instead of getMostRecentAddress
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-17 13:05:36 +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
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
b11511e037
Do not use sourceOfferPayload for extraDataMap
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-13 22:15:38 +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
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
Steven Barclay
6e330e4a14
Speed up SortedList creation in TradesChartsView.fillList
Reduce a hotspot sorting the trade statistics table, triggered by the
'sortedList.bind(comparatorProperty)' call upon completion of the
'fillList' future. Profiling shows that repeated invocation of the cell
value factory over the entries of the sorted column is a bottleneck, so
speed this up by caching the returned cell value (given by calling
'new ReadOnlyObjectWrapper<>(listItem)') as an instance field of
TradeStatistics3ListItem.

As a further significant optimisation, stream the trade statistics in
reverse chronological order, when collecting into a list wrapped by
SortedList, as this matches the default display order, reducing the
number of comparisons done by SortedList's internal mergesort to O(n).
2023-05-10 19:41:24 +01:00
Steven Barclay
a489697a54
Speed up candle data creation in getUpdateChartResult
Optimise (further) the ChartCalculations methods 'getItemsPerInterval' &
'getCandleData' by replacing HashSets in the former with sorted sets,
which avoids relatively expensive calls to 'TradeStatistics3.hashCode'
and needless subsequent re-sorting by date in 'getCandleData'. (Forming
the trade statistics into an ImmutableSortedSet, OTOH, is cheap since
they are already encountered in chronological order.)

Further optimise the latter by using a primitive array sort of the trade
prices to calculate their median, instead of needlessly boxing them and
using 'Collections.sort'.
2023-05-10 19:41:23 +01:00
Steven Barclay
0f52b65daa
Further speedups to getUsdAveragePriceMapsPerTickUnit
Avoid calculating average prices for ticks that won't ever be part of a
visible chart candle, as only the last 90 ticks can fit on the chart. To
this end, stream the trade statistics in reverse chronological order
(which requires passing them as a NavigableSet), so that once more than
MAX_TICKS ticks have been encountered for a given tick unit, the
relevant map (and all lower granularity maps) can stop being filled up.

Also add a 'PriceAccumulator' static class to save time and memory when
filling up the intermediate maps, by avoiding the addition of each trade
statistics object to (multiple) temporary lists prior to average price
calculation.
2023-05-10 19:41:23 +01:00
Steven Barclay
372f92d7aa
Add cache to speed up ChartCalculations.roundToTick
Now that the trade statistics are encountered in chronological order,
speed up 'roundToTick(LocalDateTime, TickUnit)' by caching the last
calculated LocalDateTime -> Date mapping from the tick start (with one
cache entry per tick unit), as multiple successive trades will tend to
have the same tick start.

This avoids a relatively expensive '.atZone(..).toInstant()' call, which
was slowing down 'ChartCalculations.getUsdAveragePriceMapsPerTickUnit',
as it uses 'roundToTick' in a tight loop (#trades * #tick-units calls).

Also unqualify 'TradesChartsViewModel.TickUnit' references for brevity.
2023-05-10 19:41:22 +01:00
Steven Barclay
914d75682c
Cache enum.values() in ChartCalculations & TradeStatistics3
Cache enum arrays 'TickUnit.values()' & 'PaymentMethodWrapper.values()'
as the JVM makes defensive copies of them every time they are returned,
and they are both being used in tight loops. In particular, profiling
suggests this will make 'TradeStatistics3.isValid' about twice as fast.
2023-05-10 19:41:22 +01:00
Steven Barclay
835593f2c9
Fix broken test in TradesChartsViewModelTest that passed accidentally
The test was erroneously passing a candle tick start time (as a long) to
'ChartCalculations.getCandleData', which expects a tick index from 0 to
MAX_TICKS + 1 (91) inclusive. Since this is out of range, the method
skipped an 'itemsPerInterval' map lookup which would have thrown an NPE
prior to the last commit. Fix the test by making 'itemsPerInterval'
nonempty and passing 0 as the tick index. Also check the now correctly
populated 'date' field in the returned candle data.

Additionally, tidy up the class a little and avoid an unnecessary temp
directory creation.
2023-05-10 19:41:22 +01:00
Steven Barclay
47776b3836
Speed up ChartCalculations.getItemsPerInterval & return as List
Avoid scanning all the ticks backwards from 90 to 1 repeatedly, to find
the one with the correct date interval for each item in the
'tradeStatisticsByCurrency' list. Instead, for each item, remember the
last found tick index and move forwards if necessary, then scan
backwards from that point to find the correct tick. As the trade
statistics are now in chronological order, this is much faster (though
it will still work correctly regardless of the order of the list items).

Also, hold 'itemsPerInterval' as a 'List<Pair<..>>' instead of a
'Map<Long, Pair<..>>', since the keys are just tick indices from 0 to 91
inclusive, so it is cleaner and more efficient to use an array than a
hash table.
2023-05-10 19:41:21 +01:00
Steven Barclay
5846095b6b
Minor cleanup of ChartCalculations & TradesChartsView
1) Change statement lambdas to expression lambdas;
2) Replace 'Map.putIfAbsent' then 'Map.get' with 'Map.computeIfAbsent';
3) Add missing @VisibleForTesting annotation or make private.
2023-05-10 19:41:21 +01:00
Steven Barclay
b417e36a28
Make TradeStatistics3 comparable & hold in a TreeSet
Make TradeStatistics3 implement the previously added ComparableExt
interface and make TradeStatisticsManager hold them as a TreeSet instead
of a HashSet, to support fast retrieval of statistics in any given date
range. (Even though red-black trees are generally slower than hash
tables, this should not matter here since the set is only being iterated
over and infrequently appended, and does not benefit from O(1) lookups/
additions/removals.)

Add a 'TradeStatisticsManager.getNavigableTradeStatisticsSet' accessor,
which returns the backing TreeSet of the current ObservableSet field, so
that callers can access its NavigableSet interface where needed (as
there is no ObservableSortedSet or similar in JavaFX). Use this to
optimise 'AveragePriceUtil.getAveragePriceTuple',
'DisputeAgentSelection.getLeastUsedDisputeAgent' and
'MutableOfferDataModel.getSuggestedSecurityDeposit', to obtain a narrow
date range of trade statistics without streaming over the entire set.

Additionally optimise & simplify the price collation in
'TradeStatisticsManager.onAllServicesInitialised', by exploiting the
fact that the statistics are now sorted in order of date (which is the
presently defined natural order).
2023-05-10 19:41:20 +01:00
Alva Swanson
2e63d2f0ca
Remove empty VerifyTaskTest class 2023-05-08 16:35:36 +10:00
napoly
fc42044949
Remove edit button for BSQ offers 2023-05-06 20:06:58 +02:00
HenrikJannsen
13bcfb3121
Use new offerId and fresh data at clone offer
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-05 19:41:24 +07:00
HenrikJannsen
21672a1bd0
Add clone offer tab
Change flow of cloning an offer:
We open the clone offer tab similar like the duplicate/edit offer tab. When clicking the clone button we create and publish the cloned offer. if the clone would not have changed the payment method/currency we show a popup and deactivate the offer.
At editOffer we check if the offer is using a shared maker fee and if so we check if the edit triggered same payment method/currency. If so we show a popup and deactivate the offer.

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-05 13:34:03 +07:00
HenrikJannsen
4ae89e748c
Use link icon for cloned offers
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-05 11:11:58 +07:00
HenrikJannsen
384173c894
Rename translation string
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-05 10:01:57 +07:00
napoly
e19ffe2308
Upgrade JUnit4 to JUnit5 Jupiter 2023-05-04 20:04:49 +02:00
HenrikJannsen
6036da352b
Add cloneItemColumn
Hide trigger price column if none is in list

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-04 20:25:11 +07:00
HenrikJannsen
3403b1662c
User maker fee as column name (instead of group)
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-04 20:10:38 +07:00
HenrikJannsen
992854c9b9
Various refactorings and changes
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-05-04 18:31:20 +07:00
jmacxx
acbff2b11a
Use domain data as requested by reviewer. 2023-05-04 18:31:17 +07:00
jmacxx
e66517fb8a
Code review changes.
Pick a more user friendly name instead of OCO.
Clean up code.
2023-05-04 18:31:16 +07:00
jmacxx
27dcec00e9
Code review changes. 2023-05-04 18:31:16 +07:00
jmacxx
4f08f9f383
Feat: OCO Offers 2023-05-04 18:31:15 +07:00
Steven Barclay
01de88b163
Slight code cleanup: BurningManView & BalanceEntryItem
1) Replace statement lambda with expression lambda;
2) Use '.iterator().next()' instead of 'new ArrayList<>(_).get(0)'.
2023-04-22 00:41:12 +01:00
Steven Barclay
c353a95cd9
Use primitive 'comparing*' comparators to avoid boxing
Replace uses of 'Comparator.comparing' with 'comparing[Double|Int|Long]'
in BurningManView, as appropriate, since it is slightly more efficient.
2023-04-22 00:29:13 +01:00
Steven Barclay
8e8d727231
Fix NPE from BurningManView column comparators
Make sure that none of the key extractor functions passed to
'Comparator.comparing(fn)' can return null, as this results in an NPE
when the corresponding column is sorted in the UI, but has blank entries
(such as the BTC received for a BSQ burn in the balance entries table).

(Make blanks appear smallest in magnitude using 'Comparator.nullsFirst'
or by defaulting to 0 instead of null, since the entries are initially
sorted biggest to smallest, pushing them to the bottom of the table.)

Also change the default sort type of the burned BSQ column, which should
be ASCENDING since the entries are negative.
2023-04-21 23:59:37 +01:00
Gabriel Bernard
caab3dbe55
Merge pull request #6649 from bisq-network/release/v1.9.10
Release/v1.9.10
2023-04-17 08:15:12 +00:00
Alejandro García
bfad06caae
Merge pull request #6647 from HenrikJannsen/show_total_distributed_btc_fees
Show total fees and total DPT
2023-04-15 02:32:21 +00:00
Alejandro García
28bb0a60fc
Merge pull request #6641 from helixx87/6629-fix-close-button-after-offer-creation
Fix close button behaviour on successful offer creation popup
2023-04-15 02:28:41 +00:00
Alejandro García
0391be64a5
Revert to SNAPSHOT version 2023-04-15 11:59:46 +10:00
HenrikJannsen
1416b946a8
Add fields for total BTC fees and total DPT amounts
Add more data to CSV export

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-04-12 16:17:44 +07:00
HenrikJannsen
795964f06b
Add info if burningman accounting data processing is disabled or if it is in progress.
We use a postfix to the header title and not a busy animation, as the busy animation is quite CPU intense.

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-04-10 16:01:13 +07:00
HenrikJannsen
cec05e13f9
Add toggle to PreferencesView
Add popup when selecting a burningman to ask for enabling processing

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-04-10 14:49:47 +07:00
helixx87
c3619f3839
Fix close button behaviour on successful offer creation popup 2023-04-08 18:01:33 +02:00
Christoph Atteneder
84d3804117
Add BurningManAccountingStore to script 2023-04-07 18:11:33 +02:00
yonson2023
5f54905c71
Validate that XMR subaddress view key matches the main address. 2023-04-03 11:44:43 +10:00
Alejandro García
00c43196a3
Merge pull request #6612 from yonson2023/check_xmr_subaddress
Validate that XMR subaddress view key matches the main address
2023-04-03 01:38:39 +00:00
Alejandro García
4b4adbc2db
Bump version number for v1.9.10 2023-04-02 11:09:10 +10:00
HenrikJannsen
ee83607225
Add total received BTC field
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-03-31 19:47:34 +07:00
HenrikJannsen
afe4bccae3
Hide columns in burningman overview table which are not essential.
There is the small + icon on the right top of the table which allows to show the hidden columns.
Unfortunately this does not come with column names, so it's a bit ugly.

Here is a way how to adjust the context menu: https://gist.github.com/Roland09/d92829cdf5e5fee6fee9
Maybe any dev is motivated to improve that.
2023-03-31 18:35:56 +07:00
HenrikJannsen
aa5de89ee2
Add total revenue to burningman details.
We do not add a column to the overview table because calculating the balance entries is expensive and doing it over all burningmen would take too long. There is headroom for performance improvements in that area...

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-03-31 18:17:53 +07:00
Christoph Atteneder
cf56ae316e
Merge pull request #6597 from jmacxx/support_ui_improvements
Support UI improvements
2023-03-27 13:46:20 +02:00
Christoph Atteneder
324f5ef179
Merge pull request #6604 from stejbac/add-missing-keychain-path-to-wallet-info
Add missing segwit BSQ keychain path to wallet info
2023-03-27 13:45:21 +02:00
yonson2023
e2b25c12e1
Validate that XMR subaddress view key matches the main address. 2023-03-22 11:01:48 -05:00
jmacxx
c404eb1e91
Support UI improvements (per bisq project 67). 2023-03-11 22:06:07 -06:00
Alejandro García
7319156c46
Merge pull request #6602 from jmacxx/fix_issue_6216
Fix DatePicker auto-grow problem, remove unused code.
2023-03-11 15:13:22 +00:00
Alejandro García
fe30b21643
Merge pull request #6599 from yonson2023/bm_distribution_report
Add report showing monthly BTC paid to BurningMen.
2023-03-11 15:12:40 +00:00
Alejandro García
b88cd58f24
Merge pull request #6593 from jmacxx/limit_min_max_deviation
Limit offer min/max amount deviation to 50%.
2023-03-11 15:11:12 +00:00
Steven Barclay
4b2c7b15c4
Iterate over wallet keychains instead of using hard coded BIP32 paths
Add private method 'WalletInfoView.addAccountPaths', similar to the
method 'addXpubKeys', to iterate over the active wallet keychains,
formatting & displaying the derivation paths, instead of using the 4
constants defined in BisqKeyChainGroupStructure. Also simplify the code
slightly by updating the 'gridRow' field directly instead of passing it
as a method argument.
2023-03-11 15:03:24 +08:00
Steven Barclay
1672bb6e74
Add missing segwit BSQ keychain path to wallet info
Add the new account path "44'/142'/1'" for segwit BSQ to the wallet info
view, which was missed from PR #5109 making the wallet & UI changes to
implement segwit BSQ. Also format the paths from the constants defined
in 'BisqKeyChainGroupStructure', instead of using string literals, so
that they are only defined in one place. (Though it is extremely
unlikely the paths would ever change.)
2023-03-11 09:44:15 +08:00
jmacxx
a8f519299f
Fix datepicker auto-grow problem, remove unused helper. 2023-03-09 08:34:01 -06:00
Steven Barclay
fcbf96ceb9
Fix confirmation count bug in transactions CSV export
Move the 'confirmations' field from TransactionsListItem to the nested
'LazyFields' class, so that it is correctly lazily initialised when
'getNumConfirmations()' is called, instead of just returning 0 for
hidden list items with uninitialised tooltips + confidence indicators.

This makes the logic consistent with that in TxConfidenceListItem and
fixes a bug in the BTC transactions view CSV export, where only the
already rendered list items would have nonzero confirmation counts.
2023-03-08 18:12:41 +08:00
Steven Barclay
76c2781505
Short circuit confidence updates in DepositListItem
Add a 'lazyFields' volatile field to DepositListItem to detect
initialisation of the associated memoised 'LazyFields' supplier,
allowing confidence updates to be short-circuited when the corresponding
indicator has not yet been lazily loaded.

This is for consistency with the 'LazyFields' logic just added to
TxConfidenceListItem and should make the UI more responsive if a new
block arrives when the funds deposit list is in view, by avoiding the
entire list of item tooltips & confidence indicators from being force-
initialised.
2023-03-08 17:18:54 +08:00
Steven Barclay
04fae6d81e
Lazily load BsqTxListItem tooltips & confidence indicators
Add a 'LazyFields' static class and memoised supplier field to the base
class TxConfidenceListItem, similar to that added to the classes
DepositListItem & TransactionsListItem. This allows lazy loading of
tooltips & tx confidence indicators, just as for those classes.

This removes the current remaining bottleneck in the BSQ tx view load,
revealed by JProfiler. (Note that there is still a quadratic time bug
remaining due to the use of a confidence listener for each list item,
since the BSQ wallet internally uses a CopyOnWriteArrayList, whose
backing array is cloned for each listener addition or removal. However,
it isn't clear that fixing this will give a noticable speedup unless
there are an extremely large number of BSQ txs in the wallet.)

Take care to add the tx confirmation count to LazyFields, to prevent
issues when exporting the list as a CSV. Also add a volatile
'lazyFields' field to detect lazy initialisation of the supplier and
short circuit confidence updates for uninitialised indicators.
2023-03-08 16:14:04 +08:00
Steven Barclay
e18b1e833d
Avoid repeated scanning for swap trades via BsqTxListItem ctor
Precompute and pass a map of txIds to BsqSwapTrade instances to the
BsqTxListItem constructor in 'BsqTxView.updateList()', in place of the
tradable repository, so that the tradables don't need to be repeatedly
scanned to find the optional matching BSQ swap trade for each BSQ tx.

This fixes a quadratic time bug and significantly speeds up the BSQ tx
view load for users with many past trades.
2023-03-08 14:23:15 +08:00
Steven Barclay
3fa6b25789
Avoid calling BsqTxView.updateList() twice on view load
Remove the direct call to 'updateList' in the 'BsqTxView.activate()'
method, as it is later called indirectly via 'onUpdateAnyChainHeight()'.
This nearly doubles the loading speed of the BSQ tx list (in the DAO /
BSQ Wallet tab), since 'updateList' is very slow when there are many txs
in the wallet.
2023-03-08 13:50:41 +08:00
yonson2023
289f546f7f
Add report showing monthly BTC paid to BurningMen. 2023-03-07 18:34:42 -06:00
jmacxx
8a41637b58
Limit offer min/max amount deviation to 50%. 2023-02-27 20:24:52 -06:00
Christoph Atteneder
7d2e110a1d
Merge pull request #6582 from alvasw/remove_unused_connection_listener_on_error
Remove unused ConnectionListener.onError(...) method
2023-02-15 17:43:29 +01:00
HenrikJannsen
c74319c969
Reduce burningman table height to 5 rows
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-02-15 17:34:25 +07:00
Alva Swanson
d411ae1252
Remove unused ConnectionListener.onError(...) method 2023-02-12 20:44:38 +02:00
Steven Barclay
6a84500710
Cache txo addresses to speed up isRefundPayoutTx in some cases
In the (hopefully rare) case that the user has multiple past trades that
end in arbitration, the entire wallet tx output set was scanned once for
every such trade (via 'TransactionAwareTrade.isRefundPayoutTx' calls),
to look for any outputs matching the payout address. This potentially
causes a slowdown of the Transaction view load for each new arbitration
case added. To avoid this problem, cache the last set of recipient
address strings of the provided tx, as the next call to
'isRefundPayoutTx' is likely to be for the same tx.

Also check that there is exactly one input (the multisig input) for any
candidate delayed payout tx, to speed up 'isDelayedPayoutTx' in case the
wallet contains many unusual txs with nonzero locktime.
2023-02-12 12:35:05 +08:00
Steven Barclay
ee45202521
Remove redundant listener from TransactionsListItem
Eliminate a minor quadratic time bug, caused by the unnecessary addition
of a (BtcWalletService) TxConfidenceListener for each list item in the
Transactions view. (Since the confidence listeners are internally held
in a CopyOnWriteArraySet, this sadly runs in quadratic time, slowing
down the Transactions view load a little.)

The confidence listener is apparently redundant because of a set of
calls to 'TransactionsListItem.cleanup' immediately upon construction of
the item list, which removes all the listeners just added. (This code
appears to date from at least February 2016, in commit c70df86.)

(The confidence indicators are kept up to date by simply reloading the
entire list upon each wallet change event.)
2023-02-11 09:40:03 +08:00
Steven Barclay
2e8f03061e
TransactionsListItem cleanup: remove unused local variable
(This also avoids a redundant call to 'Tradable.getShortId', shaving off
another percent or two from the Transactions view load.)
2023-02-11 08:04:21 +08:00
Steven Barclay
97ef9c1308
Place filter in front of 'isRelatedToTransaction' for speedup
Use a crude Bloom filter (of sorts) to cut down the quadratic number of
calls to 'TransactionAwareTradable.isRelatedToTransaction' (that is, one
for each tx-tradable pair) during the Transactions view load. In this
way, we may reduce the number of calls roughly 40-fold, for a Bisq
instance with similar numbers of BSQ swap trades and escrow trades.

(Sadly, profiling does not show a 40-fold reduction in the size of the
'isRelatedToTransaction' hotspot, likely due to the remaining calls
being expensive ones involving disputed trades or unusual txs with
nonzero locktime, e.g. dust attacks or funds from Electrum wallets.)

To this end, partition the wallet transactions into 64 pseudo-randomly
chosen buckets (with a dedicated bucket for txs which might be delayed
payouts, namely those with nonzero locktime). Add an interface method,
'TransactionAwareTradable.getRelatedTransactionFilter', which returns an
IntStream of all the indices of buckets where a related tx may plausibly
be found. Where this is unclear, e.g. for trades involved in a dispute,
just return everything (that is, the range 0..63 inclusive).

Add a class, 'RelatedTransactionFilterSlices', that holds a provided
list of TransactionAwareTradable instances and 64 bitsets of all the
slices through their respective filters (each realised as 64-bit word
instead of a streams of integers). In this way, a list of tradables
plausibly related to any given tx may be quickly found by simply
selecting the appropriate bitset of the 64 (by the tx bucket index).
2023-02-11 07:55:36 +08:00
Steven Barclay
19a80d19bb
Short circuit txId hex encoding for BSQ swap offers
Inline a local variable, to eliminate another minor Sha256Hash.toString
hotspot in the Transactions view load, this time coming from
'TransactionsAwareOpenOffer.isRelatedToTransaction'. This is helpful in
the case that the user has a large number of (possibly disabled) BSQ
swap offers.
2023-02-10 10:28:02 +08:00
Steven Barclay
fb78345ba3
Avoid repeated Set<Tradable> build in transactions view load
Move the line,

   Set<Tradable> tradables = tradableRepository.getAll();

to the top level of 'TransactionsView.updateList', instead of needlessly
calling 'TradableRepository.getAll' (which builds a new set every
invocation) for each wallet transaction being iterated over.

This was causing a significant slowdown of the view load.
2023-02-09 21:35:32 +08:00
Steven Barclay
3aacc99f38
Tidy up TransactionsView slightly
1. Expression lambda -> method reference;
2. Statement lambda -> expression lambda;
3. Field -> local variable.
2023-02-09 21:16:40 +08:00
Steven Barclay
c913b7a428
Cache last txId to further speed up 'isRelatedToTransaction'
Use a mutable static tuple field to cache the last result of
'Sha256Hash.toString', which is used to get the ID string of the input
tx, when calling 'TransactionAwareTrade.isRelatedToTransaction'. In this
way, consecutive calls to 'isRelatedToTransaction' on the same input tx
(over all the past trades, as done by 'TransactionsView.updateList') are
sped up significantly, since hex encoding the txId is a bottleneck.
2023-02-09 17:13:14 +08:00
Steven Barclay
88dd924577
Clean up TransactionAwareTrade & speed it up slightly
Replace the "Optional.ofNullable(...)..." constructs with more direct
code using short-circuit operators, as this is shorter and a little
faster. Also use "trade.get[Deposit|Payout]TxId()" instead of the code
"trade.get[Deposit|Payout]TxId().getTxId()", as (upon inspection of the
code) there should never be a case where the deposit/payout transaction
field of a Trade object is set but the respective txID field is null (or
set to an inconsistent value).

Also remove a redundant 'RefundManager.getDisputesAsObservableList'
method call, which was also slowing things down slightly.

The minor speedups afforded by the above are important because the
method 'TransactionAwareTrade.isRelatedToTransaction' is called a
quadratic number of times and consequently a major bottleneck when
loading the Transactions view.
2023-02-09 14:34:18 +08:00
Alva Swanson
c1c4caf87f
Gradle: Apply bisq.java-conventions to all projects 2023-02-05 22:02:13 +01:00
Alejandro García
27613de363
Merge pull request #6546 from jmacxx/offer_availability_dao_sync_check
Maker check DAO health when handling OfferAvailabilityRequest.
2023-02-03 15:10:57 +00:00
Alejandro García
3f518d1602
Merge pull request #6538 from yonson2023/fix_issue_6536
Fix delimiter used for combined fields copypaste.
2023-01-31 19:07:54 +00:00
jmacxx
d43a0e42cf
Maker check DAO health when handling OfferAvailabilityRequest. 2023-01-29 21:46:56 -06:00
Alejandro García
f43b5fe04b
Merge pull request #6544 from jmacxx/fix_withdrawal_fee_estimation
Fix withdrawal fee calculation & the min relay fee problem.
2023-01-28 19:25:06 +00:00
jmacxx
efac12e8ce
Fix withdrawal fee calculation & the min relay fee problem. 2023-01-27 12:02:02 -06:00
yonson2023
0b049d5a52
Fix delimiter used for combined fields copypaste. 2023-01-25 10:46:45 -06:00
yonson2023
5d55248b7e
Differenciate offer removal pop-ups for BSQ swaps and regular trades. 2023-01-25 10:38:19 -06:00
Alejandro García
74e1078318
Merge pull request #6527 from yonson2023/disk_space_warning
Warn user when free disk space is too low.
2023-01-24 16:17:11 +00:00
Christoph Atteneder
0fd1480b6b
Merge pull request #6535 from jmacxx/fix_issue_6534
Fix: allow funds received in trade payout to be used for trading.
2023-01-24 10:13:38 +01:00
yonson2023
f3a19b9d00
Apply code review suggestions. 2023-01-23 20:28:53 -06:00
Alejandro García
e9ea270908
Merge pull request #6528 from jmacxx/fix_issue_6517
Refactor closing ticket logic.
2023-01-23 14:52:43 +00:00
jmacxx
8744f14f81
Move TRADE_PAYOUT funds to available when trade completes. 2023-01-22 16:31:31 -06:00
jmacxx
3dde7c6261
Refactor closing ticket logic to fix #6517. 2023-01-18 08:27:46 -06:00
yonson2023
fc2166e1a6
Warn when free disk space is too low. 2023-01-17 14:20:56 -06:00
yonson2023
ed821f721d
Fix UI filter box. 2023-01-17 11:00:39 -06:00
Alejandro García
2705244e64
Merge branch 'master' into release/v1.9.9 2023-01-12 15:01:22 +00:00
Alejandro García
6d8af4f102
Revert to SNAPSHOT version 2023-01-12 16:54:01 +02:00
Alejandro García
c55ecfa2d4
Bump version number for v1.9.9 2023-01-07 15:18:15 +02:00
HenrikJannsen
1f505cd184
Avoid that at repeated onDaoStateHashesChanged calls that we show multiple popups.
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-07 15:18:15 +02:00
HenrikJannsen
e9ae213e8c
Avoid that at repeated onDaoStateHashesChanged calls that we show multiple popups.
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-06 19:29:53 -05:00
HenrikJannsen
a6208f10dd
Add listeners at init
Remove duplicated listener registration

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-06 16:18:36 +02:00
HenrikJannsen
a6762cb66a
Return if !isParseBlockChainComplete
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-06 16:18:36 +02:00
HenrikJannsen
ec7dbb05c2
Improve DaoPresentation and add handler for daoStateHash updates
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-06 16:18:35 +02:00
HenrikJannsen
aa514b37da
Add listeners at init
Remove duplicated listener registration

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-05 22:02:57 -05:00
HenrikJannsen
cdfa3fa141
Return if !isParseBlockChainComplete
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-05 12:20:09 -05:00
HenrikJannsen
13180ddc30
Improve DaoPresentation and add handler for daoStateHash updates
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2023-01-05 11:21:01 -05:00
Alejandro García
1d669240d8
Merge pull request #6425 from jmacxx/fix_bsq_fee_validation
Validate BSQ fee payment using DAO tx info.
2022-12-29 20:12:38 +00:00
Alejandro García
681d8f972b
Merge pull request #6483 from jmacxx/fix_issue_6276
Fix problem causing multiple offers with same ID.
2022-12-29 15:05:20 +00:00