Commit graph

137 commits

Author SHA1 Message Date
chimp1984
bf7acb5932
Add toggle for showing volume as USD instead of BTC
Precalculate the USD average prices for tick intervals
and use that for converting the BTC volume to USD volume.
2021-01-08 16:41:55 -05:00
chimp1984
c2174607f5
Add isTakerApiUser field to OfferAvailabilityRequest
Add UNCONF_TX_LIMIT_HIT and MAKER_DENIED_API_USER to AvailabilityResult enum
Apply handling for api filter features
2021-01-04 12:35:29 -05:00
chimp1984
1336cbb569
Fix test 2020-12-25 01:27:29 -05:00
chimp1984
bb3dbf3d78
Add null check (for tests) and fix missing param for test class.
Fix test with price display.
2020-12-15 23:29:53 -05:00
Deus Max
c7290ee091
Replace use of Collections to FXCollections in desktop.
Replace use of java library java.util.Collections with
javafx.collections.FXCollections instead.
Bisq issue#4388.
2020-12-02 21:38:50 +02:00
jmacxx
0af139c666
Fix NPE in test routine caused by PaymentAccount with no name 2020-11-30 09:45:24 -06:00
jmacxx
0ddd333ce6
Don't allow trade start if BitcoinJ is not fully synced
Adds a check that chain height is within 3 blocks of the reported
height from bitcoin peers -> if not the user cannot take an offer
or have an existing offer taken.  It shows a message informing the
user that Bisq is not currently synced, advising them to do an
SPV resync if necessary.

Additionally under Settings/Network a field has been added
to show the chain height of Bisq vs the Peer group.

Added after discussion with chimp1984:
- Correct initialization of chainHeight property
- Rename "Latest BTC block height" display field for clarity
- Enforce chain sync rule for Take Offer scenario
- Enforce chain synch rule for Check offer availability scenario
- change method name to be clearer
2020-11-10 14:15:39 -06:00
ghubstan
ab6be23516
Refactor offer/trade related classes in core and desktop
These refactoring changes are for reducing existing and potential
duplication coming with the addition of new trading protocol support
in the gRPC API.  Some minor styling and logic simplification changes
are also include.

- Convert OfferUtil to injected singleton, and move various offer related
  utility methods into it.

- Delete both MakerFeeProvider classes, which were wrappers around the same
  static old OfferUtil method.

- Inject OfferUtil into CreateOfferDataModel, CreateOfferViewModel,
  TakeOfferDataModel, TakeOfferViewModel, MutableOfferDataModel,
  MutableOfferViewModel, OfferDataModel, EditOfferDataModel,
  EditOfferViewModel

- Refactor TakeOfferViewModel

	Use OfferUtil, remove unused fields & methods.
	Made minor logic simplification, style and formatting changes.

- MutableOfferDataModel

	Made minor logic simplification, style and formatting changes.

- MutableOfferView uses new paymentAccount.isHalCashAccount().

- MutableOfferViewModel

	Refactored to use new VolumeUtil, CoinUtil, OfferUtil.
	Removed unused fields & accessors.
	Made minor style change.

- Refactored OfferDataModel to use new OfferUtil

- Refactor CreateOfferService

	Inject and use OfferUtil
	Move some utility methods to OfferUtil
	Remove unused fields

- Offer

	Refactored to use new VolumeUtil for volume calculations.
	Made stateProperty and errorMessageProperty fields private.

- PaymentAccount

	Moved isHalCashAccount type check to this class.
	Moved getTradeCurrency logic to this class.

- Contract, radeStatistics2, TradeStatistics3

	Refactored to use new VolumeUtil for volume calculations.

- Trade

	Refactored to use new VolumeUtil for volume calculations.
	Made minor logic simplification, style and formatting changes.

- CoinUtil

	Moved some coin utility methods into this class

- CoinUtilTest

	Moved (coin related) tests from CoinCryptoUtilsTest and OfferUtilTest
	into CoinUtilTest, and deleted OfferUtilTest, CoinCryptoUtilsTest.

- Adjust create and edit offer tests to model refactoring
2020-10-20 15:06:44 -03:00
chimp1984
66740b7dc1
Remove unused variable 2020-10-08 19:02:51 -05:00
chimp1984
58d2f1bda9
Apply codacy suggestions
@ripcurl: The complaint about private constructors (using guice this is legit) should be removed IMO.
2020-10-08 18:49:15 -05:00
chimp1984
0e70a99c42
Adjust tests, remove tests which do not make sense anymore 2020-10-08 18:49:13 -05:00
chimp1984
fa0d261397
Fix remaining issues, cleanups, add persit calls, remove unused code,...
Sorry too tired to create another 20 commits...
2020-10-03 12:48:21 -05:00
chimp1984
486e6f4985
Use PersistenceManager 2020-10-03 12:48:20 -05:00
chimp1984
e825613f5c
Use PersistenceManager 2020-10-03 12:48:20 -05:00
chimp1984
802dcad2fb
Refactor: Rename CorruptedDatabaseFilesHandler 2020-10-03 12:48:14 -05:00
chimp1984
23507102dd
Refactor: Move CorruptedDatabaseFilesHandler 2020-10-03 12:48:14 -05:00
chimp1984
9c0b40a3b9
Refactor: Move Regex test methods from GUIUtilTest to RegexValidatorTest in core 2020-09-20 22:16:22 -05:00
chimp1984
c6f2732062
Refactor: Move RegexValidator factory methods to RegexValidatorFactory in core 2020-09-20 22:14:14 -05:00
chimp1984
3675e76194
Refactor: Move egexValidator from desktop to core 2020-09-20 22:13:18 -05:00
Oscar Guindzberg
08cc836bab
bitcoinj 0.15: Fix TransactionAwareTradeTest 2020-09-18 18:29:34 -03:00
Oscar Guindzberg
9a9b067d70
bitcoinj 0.15: Replace deprecated Transaction.getHashAsString with Transaction.getTxId().toString(). 2020-09-18 18:29:33 -03:00
wiz
0869f9a016
Use lots of regex to add http or https for XMR explorer API endpoint
* If Tor *.onion hostname, use HTTP with Tor proxy
* If 127.0.0.1 or localhost, use HTTP without Tor proxy
* If LAN address or *.local FQDN, use HTTP without Tor proxy
* If any other FQDN hostname, use HTTPS with Tor proxy
2020-09-08 00:26:56 +09:00
Christoph Atteneder
cfc3252f7b
Merge pull request #4347 from sqrrm/deposit-improvements
Deposit improvements
2020-07-03 21:20:27 +02:00
sqrrm
358032b659
Fix broken tests 2020-07-01 00:01:17 +02:00
jmacxx
366390a468
Fix tor v3 address validation
The regex validation for addresses was not accepting tor v3 format.
This patch allows tor v3 addresses which are always 56 chars in length
(whereas tor v2 addresses are always 16 chars in length).
2020-06-30 08:47:45 -05:00
jmacxx
f4064dfcfb
Fix address validation for whitespace after comma
Typical comma separated values have a space after each comma
in order to make the list more human-readable.  In some areas
of bisq, comma separated lists are generated this way (see #4203),
but the validation of comma separated addresses was not accepting
spaces after commas.  This change to the regex allows optional
whitespace after comma separators.  A new test has been
added to validate the scenario of whitespace after comma.

Fixes #4203
2020-05-10 16:40:36 -05:00
Steven Barclay
c261933928
Compute height cells lazily to speed up DaoStateMonitorView
Avoid a bottleneck computing the cycle index & calling 'Res.get(..)' for
every block since genesis in the DAO state monitor view, when building
the DaoStateBlockListItem objects, by making the 'height' field lazy. To
do this, pass the cycle index into the constructor using an IntSupplier
and make the height a memoised 'Supplier<String>' with a custom getter.

Also add a unit test to check that the auto-generated equals & hashCode
methods still work as expected, as it isn't totally clear what Lombok
would do when a field type differs from its getter return type.
2020-03-09 15:35:44 +08:00
wiz
7f92d12cc9
Fix btcnode validation regex to handle multiple FQDNs, add tests
Please enter the commit message for your changes. Lines starting
2020-02-11 21:12:12 +09:00
Devin Bileck
0f71ebb2a5
Fix address regex
The original implementation of #3895 did not validate IPv6 nor FQDN
addresses.
2020-02-11 11:39:06 +01:00
Steven Barclay
c2b519a04a
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-08 23:15:45 +00: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
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
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
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
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
Chris Beams
e67746b0a4
Remove TestConfig in favor of reworked Config ctors 2020-01-20 16:46:57 +01:00
Chris Beams
f5a1854762
Remove now unused BisqEnvironment class
In previous commits, BisqEnvironment functionality has been fully ported
to the new, simpler and more type-safe Config class. This change removes
BisqEnvironment and all dependencies on the Spring Framework Environment
interface that it implements.

The one exception is the pricenode module, which is separate and apart
from the rest of the codebase in that it is a standalone, Spring-based
HTTP service.
2020-01-20 16:41:19 +01:00
Chris Beams
519259b752
Move 'fullDaoNode' option handling to Config 2020-01-20 16:40:31 +01:00
Chris Beams
3841e6b1dd
Move 'rpcBlockNotificationPort' option handling to Config 2020-01-20 16:40:30 +01:00
Chris Beams
90031543b9
Move 'useTorForBtc' option handling to Config 2020-01-20 16:39:35 +01:00
Chris Beams
b34d59c0a9
Introduce Config as replacement for BisqEnvironment
Prior to this commit, BisqExecutable has been responsible for parsing
command line and config file options and BisqEnvironment has been
responsible for assigning default values to those options and providing
access to option values to callers throughout the codebase.

This approach has worked, but at considerable costs in complexity,
verbosity, and lack of any type-safety in option values. BisqEnvironment
is based on the Spring Framework's Environment abstraction, which
provides a great deal of flexibility in handling command line options,
environment variables, and more, but also operates on the assumption
that such inputs have String-based values.

After having this infrastructure in place for years now, it has become
evident that using Spring's Environment abstraction was both overkill
for what we needed and limited us from getting the kind of concision and
type saftey that we want. The Environment abstraction is by default
actually too flexible. For example, Bisq does not want or need to have
environment variables potentially overriding configuration file values,
as this increases our attack surface and makes our threat model more
complex. This is why we explicitly removed support for handling
environment variables quite some time ago.

The BisqEnvironment class has also organically evolved toward becoming a
kind of "God object", responsible for more than just option handling. It
is also, for example, responsible for tracking the status of the user's
local Bitcoin node, if any. It is also responsible for writing values to
the bisq.properties config file when certain ban filters arrive via the
p2p network. In the commits that follow, these unrelated functions will
be factored out appropriately in order to separate concerns.

As a solution to these problems, this commit begins the process of
eliminating BisqEnvironment in favor of a new, bespoke Config class
custom-tailored to Bisq's needs. Config removes the responsibility for
option parsing from BisqExecutable, and in the end provides "one-stop
shopping" for all option parsing and access needs.

The changes included in this commit represent a proof of concept for the
Config class, where handling of a number of options has been moved from
BisqEnvironment and BisqExecutable over to Config. Because the migration
is only partial, both Config and BisqEnvironment are injected
side-by-side into calling code that needs access to options. As the
migration is completed, BisqEnvironment will be removed entirely, and
only the Config object will remain.

An additional benefit of the elimination of BisqEnvironment is that it
will allow us to remove our dependency on the Spring Framework (with the
exception of the standalone pricenode application, which is Spring-based
by design).

Note that while this change and those that follow it are principally a
refactoring effort, certain functional changes have been introduced. For
example, Bisq now supports a `--configFile` argument at the command line
that functions very similarly to Bitcoin Core's `-conf` option.
2020-01-20 16:37:54 +01:00
Dominykas Mostauskis
c6941cf412
Provide an online moving average algorithm
Allows computing a simple moving average lazily from a Stream, to be
used in plotting noisy data. Will be used in the daily burnt BSQ chart
under 'DAO -> Facts and Figures'. Can be easily modified to compute
other moving averages, like exponential.
2020-01-18 15:24:26 +02:00
Devin Bileck
5e52dc58a8
Add input validation for ignored peers and BTC nodes
Ignored peers and BTC nodes input fields will now only accept IPv4 and
V2 onion addresses, with multiple addresses separated using a comma.
2020-01-12 22:52:32 -08:00
Christoph Atteneder
e7c16a6fe7
Use general "(required minimum)" label with BTC value if min value is used 2020-01-07 18:20:33 +01:00
Christoph Atteneder
e6f491c8ac
Add information if minimum trading fee or minimum security deposit is used 2020-01-07 16:32:24 +01:00
Steven Barclay
0bcf238d71
Optimise CurrencyUtil.get[Fiat|Crypto|Trade]Currency
Use a LinkedHashMap in place of a List, for the caching CurrencyUtil
fields 'allSortedFiatCurrencies' & 'allSortedCryptoCurrencies', using
the same iteration order as before. In this way, we can avoid a linear
search in the lookup methods getFiatCurrency & getCryptoCurrency.

In particular, this speeds up the activation of TradesChartsView (and to
a lesser extent OfferBookChartView), which make a lot of calls to
CurrencyUtil.getTradeCurrency in the fillTradeCurrencies/updateChartData
methods respectively.
2019-12-23 22:29:32 +00:00
Steven Barclay
24889c87d7
Remove unused fields passed as constructor params from various classes
These are mostly injected objects that are now redundant, such as some
CoinFormatter and Preferences fields.

Also do some additional minor tidying of TradesChartsViewModel.
2019-12-22 23:48:57 +00:00
Steven Barclay
78d61e0958
Remove unused parameters from assorted methods
Exclude abstract or default methods, as well as cases where the
parameter is currently unused but is probably intended to be used later.
2019-12-19 03:42:54 +00:00
Christoph Atteneder
87670c1e5e
Display warning based on supported languages by mediators and refund agents 2019-12-04 12:32:25 +01:00
Justin Carter
80fda1ec2c
Inject CoinFormatter via BTC_FORMATTER_KEY 2019-11-19 15:54:18 +01:00