Commit graph

1586 commits

Author SHA1 Message Date
Steven Barclay
6ef6bf24d9
Avoid raw use of Overlay<T> 2020-03-06 17:03:55 +08:00
Christoph Atteneder
fa56b91f6d
Revert "Vote Reveal - Silent Fail" 2020-02-28 16:01:03 +01:00
sqrrm
1d1cba1e4d
Merge pull request #3982 from dmos62/local-btc-node-configuration-check
Add local Bitcoin node configuration detection
2020-02-27 15:29:49 +01:00
sqrrm
ad3da4b701
Merge pull request #4009 from ripcurlx/fix-snapshot-version-for-rpm-builds
Handle SNAPSHOT versioning differently for rpm packages
2020-02-27 10:53:57 +01:00
Chris Beams
c1a99ccc55
Polish LocalBitcoinNode method names and visibility
- Rename #willUse => #shouldBeUsed
 - Rename #willIgnore => #shouldBeIgnored
 - Reduce visibility of methods where appropriate
 - Edit Javadoc typos and use @link syntax where appropriate
2020-02-27 09:35:36 +01:00
Chris Beams
b93ca2b2b1
Polish formatting 2020-02-26 21:24:38 +01:00
Christoph Atteneder
a6d874c3c1
Merge pull request #3758 from bisq-3408/master
Vote Reveal - Silent Fail
2020-02-26 12:53:03 +01:00
Christoph Atteneder
bf592f363b
Merge pull request #4008 from beingindot/tableview-checkbox-issue
Tableview multiple rows checkbox column issue
2020-02-26 10:11:03 +01:00
Christoph Atteneder
3b1a1f289b
Handle SNAPSHOT versioning different for rpm packages
Fixes #4006.
2020-02-26 09:49:06 +01:00
Dominykas Mostauskis
6b4878ada8
Centralize some of local BTC node logic
Introduces LocalBitcoinNode::willUse and ::willIgnore to move logic that
was previously littered throughout the codebase into one place. Also,
changes the usages of LocalBitcoinNode to be more precise, specifying
which of these questions are being asked:

- "is there a local BTC node" (isDetected);
- "is it well configured" (isWellConfigured and isUsable);
- "will we ignore a local BTC node even if we found a usable one"
  (willIgnore);
- "is there a usable local BTC node and will we use it" (willUse).

These changes make related logic much easier to maintain and to read.
2020-02-25 15:56:02 +01:00
Dominykas Mostauskis
0bbbe8c1e9
Perform checks automatically on first query
It's quite amazing how obvious this was, yet I missed it for such a long
time. Simplifies usage of LocalBitcoinNode and its internals even more
so. Fixes #4005. The way we structured LocalBitcoinNode was as if the
detection checks were expensive, but they're not. Previously, in some
cases we would notice that a local BTC node wouldn't be used even if it
was detected, so we would skip these checks. This optimization now
doesn't happen. It might be reimplemented in a coming change where more
local BTC node logic is moved into LocalBitcoinNode, but, even if it's
not, this check is fairly cheap. A notable exception is if the local BTC
node is not responding, which would cause us to wait for a timeout, but
if that is the case the mentioned optimization wouldn't help (most of
the time).
2020-02-25 14:04:34 +01:00
beingindot
48877517d6
Tableview multiple rows checkbox column issue
As mentioned in the issue #3984, Have created lot of buy/sell offers
with different currencies spanning across around 30+ offers
so that we need to use scroll bar in my open offers and able to
recreate the issue.
2020-02-25 16:23:42 +05:30
Dominykas Mostauskis
65177fcc4c
Fix unchecked usage of LocalBitcoinNode.isUsable() 2020-02-21 23:52:36 +02:00
Miles Petrov
372e78cec8
Display 2 decimal places for fiat trading fees 2020-02-20 10:45:33 -05:00
Dominykas Mostauskis
f895da416f
Add local Bitcoin node configuration detection
Refactors LocalBitcoinNode and adds detection for local Bitcoin node's
configuration, namely, whether it is pruning and whether it has bloom
filter queries enabled.

The local node's configuration (and its presence) is retrieved by
performing a Bitcoin protocol handshake, which includes the local
Bitcoin node sending us its version message (VersionMessage in
BitcoinJ), which contains the information we're interested in.

Due to some quirky BitcoinJ logic, sometimes the handshake is
interrupted, even though we have received the local node's version
message. That contributes to the handshake handling in LocalBitcoinNode
being a bit complicated.

Refactoring consists of two principle changes: the public interface is
split into methods that trigger checks and methods that retrieve the
cached results. The methods that trigger checks have names starting
with "check", and methods that retrieve the cached results have names
that start with "is".

The other major refactor is the use of Optional<Boolean> instead of
boolean for storing and returning the results, an empty Optional
signifying that the relevant check was not yet performed. Switching to
Optionals has caused other code that queries LocalBitcoinNode to throw
an exception in case the query is made before the checks are. Before,
the results were instantiated to "false" and that would be returned
in case the query was made before the checks completed. This change has
revealed one occasion (Preferences class) where this happens.
2020-02-18 00:34:58 +02:00
sqrrm
0cf7169587
Allow 4 refreshes per trade 2020-02-17 17:50:19 +01:00
Christoph Atteneder
0facdc9b71
Merge pull request #3956 from stejbac/speed-up-supply-view-load
Speed up BSQ supply view load
2020-02-17 14:14:20 +01:00
Christoph Atteneder
e931d06274
Revert to SNAPSHOT version 2020-02-14 13:02:52 +01:00
Christoph Atteneder
1cb7b0521d
Bump version number 2020-02-13 20:19:52 +01:00
Christoph Atteneder
1163b25031
Revert https://github.com/bisq-network/bisq/pull/3883
Fixes issue #3969

This setting prevented the startup of the app on macOS Mojave.
Possibly on some other older macOS versions as well.
2020-02-13 20:19:22 +01:00
Christoph Atteneder
4cb973d9d0
Fix wrong executable path for Windows signing 2020-02-11 16:19:15 +01:00
wiz
b50543e113
Fix btcnode validation regex to handle multiple FQDNs, add tests
Please enter the commit message for your changes. Lines starting
2020-02-11 13:45:18 +01:00
Devin Bileck
580dd14155
Fix address regex
The original implementation of #3895 did not validate IPv6 nor FQDN
addresses.
2020-02-11 13:44:55 +01:00
Steven Barclay
3cfb583e8a
Fix incorrect rounding of BSQ dollar price to whole number
Add a new method to DisplayUtils to restore the old rounding behaviour
of formatVolumeWithCode whenever a fractional volume is required. This
fixes a regression caused by #3926 to remove unnecessarily displayed
decimals for fiat volumes - it appears that in every case but the avg.
dollar price on the BSQ dashboard a whole number should be shown.

Also add a relevant test.
2020-02-11 10:50:35 +01:00
Steven Barclay
6d39bc0894
Do some minor cleanup of DisplayUtils 2020-02-11 10:50:25 +01:00
Steven Barclay
459f0db661
Memoise block times to speed up display of BSQ issued graph
Avoid repeatedly calling DaoFacade.getBlockTime for Issuance objects
with the same chain height, as that method linearly scans the entire
linked list of DaoState blocks, making it quite slow. Instead, memoise
the mapping from chain height to block-time month, so that it is only
computed once per graph point instead of once for every BSQ issuance.
2020-02-10 04:46:59 +00:00
Steven Barclay
97b9f733ab
Do some minor tidying of DAO SupplyView
* Use Java Time instead of java.sql.Date for local date calculations;
* Avoid raw types & unsafe varargs warnings;
* Fix false compiler error in IDEA due to discrepancy with javac;
* Formatting & method visibility.
2020-02-09 21:54:09 +00:00
sqrrm
bc654f439c
Add signing debug logs
Fix warning about possible nullpointer exceptions. Better to have an
explicit check for debug purposes.

Smaller cleanups
2020-02-07 15:58:45 +01:00
sqrrm
ac7d636402
Add signing debug logs (#3948)
* Add signing debug logs

Fix warning about possible nullpointer exceptions. Better to have an
explicit check for debug purposes.

Smaller cleanups

* Fix codacy comment
2020-02-07 15:57:25 +01:00
Niyi Dada
4020b85f66
Added interface and corresponding implementation to handle display of
exceptions on failed vote reveal transaction - fixes issue 3408. Allow
"do not show again".
2020-02-07 07:00:39 +01:00
Christoph Atteneder
5f51af4866
Bump version number for v1.2.6 2020-02-06 11:55:08 +01:00
sqrrm
d88a8ac8f0
Merge pull request #3939 from ripcurlx/improve-local-node-info
Add additional information for a local Bitcoin Core v0.19+
2020-02-05 23:41:33 +01:00
Miles Petrov
872a704508
Reduce number of decimals shown for monetary fiat prices to 2 (#3926)
* Remove decimals for displayed fiat volume amounts

* Reset rounded for privacy info when switching between payment methods

Co-authored-by: Christoph Atteneder <christoph.atteneder@gmail.com>
2020-02-05 17:49:55 +01:00
Christoph Atteneder
90658fb4fe
Add additional information for a local Bitcoin Core v0.19+ 2020-02-05 11:34:05 +01:00
Christoph Atteneder
161f3b85a4
Temporarily deactivate public network option
This will be in place until we are able to check if a connected
Bitcoin Core is configured properly for our requirements
2020-02-05 10:31:25 +01:00
Christoph Atteneder
3183f5f732
Minor code cleanups 2020-02-05 10:29:55 +01:00
sqrrm
6a9f340c20
Trade process refresh (#3922)
* Add keyboard shortcut for trade process refresh, fix #3905

Trades have been getting stuck in the `Wait for payment` state, perhaps
due to lost mailbox messages, but it's hard to know for sure. There is
currently no way to get out of this state except going to mediation.

With ctrl+R the seller can ask the buyer to refresh the current trade
state and the buyer will resend the
`CounterCurrencyTransferStartedMessage` if they are in the phase
FIAT_SENT.

* Disallow more than one trade refresh per day

* Add refresh button for seller step 2, fix #3905

A seller can ask to refresh the trade process once every 24 hours. This
step has been a problem causing a lot of mediation lately so this is a
way to ask the buyer to resend the CounterCurrencyTransferStartedMessage

This fixes the problem when a mailbox message was lost. To test the
seller need to not get the first CounterCurrencyTransferStartedMessage
sent by the buyer, for example by letting the seednode drop it instead
of sending to the seller. When button is pressed
- a RefreshTradeStateRequest is sent from seller to buyer
- the buyer receives the RefreshTradeStateRequest and
 - ignores it if it's not in FIAT_SENT phase
 - responds with a CounterCurrencyTransferStartedMessage if in FIAT_SENT
   phase and has already sent a CounterCurrencyTransferStartedMessage

* Fix codacy remarks

Move incoming message handling method to the right section

* Add refresh button info text

Hide refresh section when not available rather than graying out

Added info text:
Sometimes P2P network messages acknowledging payment are not delivered,
causing trades to get stuck. Hit the button below to make your peer
resend the last message.

* Fix codacy issues
2020-02-04 15:54:47 +01:00
dmos62
a452a31cef
Add new BSQ issued v. burnt chart (#3910)
* Add new BSQ issued v. burnt chart

Adds a new two-line chart that plots the month-bucketed BSQ issued and
burnt series. Until now there wasn't a direct visual means of
examining BSQ issue and burn together. This chart aims to fix that.

* Change wording from 15 days to 15-day moving average

Co-Authored-By: Steve Jain <mfiver@gmail.com>

* Make chart's title more clear

"BSQ issued v. burnt" > "BSQ issued v. BSQ burnt"

Co-Authored-By: Steve Jain <mfiver@gmail.com>

* Fix spacing between chart and title

* Reduce title-chart spacing from 20 to 10

Co-authored-by: Steve Jain <mfiver@gmail.com>
2020-02-03 17:13:14 +01:00
Christoph Atteneder
1d9fda74b9
Not expose offer fee tx id in UI or JSON export 2020-01-29 14:50:09 +01:00
niyid
f2202736da
Fixes issue 3899 - issue not yet reproduced but structured code to (#3920)
prevent occurrence of issue.
2020-01-29 11:36:41 +01:00
beingindot
e890c4138d
Refactoring of and function in ValidationResult class (#3838)
* Refactoring of and function in ValidationResult

This function didnt have terminating short circuit which is important
for and operator functions. Also this function gets called multiple
times since it's validation function. hence improving needed here.

After verifying usages, left out following two classes
1. PercentageNumberValidator - since it's using only two validation
2. PhoneNumberValidator - have variable inputs and this is only place.

* Fix code format issue

Co-authored-by: Christoph Atteneder <christoph.atteneder@gmail.com>
2020-01-29 11:27:01 +01:00
Christoph Atteneder
04868cde92
Merge pull request #3914 from stejbac/fix-trades-charts-memory-leak
Prevent memory leak in CandleStickChart & VolumeChart
2020-01-27 16:42:40 +01:00
Christoph Atteneder
a29d4903a6
Merge pull request #3890 from dmos62/dao-facts-and-figures-outlier-resistance
Improve readability of the daily burnt BSQ chart
2020-01-23 15:18:46 +01:00
Steven Barclay
7b7ea6453b
Prevent memory leak in CandleStickChart & VolumeChart
Ensure that the superclass methods XYChart.removeDataItemFromDisplay &
XYChart.removeSeriesFromDisplay are always called from the implemented
dataItemRemoved & seriesRemoved methods respectively, as specified by
the API javadoc.

This prevents a leak of old Candle & VolumeBar objects every time the
trades charts view is updated. The former is quite substantial, as each
Candle object has a retained size of about 70kB and there are up to 90
candlesticks / volume bars leaked per chart update.
2020-01-22 11:02:12 +00:00
Christoph Atteneder
c403ee7723
Minor code cleanups 2020-01-22 11:34:15 +01:00
Chris Beams
dd5690fe2a
Fix code quality issues
Per Codacy report at
https://app.codacy.com/gh/bisq-network/bisq/pullRequest?prid=4835062

Note that the items claiming that bisq.common.config.Config.* is an
unused import are false positives. These imports are in fact used in
every case.
2020-01-20 16:47:54 +01:00
Chris Beams
37b669c710
Make Config option fields public and inline accessors
See updated Config Javadoc for rationale.
2020-01-20 16:47:54 +01:00
Chris Beams
876b91e1be
Introduce LocalBitcoinNode and tests
This new class encapsulates all functionality related to detecting a
local Bitcoin node and reporting whether or not it was detected.
Previously this functionality was spread across the Config class
(formerly BisqEnvironment) with its mutable static
isLocalBitcoinNodeRunning property and the BisqSetup class with its
checkIfLocalHostNodeIsRunning method. All of this functionality now
lives within the LocalBitcoinNode class, an instance of which is wired
up via Guice and injected wherever necessary.

Note that the code for detecting whether the node is running has been
simplified, in that it is no longer wrapped in its own dedicated Thread.
There appears to be no performance benefit from doing so, and leaving it
in place would have made testing more difficult than necessary.

Several methods in BisqSetup have also been refactored to accept
callbacks indicating which step should be run next. This has the effect
of clarifying when the step2()-step5() methods will be called.
2020-01-20 16:47:52 +01:00
Chris Beams
4ea3290608
Introduce and document static Config.appDataDir()
See Javadoc added in this change and the previous commit message for
further detail and context.
2020-01-20 16:46:58 +01:00
Chris Beams
42a037e19f
Introduce and document static Config.baseCurrencyNetwork()
Previously this static property had been managed within
BaseCurrencyNetwork itself and was accessed directly by callers. Now it
is managed within Config, made private and accessed only via the
new and well-documented baseCurrencyNetwork() method. The same goes for
baseCurrencyNetworkParameters().

It is unfortunate that we must retain these mutable static fields and
accessors, but after trying to eliminate them entirely, this approach is
the lesser of two evils; attempting to use a Config instance and
instance methods only ends up being quite cumbersome to implement,
requiring Config to be injected into many more classes than it currently
is. Getting access to the BaseCurrencyNetwork is basically a special
case, and treating it specially as a static field is in the end the most
pragmatic approach.
2020-01-20 16:46:58 +01:00