All methods that are only used in the desktop project are removed from
BSFormatter to DisplayUtils. This reduces the entanglement between the desktop and core
project by reducing the surface area of the coupling.
The updateBsqWalletTransactions method got called at each block for all
transactions. During block download that wasted a lot of cpu and
led to stuck UI thread and lost connections.
The updateBsqBalance is not cheap (a few ms) and called for 100s of txs
at each block was very problematic.
Furthermore the listeners on the walletTransactions observableList got
triggered which made the situation worse.
We changed the observableList to a ArrayList and use a listener which
gets called after the list is updated.
We also make sure the onTransactionConfidenceChanged listener is not
calling updateBsqWalletTransactions if bsq parsing is not complete and
if the depth of the tx is > 1.
In the updateBsqWalletTransactions method we use a flag and a delay
to ensure that the updateBsqBalance is not called more then once
in 100 ms.
We changed also the getter to return a cloned version of the list to
avoid potential concurrent modification exceptions at clients.
Closes#3175
[Light Theme]
* Fix wrong shade of gray used as background color on grid-pane
* Fix green scrollbars, should be gray as before
[Dark Theme]
* Fix action buttons being too dark on dark background
* Fix combo-box-editor referencing old CSS class names
* Fix incorrect shades of gray used for wizard item background
* Set font-smoothing to gray method
* Style javafx's main color palette, which fixes below issues:
* Fix dark text on dark background in text field on grid-pane
* Fix password entry input field dark on dark
* Fix trade chat bubbles and text
* Fix calendar date picker
* Fix viewing DAO proposal results
PhoneNumberValidator + Test Changes:
Added no-arg constuctor required for Guice injection.
Added isoCountryCode setter; this field must be set before
validation.
Added validation of isoCountryCode.
Added missing country code test.
SwishValidator Changes:
SwishValidator now extends PhoneValidator.
Added no-arg constuctor required for Guice injection.
Set isoCountryCode = SE in constructor.
SwishForm Changes:
Sets Swish acct phone number to normalized phone number if
phone # validation is successful.
Replaced Logger declaration with @Slf4j annotation.
Formatted source.
Added 'validation.phone.missingCountryCode' property to i18n file.
- Store last position of the chat window so if it gets closed and opened
again it opens at the last position.
- Fix issues with the listener for new messages.
The handler was called multiple times before. Now its is called only
once. Tested with multiple trades and scrolling.
We use maps for each trade to avoid multiple listener registrations
when switching views. With current implementation we avoid that but we
do not remove listeners when a trade is removed (completed) but that
has no consequences as we will not receive any message anyway from a
closed trade. Supporting it more correctly would require more effort
and managing listener deactivation at screen switches (currently we
get the update called if we have selected another view.
This part can be improved if any dev feels motivated but its not
trivial...
Basic autocomplete feature for all dropdowns on the major tabs:
* Market / Offer Book
* Market / Trades
* Buy BTC
* Sell BTC
Known limitations:
* Autocomplete still missing from Settings, Account, DAO tabs
* Minor UX glitches remain despite lots of debugging and polishing
Related issues:
* fix#2226
* partially addressed #2712
* superseded #112