Commit graph

3602 commits

Author SHA1 Message Date
helixx87
c3619f3839
Fix close button behaviour on successful offer creation popup 2023-04-08 18:01:33 +02: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
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