mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 15:10:44 +01:00
Merge branch 'master' into mk_master
This commit is contained in:
commit
fc81c92f20
39 changed files with 516 additions and 192 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -26,3 +26,5 @@ build
|
|||
desktop.ini
|
||||
*/target/*
|
||||
*.class
|
||||
deploy
|
||||
releases/*
|
||||
|
|
|
@ -18,7 +18,7 @@ Status
|
|||
------
|
||||
Bisq has released the beta version on the 27th of April 2016. It is operational since that time without any major incident.
|
||||
Please follow the current development state at our [road map]( https://bisq.network/roadmap).
|
||||
For the latest version checkout our [releases page](https://github.com/bisq-network/exchange/releases) at Github.
|
||||
For the latest version checkout our [releases page](https://github.com/bisq-network/exchange/releases) at GitHub.
|
||||
|
||||
Building from source
|
||||
--------------------
|
||||
|
|
11
build.gradle
11
build.gradle
|
@ -3,7 +3,7 @@ buildscript {
|
|||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
|
||||
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4'
|
||||
classpath files('gradle/witness/gradle-witness.jar')
|
||||
}
|
||||
}
|
||||
|
@ -12,14 +12,21 @@ apply plugin: 'java'
|
|||
apply plugin: 'application'
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'witness'
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
|
||||
group = 'network.bisq'
|
||||
version = '-SNAPSHOT'
|
||||
version = '0.7.0-SNAPSHOT'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
|
||||
mainClassName = 'bisq.desktop.app.BisqAppMain'
|
||||
|
||||
jar {
|
||||
manifest.attributes(
|
||||
'Class-Path': 'bcpg-jdk15on-1.56.jar bcprov-jdk15on-1.56.jar'
|
||||
)
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
options.encoding = 'UTF-8'
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Contributing to bisq
|
||||
Contributing to Bisq
|
||||
============================
|
||||
|
||||
Pull requests
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Restart bisq seed node daemons whose resident memory (RSS)
|
||||
# Restart Bisq seed node daemons whose resident memory (RSS)
|
||||
# is over MAX_RSS_MiB.
|
||||
#
|
||||
# Scripts in the INITDIR must contain a ``SN_ADDRESS=<host:port>``
|
||||
|
@ -13,7 +13,7 @@ MAX_RSS_MiB=400
|
|||
PIDDIR=/var/run/bisq-sn
|
||||
INITDIR=/etc/init.d
|
||||
|
||||
# Restart de daemon with the given address.
|
||||
# Restart the daemon with the given address.
|
||||
restart() {
|
||||
rcscript=$(grep -El "^SN_ADDRESS=['\"]?$1['\"]?" $INITDIR/*)
|
||||
if [ "$rcscript" ]; then
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Here are the typical locations for the data directory:
|
||||
|
||||
# Mac OSX: /Users/username/Library/Application Support/bisq/
|
||||
# macOS: /Users/username/Library/Application Support/bisq/
|
||||
# Linux: /home/username/.bisq/
|
||||
# Windows XP: C:\Documents and Settings\username\Application Data\bisq\
|
||||
# Windows Vista or 7: %appdata%/bisq/
|
||||
|
|
|
@ -103,7 +103,7 @@ If you want to build the binaries check out the build scripts under the package
|
|||
DAO full node
|
||||
-----------------
|
||||
If you want to run your own BSQ transaction verification node you have to run Bitcoin Core with RPC enabled and
|
||||
use dedicated program arguments for the bisq node.
|
||||
use dedicated program arguments for the Bisq node.
|
||||
See https://github.com/bisq-network/bisq-desktop/blob/master/doc/rpc.md for more details.
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ JAVA_HOME=/usr/lib/jvm/java-8-oracle
|
|||
# and add JAVA_HOME to .bashrc
|
||||
# export JAVA_HOME=/usr/lib/jvm/java-8-oracle
|
||||
|
||||
echo "Install bisq"
|
||||
echo "Install Bisq"
|
||||
cd ~/bisq
|
||||
./gradlew build
|
||||
cd ..
|
||||
|
|
|
@ -6,25 +6,25 @@ NOTE: this doc is out of date and should probably be deleted. Protobuffer stuff
|
|||
|
||||
Protobuffer is installed automatically via the Gradle build.
|
||||
|
||||
## Why protobuffer?
|
||||
## Why Protobuffer?
|
||||
|
||||
There are a number of reasons why protobuffer was chosen, here are some of them:
|
||||
* avoids java serialisation security issues
|
||||
* smaller in size than java serialisation (less network usage)
|
||||
* All P2P network messages are described in a clear protobuffer schema
|
||||
* All P2P network messages are described in a clear Protobuffer schema
|
||||
* allows to evolve your schema in a backward compatible way
|
||||
* can generate code in many languages, making alternative bisq clients or monitoring tools easier
|
||||
|
||||
## Which classes are transformed to protobuffer?
|
||||
## Which classes are transformed to Protobuffer?
|
||||
|
||||
All classes in the 'wire' module. This module contains the following classes:
|
||||
|
||||
* classes sent over the wire (P2P network)
|
||||
* classes serialized to disk
|
||||
|
||||
## Where are the protobuffer related files?
|
||||
## Where are the Protobuffer related files?
|
||||
|
||||
The protobuffer schema file(s), generated classes and domain classes are in the 'wire' module.
|
||||
The Protobuffer schema file(s), generated classes and domain classes are in the 'wire' module.
|
||||
Look for *.proto for the schema files.
|
||||
|
||||
## How is serialisation done (Java -> Protobuffer)
|
||||
|
@ -36,7 +36,7 @@ Some interfaces have a 'toProtobuf' method to force all extending classes to imp
|
|||
Some interfaces have a 'toProtobuf' method to force all extending classes to implement that method.
|
||||
|
||||
|
||||
## If fields are not filled in, what are protobuffer's default values?
|
||||
## If fields are not filled in, what are Protobuffer's default values?
|
||||
|
||||
Read this very carefully:
|
||||
|
||||
|
@ -82,7 +82,7 @@ https://ruedigermoeller.github.io/fast-serialization/
|
|||
* Try to use value objects for data which gets serialized with PB
|
||||
* Use toProto and a static fromProto in the class which gets serialized
|
||||
* Use proto as name for the PB param in the fromProto method
|
||||
* If a constructor is used only for PB make it private and put it to the PB section, so its clear it is used only in that context
|
||||
* If a constructor is used only for PB make it private and put it to the PB section, so it's clear it is used only in that context
|
||||
* Use same name for classes and fields in PB definition as in the java code base
|
||||
* Use final
|
||||
* Use Lombok Annotations
|
||||
|
|
|
@ -20,7 +20,7 @@ For mainnet:
|
|||
--fullDaoNode=true --rpcUser=bisq --rpcPassword=bisqPW --rpcPort=8332 --rpcBlockNotificationPort=4159
|
||||
|
||||
If you use mainnet it is recommended to use a Bitcoin node with no funds in the wallet to avoid security risks when
|
||||
enabling rpc or take sufficient precautions from your network setup.
|
||||
enabling RPC or take sufficient precautions from your network setup.
|
||||
|
||||
In the bitcoin.conf file you need to set txindex=1.
|
||||
That causes a re-index of the whole data base which takes considerable time with a
|
||||
|
@ -31,6 +31,6 @@ If you want to dump the blockchain data to json add: --dumpBlockchainData=true (
|
|||
If you use RegTest in development environment you need to create the genesis transaction.
|
||||
Create one Bitcoin transaction from Bitcoin Core to one or 2 Bisq instances using the BSQ receive addresses from those apps (1 tx with 2 or more outputs to the Bisq app).
|
||||
If you copy the BSQ address and use that in Bitcoin Core you need to remove the "B" at the beginning. This is only for protection to mix up BTC and BSQ addresses but without the B it is a native Bitcoin address.
|
||||
Create one block with the debug commandline inside Bitcoin Core (generate 1). Look up the block height in the info screen in the debug window.
|
||||
Create one block with the debug command line inside Bitcoin Core (generate 1). Look up the block height in the info screen in the debug window.
|
||||
Set the block height and transaction ID at BsqBlockChain.BTC_REG_TEST_GENESIS_TX_ID and BsqBlockChain.BTC_REG_TEST_GENESIS_BLOCK_HEIGHT.
|
||||
Restart the Bisq apps. After that the app will recognize the received Bitcoin as BSQ.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## UI Architecure pattern:
|
||||
## UI Architecture pattern:
|
||||
We use a variant of the **Presentation Model** pattern which has some similarities with the **Model View ViewModel**
|
||||
(MVVM used in Silverlight and WPF) as we use data bindings, though there are differences in the way the view and
|
||||
the "code behind" is organized (due to different framework features/support).
|
||||
|
@ -25,7 +25,7 @@ For prototyping the UI we stick first with a more rapid development style approa
|
|||
* View/CB is responsible for the visual representation. No logic. No state.
|
||||
* Presentation model holds the view/CB state.
|
||||
* Presentation model handles view specific logic.
|
||||
* Presentation model does validation of user in put and formatting of domain data.
|
||||
* Presentation model does validation of user input and formatting of domain data.
|
||||
* Model is the domain specific representation of the view. It holds domain data and handles domain logic.
|
||||
|
||||
|
||||
|
|
51
package/29CDFD3B.asc
Normal file
51
package/29CDFD3B.asc
Normal file
|
@ -0,0 +1,51 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
NYeOG8Xnm4CxuWqUu0FDMv6BhkMCTz2X4xcnbtI=
|
||||
=9LRS
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
50
package/5BC5ED73.asc
Normal file
50
package/5BC5ED73.asc
Normal file
|
@ -0,0 +1,50 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=AWz+
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
156
package/F379A1C6.asc
Normal file
156
package/F379A1C6.asc
Normal file
|
@ -0,0 +1,156 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
vUTpzlk=
|
||||
=ZIr3
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -6,11 +6,11 @@ mkdir -p deploy
|
|||
set -e
|
||||
|
||||
# Edit version
|
||||
version=0.6.7
|
||||
version=0.7.0
|
||||
|
||||
dir="/media/sf_vm_shared_ubuntu14_32bit"
|
||||
|
||||
# Note: fakeroot needs to be installed on linux
|
||||
# Note: fakeroot needs to be installed on Linux
|
||||
$JAVA_HOME/bin/javapackager \
|
||||
-deploy \
|
||||
-Bruntime="$JAVA_HOME/jre" \
|
||||
|
@ -26,8 +26,8 @@ $JAVA_HOME/bin/javapackager \
|
|||
-vendor Bisq \
|
||||
-outdir deploy \
|
||||
-srcfiles "$dir/Bisq-$version.jar" \
|
||||
-srcfiles "$dir/bcpg-jdk15on.jar" \
|
||||
-srcfiles "$dir/bcprov-jdk15on.jar" \
|
||||
-srcfiles "$dir/bcpg-jdk15on-1.56.jar" \
|
||||
-srcfiles "$dir/bcprov-jdk15on-1.56.jar" \
|
||||
-srcfiles package/linux/LICENSE \
|
||||
-appclass bisq.desktop.app.BisqAppMain \
|
||||
-BjvmOptions=-Xss1280k \
|
||||
|
@ -44,7 +44,7 @@ $JAVA_HOME/bin/javapackager \
|
|||
|
||||
# sudo alien -r -c -k deploy/bundles/bisq-$version.deb
|
||||
|
||||
cp "deploy/bundles/bisq-$version.deb" "/home/bitsquare/Desktop/Bisq-32bit-$version.deb"
|
||||
cp "deploy/bundles/bisq-$version.deb" "/home/$USER/Desktop/Bisq-32bit-$version.deb"
|
||||
mv "deploy/bundles/bisq-$version.deb" "/media/sf_vm_shared_ubuntu14_32bit/Bisq-32bit-$version.deb"
|
||||
|
||||
# mv "bisq-$version-1.i386.rpm" "/media/sf_vm_shared_ubuntu14_32bit/Bisq-32bit-$version.rpm"
|
||||
|
|
|
@ -6,11 +6,11 @@ mkdir -p deploy
|
|||
set -e
|
||||
|
||||
# Edit version
|
||||
version=0.6.7
|
||||
version=0.7.0
|
||||
|
||||
dir="/media/sf_vm_shared_ubuntu"
|
||||
|
||||
# Note: fakeroot needs to be installed on linux
|
||||
# Note: fakeroot needs to be installed on Linux
|
||||
$JAVA_HOME/bin/javapackager \
|
||||
-deploy \
|
||||
-Bruntime="$JAVA_HOME/jre" \
|
||||
|
@ -26,8 +26,8 @@ $JAVA_HOME/bin/javapackager \
|
|||
-vendor Bisq \
|
||||
-outdir deploy \
|
||||
-srcfiles "$dir/Bisq-$version.jar" \
|
||||
-srcfiles "$dir/bcpg-jdk15on.jar" \
|
||||
-srcfiles "$dir/bcprov-jdk15on.jar" \
|
||||
-srcfiles "$dir/bcpg-jdk15on-1.56.jar" \
|
||||
-srcfiles "$dir/bcprov-jdk15on-1.56.jar" \
|
||||
-srcfiles package/linux/LICENSE \
|
||||
-appclass bisq.desktop.app.BisqAppMain \
|
||||
-BjvmOptions=-Xss1280k \
|
||||
|
@ -44,7 +44,7 @@ $JAVA_HOME/bin/javapackager \
|
|||
# uncomment because the build VM does not support alien
|
||||
#sudo alien -r -c -k deploy/bundles/bisq-$version.deb
|
||||
|
||||
cp "deploy/bundles/bisq-$version.deb" "/home/mk/Desktop/Bisq-64bit-$version.deb"
|
||||
cp "deploy/bundles/bisq-$version.deb" "/home/$USER/Desktop/Bisq-64bit-$version.deb"
|
||||
mv "deploy/bundles/bisq-$version.deb" "/media/sf_vm_shared_ubuntu/Bisq-64bit-$version.deb"
|
||||
#mv "bisq-$version-1.x86_64.rpm" "/media/sf_vm_shared_ubuntu/Bisq-64bit-$version.rpm"
|
||||
rm -r deploy/
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
# pull base image
|
||||
FROM openjdk:8-jdk
|
||||
ENV version 0.6.7
|
||||
ENV version 0.7.0
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends openjfx && rm -rf /var/lib/apt/lists/* &&
|
||||
apt-get install -y vim fakeroot
|
||||
|
|
31
package/linux/rpm.sh
Normal file
31
package/linux/rpm.sh
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/bash
|
||||
|
||||
## From https://github.com/bisq-network/bisq-desktop/issues/401#issuecomment-372091261
|
||||
|
||||
version=0.7.0
|
||||
|
||||
alien -r -g /home/$USER/Desktop/Bisq-64bit-$version.deb
|
||||
find bisq-$version -type f | while read LIB; do LDDOUT=$(ldd $LIB 2>&1); LDDRETVAL=$?;if [ \( -z "${LDDOUT%%*you do not have execution permission for*}" \) -a \( $LDDRETVAL -eq 0 \) ]; then chmod -v +x $LIB;fi;done
|
||||
cat bisq-$version/bisq-$version-2.spec | while read LINE; do if echo "$LINE" | grep -q "_unpackaged_files_terminate_build" ;then break; else echo "$LINE";fi;done > bisq.spec
|
||||
rm bisq-$version/bisq-$version-2.spec
|
||||
echo "AutoReqProv: no" >> bisq.spec
|
||||
find bisq-$version | /usr/lib/rpm/rpmdeps --requires 2>&1| while read LIB; do if [ -z "$(find bisq-$version -name ${LIB%%(*}\*)" ]; then echo "Requires: $LIB"; fi; done | egrep -v '(libavcodec|libavformat|libavutil)' >> bisq.spec
|
||||
cat >> bisq.spec << "EOF"
|
||||
%description
|
||||
Bisq is ....
|
||||
|
||||
%preun
|
||||
if [ "$1" = 0 ]; then
|
||||
xdg-desktop-menu uninstall --novendor /opt/Bisq/Bisq.desktop
|
||||
fi
|
||||
|
||||
%post
|
||||
xdg-desktop-menu install --novendor /opt/Bisq/Bisq.desktop
|
||||
|
||||
%files
|
||||
/opt/Bisq
|
||||
EOF
|
||||
|
||||
pushd bisq-$version
|
||||
rpmbuild --buildroot=$(pwd) -bb --target x86_64 ../bisq.spec
|
||||
popd
|
|
@ -22,7 +22,7 @@
|
|||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1</string>
|
||||
<!-- CFBundleSignature exists only for compatibility with Classic Mac OS apps and documents. Modern Mac OS X apps don't need to worry about assigning a Bundle Signature.-->
|
||||
<!-- CFBundleSignature exists only for compatibility with Classic macOS apps and documents. Modern macOS apps don't need to worry about assigning a Bundle Signature.-->
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
|
@ -30,7 +30,7 @@
|
|||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright (C) 2015</string>
|
||||
<string>Copyright (C) 2018</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<string>true</string>
|
||||
<key>JVMRuntime</key>
|
||||
|
@ -40,7 +40,7 @@
|
|||
<key>JVMAppClasspath</key>
|
||||
<string></string>
|
||||
<key>JVMMainJarName</key>
|
||||
<string>shaded.jar</string>
|
||||
<string>Bisq-0.7.0.jar</string>
|
||||
<key>JVMPreferencesID</key>
|
||||
<string>bisq</string>
|
||||
<key>JVMOptions</key>
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd ../../
|
||||
cd $(dirname $0)/../../
|
||||
|
||||
mkdir -p deploy
|
||||
|
||||
set -e
|
||||
|
||||
version="0.6.7"
|
||||
version="0.7.0"
|
||||
|
||||
./gradlew build
|
||||
./gradlew --include-build ../common --include-build ../assets --include-build ../p2p --include-build ../core build -x test shadowJar
|
||||
|
||||
EXE_JAR=build/libs/bisq-desktop-0.7.0-all.jar
|
||||
|
||||
linux32=build/vm/vm_shared_ubuntu14_32bit
|
||||
linux64=build/vm/vm_shared_ubuntu
|
||||
|
@ -16,14 +19,44 @@ win64=build/vm/vm_shared_windows
|
|||
|
||||
mkdir -p $linux32 $linux64 $win32 $win64
|
||||
|
||||
cp build/libs/bisq-desktop.jar "deploy/Bisq-$version.jar"
|
||||
cp $EXE_JAR "deploy/Bisq-$version.jar"
|
||||
|
||||
# copy app jar to VM shared folders
|
||||
cp build/libs/bisq-desktop.jar "$linux32/Bisq-$version.jar"
|
||||
cp build/libs/bisq-desktop.jar "$linux64/Bisq-$version.jar"
|
||||
cp $EXE_JAR "$linux32/Bisq-$version.jar"
|
||||
cp $EXE_JAR "$linux64/Bisq-$version.jar"
|
||||
# At windows we don't add the version nr as it would keep multiple versions of jar files in app dir
|
||||
cp build/libs/bisq-desktop.jar "$win32/Bisq.jar"
|
||||
cp build/libs/bisq-desktop.jar "$win64/Bisq.jar"
|
||||
cp $EXE_JAR "$win32/Bisq.jar"
|
||||
cp $EXE_JAR "$win64/Bisq.jar"
|
||||
|
||||
# copy bouncycastle jars to VM shared folders
|
||||
bc_lib1=bcpg-jdk15on-1.56.jar
|
||||
cp build/app/lib/$bc_lib1 "$linux32/$bc_lib1"
|
||||
cp build/app/lib/$bc_lib1 "$linux64/$bc_lib1"
|
||||
cp build/app/lib/$bc_lib1 "$win32/$bc_lib1"
|
||||
cp build/app/lib/$bc_lib1 "$win64/$bc_lib1"
|
||||
|
||||
bc_lib2=bcprov-jdk15on-1.56.jar
|
||||
cp build/app/lib/$bc_lib2 "$linux32/$bc_lib2"
|
||||
cp build/app/lib/$bc_lib2 "$linux64/$bc_lib2"
|
||||
cp build/app/lib/$bc_lib2 "$win32/$bc_lib2"
|
||||
cp build/app/lib/$bc_lib2 "$win64/$bc_lib2"
|
||||
|
||||
# Copy packager scripts to VM. No need to checkout the source as we only are interested in the build scripts.
|
||||
rm -rf "$linux32/package"
|
||||
rm -rf "$linux64/package"
|
||||
rm -rf "$win32/package"
|
||||
rm -rf "$win64/package"
|
||||
|
||||
mkdir -p "$linux32/package"
|
||||
mkdir -p "$linux64/package"
|
||||
mkdir -p "$win32/package"
|
||||
mkdir -p "$win64/package"
|
||||
|
||||
cp -r package/linux "$linux32/package"
|
||||
cp -r package/linux "$linux64/package"
|
||||
cp -r package/windows "$win32/package"
|
||||
cp -r package/windows "$win64/package"
|
||||
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
JAVA_HOME=$(/usr/libexec/java_home)
|
||||
|
@ -33,7 +66,7 @@ echo "Using JAVA_HOME: $JAVA_HOME"
|
|||
$JAVA_HOME/bin/javapackager \
|
||||
-deploy \
|
||||
-BappVersion=$version \
|
||||
-Bmac.CFBundleIdentifier=bisq \
|
||||
-Bmac.CFBundleIdentifier=io.bisq \
|
||||
-Bmac.CFBundleName=Bisq \
|
||||
-Bicon=package/osx/Bisq.icns \
|
||||
-Bruntime="$JAVA_HOME/jre" \
|
||||
|
@ -43,6 +76,8 @@ $JAVA_HOME/bin/javapackager \
|
|||
-vendor Bisq \
|
||||
-outdir deploy \
|
||||
-srcfiles "deploy/Bisq-$version.jar" \
|
||||
-srcfiles "build/app/lib//$bc_lib1" \
|
||||
-srcfiles "build/app/lib//$bc_lib2" \
|
||||
-appclass bisq.desktop.app.BisqAppMain \
|
||||
-outfile Bisq
|
||||
|
||||
|
|
65
package/osx/finalize.sh
Normal file → Executable file
65
package/osx/finalize.sh
Normal file → Executable file
|
@ -1,34 +1,42 @@
|
|||
#!/bin/bash
|
||||
|
||||
version="0.6.7"
|
||||
cd ../../
|
||||
|
||||
target_dir="/Users/dev/Documents/__bisq/_releases/$version"
|
||||
src_dir="/Users/dev/idea/exchange"
|
||||
version="0.7.0"
|
||||
|
||||
target_dir="releases/$version"
|
||||
|
||||
linux32=build/vm/vm_shared_ubuntu14_32bit
|
||||
linux64=build/vm/vm_shared_ubuntu
|
||||
win32=build/vm/vm_shared_windows_32bit
|
||||
win64=build/vm/vm_shared_windows
|
||||
|
||||
#macOS=build/vm/vm_shared_macosx
|
||||
macOS=deploy
|
||||
|
||||
# Set BISQ_GPG_USER as environment var to the email address used for gpg signing. e.g. BISQ_GPG_USER=manfred@bitsquare.io
|
||||
|
||||
rm -r $target_dir
|
||||
|
||||
mkdir -p $target_dir
|
||||
|
||||
# new signing key
|
||||
#cp "$target_dir/../7D20BB32.asc" "$target_dir/"
|
||||
|
||||
# sig key mkarrer
|
||||
cp "$target_dir/../F379A1C6.asc" "$target_dir/"
|
||||
cp "$target_dir/../../package/F379A1C6.asc" "$target_dir/"
|
||||
# sig key cbeams
|
||||
cp "$target_dir/../5BC5ED73.asc" "$target_dir/"
|
||||
cp "$target_dir/../../package/5BC5ED73.asc" "$target_dir/"
|
||||
# sig key Christoph Atteneder
|
||||
cp "$target_dir/../29CDFD3B.asc" "$target_dir/"
|
||||
cp "$target_dir/../../package/29CDFD3B.asc" "$target_dir/"
|
||||
# signing key
|
||||
cp "$target_dir/../signingkey.asc" "$target_dir/"
|
||||
cp "$target_dir/../../package/signingkey.asc" "$target_dir/"
|
||||
|
||||
mac="Bisq-$version.dmg"
|
||||
cp "$src_dir/deploy/$mac" "$target_dir/"
|
||||
dmg="Bisq-$version.dmg"
|
||||
cp "$macOS/$dmg" "$target_dir/"
|
||||
|
||||
deb32="Bisq-32bit-$version.deb"
|
||||
cp "/Users/dev/vm_shared_ubuntu14_32bit/$deb32" "$target_dir/"
|
||||
cp "$linux32/$deb32" "$target_dir/"
|
||||
|
||||
deb64="Bisq-64bit-$version.deb"
|
||||
cp "/Users/dev/vm_shared_ubuntu/$deb64" "$target_dir/"
|
||||
cp "$linux64/$deb64" "$target_dir/"
|
||||
|
||||
#rpm32="Bisq-32bit-$version.rpm"
|
||||
#cp "/Users/dev/vm_shared_ubuntu14_32bit/$rpm32" "$target_dir/"
|
||||
|
@ -38,27 +46,28 @@ cp "/Users/dev/vm_shared_ubuntu/$deb64" "$target_dir/"
|
|||
|
||||
|
||||
exe="Bisq-$version.exe"
|
||||
win32="Bisq-32bit-$version.exe"
|
||||
cp "/Users/dev/vm_shared_windows_32bit/bundles/$exe" "$target_dir/$win32"
|
||||
win64="Bisq-64bit-$version.exe"
|
||||
cp "/Users/dev/vm_shared_windows/bundles/$exe" "$target_dir/$win64"
|
||||
exe32="Bisq-32bit-$version.exe"
|
||||
cp "$win32/bundles/$exe" "$target_dir/$exe32"
|
||||
exe64="Bisq-64bit-$version.exe"
|
||||
cp "$win64/bundles/$exe" "$target_dir/$exe64"
|
||||
#cp "/Users/dev/vm_shared_windows/bundles/$exe" "/Users/dev/vm_shared_win10/$win64"
|
||||
|
||||
cd "$target_dir"
|
||||
|
||||
|
||||
gpg --digest-algo SHA256 --local-user manfred@bitsquare.io --output $mac.asc --detach-sig --armor $mac
|
||||
gpg --digest-algo SHA256 --local-user manfred@bitsquare.io --output $deb64.asc --detach-sig --armor $deb64
|
||||
gpg --digest-algo SHA256 --local-user manfred@bitsquare.io --output $deb32.asc --detach-sig --armor $deb32
|
||||
gpg --digest-algo SHA256 --local-user manfred@bitsquare.io --output $win64.asc --detach-sig --armor $win64
|
||||
gpg --digest-algo SHA256 --local-user manfred@bitsquare.io --output $win32.asc --detach-sig --armor $win32
|
||||
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output $dmg.asc --detach-sig --armor $dmg
|
||||
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output $deb64.asc --detach-sig --armor $deb64
|
||||
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output $deb32.asc --detach-sig --armor $deb32
|
||||
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output $exe64.asc --detach-sig --armor $exe64
|
||||
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output $exe32.asc --detach-sig --armor $exe32
|
||||
|
||||
gpg --digest-algo SHA256 --verify $mac{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $dmg{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $deb64{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $deb32{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $win64{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $win32{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $exe64{.asc*,}
|
||||
gpg --digest-algo SHA256 --verify $exe32{.asc*,}
|
||||
|
||||
cp -r $target_dir /Users/dev/vm_shared_windows_32bit/
|
||||
mkdir ../../build/vm/vm_shared_windows_32bit/$version
|
||||
cp -r . ../../build/vm/vm_shared_windows_32bit/$version
|
||||
|
||||
open "$target_dir"
|
||||
open "."
|
||||
|
|
1
package/signingkey.asc
Normal file
1
package/signingkey.asc
Normal file
|
@ -0,0 +1 @@
|
|||
F379A1C6
|
|
@ -1,11 +1,11 @@
|
|||
:: Invoke from bisq home directory
|
||||
:: Invoke from Bisq home directory
|
||||
:: edit iss file -> AppVersion
|
||||
:: edit -> -BappVersion and -srcfiles
|
||||
|
||||
:: 32 bit build
|
||||
:: Needs Inno Setup 5 or later (http://www.jrsoftware.org/isdl.php)
|
||||
|
||||
SET version=0.6.7
|
||||
SET version=0.7.0
|
||||
|
||||
:: Private setup
|
||||
SET outdir=\\VBOXSVR\vm_shared_windows_32bit
|
||||
|
@ -21,8 +21,8 @@ call "%JAVA_HOME%\bin\javapackager.exe" -deploy ^
|
|||
-outdir %outdir% ^
|
||||
-appclass bisq.desktop.app.BisqAppMain ^
|
||||
-srcfiles %outdir%\Bisq.jar ^
|
||||
-srcfiles %outdir%\bcpg-jdk15on.jar ^
|
||||
-srcfiles %outdir%\bcprov-jdk15on.jar ^
|
||||
-srcfiles %outdir%\bcpg-jdk15on-1.56.jar ^
|
||||
-srcfiles %outdir%\bcprov-jdk15on-1.56.jar ^
|
||||
-outfile Bisq ^
|
||||
-Bruntime="%JAVA_HOME%\jre"
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
:: Invoke from bisq home directory
|
||||
:: Invoke from Bisq home directory
|
||||
:: edit iss file -> AppVersion
|
||||
:: edit -> -BappVersion and -srcfiles
|
||||
|
||||
:: 64 bit build
|
||||
:: Needs Inno Setup 5 or later (http://www.jrsoftware.org/isdl.php)
|
||||
|
||||
SET version=0.6.7
|
||||
SET version=0.7.0
|
||||
|
||||
:: Private setup
|
||||
SET outdir=\\VBOXSVR\vm_shared_windows
|
||||
|
@ -21,8 +21,8 @@ call "%JAVA_HOME%\bin\javapackager.exe" -deploy ^
|
|||
-outdir %outdir% ^
|
||||
-appclass bisq.desktop.app.BisqAppMain ^
|
||||
-srcfiles %outdir%\Bisq.jar ^
|
||||
-srcfiles %outdir%\bcpg-jdk15on.jar ^
|
||||
-srcfiles %outdir%\bcprov-jdk15on.jar ^
|
||||
-srcfiles %outdir%\bcpg-jdk15on-1.56.jar ^
|
||||
-srcfiles %outdir%\bcprov-jdk15on-1.56.jar ^
|
||||
-outfile Bisq ^
|
||||
-Bruntime="%JAVA_HOME%\jre"
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
[Setup]
|
||||
AppId={{bisq}}
|
||||
AppName=Bisq
|
||||
AppVersion=0.6.7
|
||||
AppVersion=0.7.0
|
||||
AppVerName=Bisq
|
||||
AppPublisher=Bisq
|
||||
AppComments=Bisq
|
||||
|
|
|
@ -106,7 +106,7 @@ public class SystemTray {
|
|||
BufferedImage trayIconImage = ImageIO.read(getClass().getResource(path));
|
||||
TrayIcon trayIcon = new TrayIcon(trayIconImage);
|
||||
// On Windows and Linux the icon needs to be scaled
|
||||
// On OSX we get the correct size from the provided image
|
||||
// On macOS we get the correct size from the provided image
|
||||
if (!Utilities.isOSX()) {
|
||||
int trayIconWidth = trayIcon.getSize().width;
|
||||
trayIcon = new TrayIcon(trayIconImage.getScaledInstance(trayIconWidth, -1, Image.SCALE_SMOOTH));
|
||||
|
|
|
@ -45,7 +45,6 @@ import bisq.common.UserThread;
|
|||
import bisq.common.app.DevEnv;
|
||||
import bisq.common.setup.GracefulShutDownHandler;
|
||||
import bisq.common.setup.UncaughtExceptionHandler;
|
||||
import bisq.common.storage.Storage;
|
||||
import bisq.common.util.Profiler;
|
||||
import bisq.common.util.Utilities;
|
||||
|
||||
|
@ -127,8 +126,6 @@ public class BisqApp extends Application implements UncaughtExceptionHandler {
|
|||
scene = createAndConfigScene(mainView, injector);
|
||||
setupStage(scene);
|
||||
|
||||
setDatabaseCorruptionHandler(mainView);
|
||||
|
||||
checkForCorrectOSArchitecture();
|
||||
|
||||
UserThread.runPeriodically(() -> Profiler.printSystemLoad(log), LOG_MEMORY_PERIOD_MIN, TimeUnit.MINUTES);
|
||||
|
@ -164,7 +161,7 @@ public class BisqApp extends Application implements UncaughtExceptionHandler {
|
|||
public void handleUncaughtException(Throwable throwable, boolean doShutDown) {
|
||||
if (!shutDownRequested) {
|
||||
if (scene == null) {
|
||||
log.warn("Scene not available yet, we create a new scene. The bug might be caused by an exception in a constructor or by a circular dependency in guice. throwable=" + throwable.toString());
|
||||
log.warn("Scene not available yet, we create a new scene. The bug might be caused by an exception in a constructor or by a circular dependency in Guice. throwable=" + throwable.toString());
|
||||
scene = new Scene(new StackPane(), 1000, 650);
|
||||
scene.getStylesheets().setAll(
|
||||
"/bisq/desktop/bisq.css",
|
||||
|
@ -228,7 +225,7 @@ public class BisqApp extends Application implements UncaughtExceptionHandler {
|
|||
stage.setMinWidth(1020);
|
||||
stage.setMinHeight(620);
|
||||
|
||||
// on windows the title icon is also used as task bar icon in a larger size
|
||||
// on Windows the title icon is also used as task bar icon in a larger size
|
||||
// on Linux no title icon is supported but also a large task bar icon is derived from that title icon
|
||||
String iconPath;
|
||||
if (Utilities.isOSX())
|
||||
|
@ -249,16 +246,6 @@ public class BisqApp extends Application implements UncaughtExceptionHandler {
|
|||
return (MainView) viewLoader.load(MainView.class);
|
||||
}
|
||||
|
||||
private void setDatabaseCorruptionHandler(MainView mainView) {
|
||||
Storage.setDatabaseCorruptionHandler((String fileName) -> {
|
||||
corruptedDatabaseFiles.add(fileName);
|
||||
if (mainView != null)
|
||||
mainView.setPersistedFilesCorrupted(corruptedDatabaseFiles);
|
||||
});
|
||||
mainView.setPersistedFilesCorrupted(corruptedDatabaseFiles);
|
||||
}
|
||||
|
||||
|
||||
private void addSceneKeyEventHandler(Scene scene, Injector injector) {
|
||||
scene.addEventHandler(KeyEvent.KEY_RELEASED, keyEvent -> {
|
||||
Utilities.isAltOrCtrlPressed(KeyCode.W, keyEvent);
|
||||
|
|
|
@ -47,7 +47,6 @@ import bisq.core.locale.Res;
|
|||
|
||||
import bisq.common.Timer;
|
||||
import bisq.common.UserThread;
|
||||
import bisq.common.app.DevEnv;
|
||||
import bisq.common.app.Version;
|
||||
import bisq.common.util.Tuple2;
|
||||
import bisq.common.util.Utilities;
|
||||
|
@ -83,8 +82,6 @@ import javafx.geometry.Pos;
|
|||
|
||||
import javafx.beans.value.ChangeListener;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import static javafx.scene.layout.AnchorPane.setBottomAnchor;
|
||||
|
@ -105,25 +102,21 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
|
||||
@SuppressWarnings("PointlessBooleanExpression")
|
||||
public static void blur() {
|
||||
if (!DevEnv.STRESS_TEST_MODE)
|
||||
transitions.blur(MainView.rootContainer);
|
||||
}
|
||||
|
||||
@SuppressWarnings("PointlessBooleanExpression")
|
||||
public static void blurLight() {
|
||||
if (!DevEnv.STRESS_TEST_MODE)
|
||||
transitions.blur(MainView.rootContainer, Transitions.DEFAULT_DURATION, -0.1, false, 5);
|
||||
}
|
||||
|
||||
@SuppressWarnings("PointlessBooleanExpression")
|
||||
public static void blurUltraLight() {
|
||||
if (!DevEnv.STRESS_TEST_MODE)
|
||||
transitions.blur(MainView.rootContainer, Transitions.DEFAULT_DURATION, -0.1, false, 2);
|
||||
}
|
||||
|
||||
@SuppressWarnings("PointlessBooleanExpression")
|
||||
public static void darken() {
|
||||
if (!DevEnv.STRESS_TEST_MODE)
|
||||
transitions.darken(MainView.rootContainer, Transitions.DEFAULT_DURATION, false);
|
||||
}
|
||||
|
||||
|
@ -149,7 +142,6 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
private Label splashP2PNetworkLabel;
|
||||
private ProgressBar btcSyncIndicator;
|
||||
private Label btcSplashInfo;
|
||||
private List<String> persistedFilesCorrupted;
|
||||
private Popup<?> p2PNetworkWarnMsgPopup, btcNetworkWarnMsgPopup;
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
|
@ -312,21 +304,6 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
if (newValue) {
|
||||
navigation.navigateToPreviousVisitedView();
|
||||
|
||||
if (!persistedFilesCorrupted.isEmpty()) {
|
||||
if (persistedFilesCorrupted.size() > 1 || !persistedFilesCorrupted.get(0).equals("ViewPathAsString")) {
|
||||
// show warning that some files has been corrupted
|
||||
new Popup<>()
|
||||
.warning(Res.get("popup.warning.incompatibleDB",
|
||||
persistedFilesCorrupted.toString(),
|
||||
model.getAppDateDir()))
|
||||
.useShutDownButton()
|
||||
.show();
|
||||
} else {
|
||||
log.debug("We detected incompatible data base file for Navigation. That is a minor issue happening with refactoring of UI classes " +
|
||||
"and we don't display a warning popup to the user.");
|
||||
}
|
||||
}
|
||||
|
||||
transitions.fadeOutAndRemove(splashScreen, 1500, actionEvent -> disposeSplashScreen());
|
||||
}
|
||||
});
|
||||
|
@ -464,10 +441,6 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
}
|
||||
}
|
||||
|
||||
public void setPersistedFilesCorrupted(List<String> persistedFilesCorrupted) {
|
||||
this.persistedFilesCorrupted = persistedFilesCorrupted;
|
||||
}
|
||||
|
||||
private VBox createSplashScreen() {
|
||||
VBox vBox = new VBox();
|
||||
vBox.setAlignment(Pos.CENTER);
|
||||
|
|
|
@ -88,6 +88,7 @@ import bisq.common.app.Version;
|
|||
import bisq.common.crypto.CryptoException;
|
||||
import bisq.common.crypto.KeyRing;
|
||||
import bisq.common.crypto.SealedAndSigned;
|
||||
import bisq.common.storage.CorruptedDatabaseFilesHandler;
|
||||
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
@ -174,12 +175,13 @@ public class MainViewModel implements ViewModel {
|
|||
private final ClosedTradableManager closedTradableManager;
|
||||
private final AccountAgeWitnessService accountAgeWitnessService;
|
||||
final TorNetworkSettingsWindow torNetworkSettingsWindow;
|
||||
private final CorruptedDatabaseFilesHandler corruptedDatabaseFilesHandler;
|
||||
private final BSFormatter formatter;
|
||||
|
||||
// BTC network
|
||||
final StringProperty btcInfo = new SimpleStringProperty(Res.get("mainView.footer.btcInfo.initializing"));
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
final DoubleProperty btcSyncProgress = new SimpleDoubleProperty(DevEnv.STRESS_TEST_MODE ? 0 : -1);
|
||||
final DoubleProperty btcSyncProgress = new SimpleDoubleProperty(-1);
|
||||
final StringProperty walletServiceErrorMsg = new SimpleStringProperty();
|
||||
final StringProperty btcSplashSyncIconId = new SimpleStringProperty();
|
||||
private final StringProperty marketPriceCurrencyCode = new SimpleStringProperty("");
|
||||
|
@ -248,7 +250,8 @@ public class MainViewModel implements ViewModel {
|
|||
DaoSetup daoSetup, EncryptionService encryptionService,
|
||||
KeyRing keyRing, BisqEnvironment bisqEnvironment, FailedTradesManager failedTradesManager,
|
||||
ClosedTradableManager closedTradableManager, AccountAgeWitnessService accountAgeWitnessService,
|
||||
TorNetworkSettingsWindow torNetworkSettingsWindow, BSFormatter formatter) {
|
||||
TorNetworkSettingsWindow torNetworkSettingsWindow,
|
||||
CorruptedDatabaseFilesHandler corruptedDatabaseFilesHandler, BSFormatter formatter) {
|
||||
this.walletsManager = walletsManager;
|
||||
this.walletsSetup = walletsSetup;
|
||||
this.btcWalletService = btcWalletService;
|
||||
|
@ -277,6 +280,7 @@ public class MainViewModel implements ViewModel {
|
|||
this.closedTradableManager = closedTradableManager;
|
||||
this.accountAgeWitnessService = accountAgeWitnessService;
|
||||
this.torNetworkSettingsWindow = torNetworkSettingsWindow;
|
||||
this.corruptedDatabaseFilesHandler = corruptedDatabaseFilesHandler;
|
||||
this.formatter = formatter;
|
||||
|
||||
TxIdTextField.setPreferences(preferences);
|
||||
|
@ -707,6 +711,8 @@ public class MainViewModel implements ViewModel {
|
|||
if (walletsSetup.downloadPercentageProperty().get() == 1)
|
||||
checkForLockedUpFunds();
|
||||
|
||||
checkForCorruptedDataBaseFiles();
|
||||
|
||||
allBasicServicesInitialized = true;
|
||||
}
|
||||
|
||||
|
@ -1262,6 +1268,26 @@ public class MainViewModel implements ViewModel {
|
|||
}
|
||||
}
|
||||
|
||||
private void checkForCorruptedDataBaseFiles() {
|
||||
List<String> files = corruptedDatabaseFilesHandler.getCorruptedDatabaseFiles();
|
||||
|
||||
if (files.size() == 0)
|
||||
return;
|
||||
|
||||
if (files.size() == 1 && files.get(0).equals("ViewPathAsString")) {
|
||||
log.debug("We detected incompatible data base file for Navigation. " +
|
||||
"That is a minor issue happening with refactoring of UI classes " +
|
||||
"and we don't display a warning popup to the user.");
|
||||
return;
|
||||
}
|
||||
|
||||
// show warning that some files have been corrupted
|
||||
new Popup<>()
|
||||
.warning(Res.get("popup.warning.incompatibleDB", files.toString(), getAppDateDir()))
|
||||
.useShutDownButton()
|
||||
.show();
|
||||
}
|
||||
|
||||
private void setupDevDummyPaymentAccounts() {
|
||||
if (user.getPaymentAccounts() != null && user.getPaymentAccounts().isEmpty()) {
|
||||
PerfectMoneyAccount perfectMoneyAccount = new PerfectMoneyAccount();
|
||||
|
|
|
@ -35,15 +35,18 @@ public class SpreadItem {
|
|||
@Nullable
|
||||
public final Price priceSpread;
|
||||
public final String percentage;
|
||||
public final double percentageValue;
|
||||
public final Coin totalAmount;
|
||||
|
||||
public SpreadItem(String currencyCode, int numberOfBuyOffers, int numberOfSellOffers, int numberOfOffers, @Nullable Price priceSpread, String percentage, Coin totalAmount) {
|
||||
public SpreadItem(String currencyCode, int numberOfBuyOffers, int numberOfSellOffers, int numberOfOffers,
|
||||
@Nullable Price priceSpread, String percentage, double percentageValue, Coin totalAmount) {
|
||||
this.currencyCode = currencyCode;
|
||||
this.numberOfBuyOffers = numberOfBuyOffers;
|
||||
this.numberOfSellOffers = numberOfSellOffers;
|
||||
this.numberOfOffers = numberOfOffers;
|
||||
this.priceSpread = priceSpread;
|
||||
this.percentage = percentage;
|
||||
this.percentageValue = percentageValue;
|
||||
this.totalAmount = totalAmount;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,6 +48,8 @@ import javafx.collections.transformation.SortedList;
|
|||
|
||||
import javafx.util.Callback;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
@FxmlView
|
||||
public class SpreadView extends ActivatableViewAndModel<GridPane, SpreadViewModel> {
|
||||
private final BSFormatter formatter;
|
||||
|
@ -93,16 +95,12 @@ public class SpreadView extends ActivatableViewAndModel<GridPane, SpreadViewMode
|
|||
tableView.getColumns().add(spreadColumn);
|
||||
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||
|
||||
currencyColumn.setComparator((o1, o2) -> CurrencyUtil.getNameByCode(o1.currencyCode).compareTo(CurrencyUtil.getNameByCode(o2.currencyCode)));
|
||||
currencyColumn.setComparator(Comparator.comparing(o -> CurrencyUtil.getNameByCode(o.currencyCode)));
|
||||
numberOfOffersColumn.setComparator((o1, o2) -> Integer.valueOf(o1.numberOfOffers).compareTo(o2.numberOfOffers));
|
||||
numberOfBuyOffersColumn.setComparator((o1, o2) -> Integer.valueOf(o1.numberOfBuyOffers).compareTo(o2.numberOfBuyOffers));
|
||||
numberOfSellOffersColumn.setComparator((o1, o2) -> Integer.valueOf(o1.numberOfSellOffers).compareTo(o2.numberOfSellOffers));
|
||||
totalAmountColumn.setComparator((o1, o2) -> o1.totalAmount.compareTo(o2.totalAmount));
|
||||
spreadColumn.setComparator((o1, o2) -> {
|
||||
Long spreadO1 = o1.priceSpread != null ? o1.priceSpread.getValue() : 0;
|
||||
Long spreadO2 = o2.priceSpread != null ? o2.priceSpread.getValue() : 0;
|
||||
return spreadO1.compareTo(spreadO2);
|
||||
});
|
||||
totalAmountColumn.setComparator(Comparator.comparing(o -> o.totalAmount));
|
||||
spreadColumn.setComparator(Comparator.comparingDouble(o -> o.percentageValue));
|
||||
|
||||
numberOfOffersColumn.setSortType(TableColumn.SortType.DESCENDING);
|
||||
tableView.getSortOrder().add(numberOfOffersColumn);
|
||||
|
|
|
@ -154,6 +154,7 @@ class SpreadViewModel extends ActivatableViewModel {
|
|||
|
||||
Price spread = null;
|
||||
String percentage = "";
|
||||
double percentageValue = 0;
|
||||
Price bestSellOfferPrice = sellOffers.isEmpty() ? null : sellOffers.get(0).getPrice();
|
||||
Price bestBuyOfferPrice = buyOffers.isEmpty() ? null : buyOffers.get(0).getPrice();
|
||||
if (bestBuyOfferPrice != null && bestSellOfferPrice != null) {
|
||||
|
@ -180,11 +181,11 @@ class SpreadViewModel extends ActivatableViewModel {
|
|||
BigDecimal marketPriceAsBigDecimal = BigDecimal.valueOf(marketPriceAsDouble)
|
||||
.multiply(BigDecimal.valueOf(precision));
|
||||
// We multiply with 10000 because we use precision of 2 at % (100.00%)
|
||||
double result = BigDecimal.valueOf(spread.getValue())
|
||||
percentageValue = BigDecimal.valueOf(spread.getValue())
|
||||
.multiply(BigDecimal.valueOf(10000))
|
||||
.divide(marketPriceAsBigDecimal, RoundingMode.HALF_UP)
|
||||
.doubleValue() / 10000;
|
||||
percentage = formatter.formatPercentagePrice(result);
|
||||
percentage = formatter.formatPercentagePrice(percentageValue);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
try {
|
||||
|
@ -210,7 +211,7 @@ class SpreadViewModel extends ActivatableViewModel {
|
|||
|
||||
totalAmount = Coin.valueOf(offers.stream().mapToLong(offer -> offer.getAmount().getValue()).sum());
|
||||
spreadItems.add(new SpreadItem(currencyCode, buyOffers.size(), sellOffers.size(),
|
||||
uniqueOffers.size(), spread, percentage, totalAmount));
|
||||
uniqueOffers.size(), spread, percentage, percentageValue, totalAmount));
|
||||
}
|
||||
|
||||
maxPlacesForAmount.set(formatAmount(totalAmount, false).length());
|
||||
|
|
|
@ -21,8 +21,6 @@ import bisq.core.offer.Offer;
|
|||
import bisq.core.offer.OfferBookService;
|
||||
import bisq.core.trade.TradeManager;
|
||||
|
||||
import bisq.common.app.Log;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
|
@ -81,7 +79,6 @@ public class OfferBook {
|
|||
}
|
||||
|
||||
offerBookListItems.add(offerBookListItem);
|
||||
Log.logIfStressTests("OfferPayload added: No. of offers = " + offerBookListItems.size());
|
||||
} else {
|
||||
log.debug("We have the exact same offer already in our list and ignore the onAdded call. ID={}", offer.getId());
|
||||
}
|
||||
|
@ -98,10 +95,7 @@ public class OfferBook {
|
|||
Optional<OfferBookListItem> candidateToRemove = offerBookListItems.stream()
|
||||
.filter(item -> item.getOffer().getId().equals(offer.getId()))
|
||||
.findAny();
|
||||
if (candidateToRemove.isPresent()) {
|
||||
offerBookListItems.remove(candidateToRemove.get());
|
||||
Log.logIfStressTests("OfferPayload removed: No. of offers = " + offerBookListItems.size());
|
||||
}
|
||||
candidateToRemove.ifPresent(offerBookListItems::remove);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -119,8 +113,6 @@ public class OfferBook {
|
|||
.map(OfferBookListItem::new)
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
Log.logIfStressTests("OfferPayload filled: No. of offers = " + offerBookListItems.size());
|
||||
|
||||
log.debug("offerBookListItems.size " + offerBookListItems.size());
|
||||
fillOfferCountMaps();
|
||||
} catch (Throwable t) {
|
||||
|
|
|
@ -64,6 +64,8 @@ import com.google.inject.name.Named;
|
|||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
|
||||
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.canvas.Canvas;
|
||||
import javafx.scene.control.Button;
|
||||
|
@ -106,10 +108,6 @@ import static bisq.desktop.util.FormBuilder.addButton;
|
|||
import static bisq.desktop.util.FormBuilder.addHBoxLabelComboBox;
|
||||
import static bisq.desktop.util.FormBuilder.addTitledGroupBg;
|
||||
|
||||
|
||||
|
||||
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
|
||||
|
||||
@FxmlView
|
||||
public class OfferBookView extends ActivatableViewAndModel<GridPane, OfferBookViewModel> {
|
||||
|
||||
|
@ -471,11 +469,20 @@ public class OfferBookView extends ActivatableViewAndModel<GridPane, OfferBookVi
|
|||
}
|
||||
|
||||
private void onTakeOffer(Offer offer) {
|
||||
if (model.isBootstrapped())
|
||||
if (model.isBootstrapped()) {
|
||||
if (offer.getDirection() == OfferPayload.Direction.SELL &&
|
||||
offer.getPaymentMethod().getId().equals(PaymentMethod.CASH_DEPOSIT.getId())) {
|
||||
new Popup<>().confirmation(Res.get("popup.info.cashDepositInfo", offer.getBankId()))
|
||||
.actionButtonText(Res.get("popup.info.cashDepositInfo.confirm"))
|
||||
.onAction(() -> offerActionHandler.onTakeOffer(offer))
|
||||
.show();
|
||||
} else {
|
||||
offerActionHandler.onTakeOffer(offer);
|
||||
else
|
||||
}
|
||||
} else {
|
||||
new Popup<>().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void onRemoveOpenOffer(Offer offer) {
|
||||
if (model.isBootstrapped()) {
|
||||
|
|
|
@ -228,9 +228,9 @@ public class OfferDetailsWindow extends Overlay<OfferDetailsWindow> {
|
|||
addLabelTextField(gridPane, ++rowIndex, Res.get("offerDetailsWindow.myTradingAccount"), paymentAccount.getAccountName());
|
||||
} else {
|
||||
final String method = Res.get(paymentMethod.getId());
|
||||
String paymentMethodLabel = Res.getWithCol("shared.paymentMethod");
|
||||
if (isNationalBanks || isSpecificBanks || isSepa) {
|
||||
String methodWithBankId = method + bankId;
|
||||
String paymentMethodLabel = Res.get("shared.paymentMethod");
|
||||
if (isNationalBanks || isSpecificBanks || isSepa) {
|
||||
if (BankUtil.isBankIdRequired(offer.getCountryCode()))
|
||||
addLabelTextField(gridPane, ++rowIndex,
|
||||
paymentMethodLabel + " " + Res.get("offerDetailsWindow.offererBankId"),
|
||||
|
@ -239,8 +239,13 @@ public class OfferDetailsWindow extends Overlay<OfferDetailsWindow> {
|
|||
addLabelTextField(gridPane, ++rowIndex,
|
||||
paymentMethodLabel + " " + Res.get("offerDetailsWindow.offerersBankName"),
|
||||
methodWithBankId);
|
||||
}
|
||||
if (paymentMethod.equals(PaymentMethod.CASH_DEPOSIT)) {
|
||||
addLabelTextField(gridPane, ++rowIndex,
|
||||
paymentMethodLabel + " " + Res.get("offerDetailsWindow.offererBankId"),
|
||||
methodWithBankId);
|
||||
} else {
|
||||
addLabelTextField(gridPane, ++rowIndex, paymentMethodLabel, method);
|
||||
addLabelTextField(gridPane, ++rowIndex, Res.getWithCol("shared.paymentMethod"), method);
|
||||
}
|
||||
}
|
||||
if (showAcceptedBanks) {
|
||||
|
|
|
@ -20,12 +20,9 @@ package bisq.desktop.main.portfolio.editoffer;
|
|||
import bisq.desktop.Navigation;
|
||||
import bisq.desktop.common.view.FxmlView;
|
||||
import bisq.desktop.components.BusyAnimation;
|
||||
import bisq.desktop.main.MainView;
|
||||
import bisq.desktop.main.offer.EditableOfferView;
|
||||
import bisq.desktop.main.overlays.popups.Popup;
|
||||
import bisq.desktop.main.overlays.windows.OfferDetailsWindow;
|
||||
import bisq.desktop.main.portfolio.PortfolioView;
|
||||
import bisq.desktop.main.portfolio.openoffer.OpenOffersView;
|
||||
import bisq.desktop.util.BSFormatter;
|
||||
import bisq.desktop.util.BsqFormatter;
|
||||
import bisq.desktop.util.Transitions;
|
||||
|
@ -33,7 +30,6 @@ import bisq.desktop.util.Transitions;
|
|||
import bisq.core.locale.CurrencyUtil;
|
||||
import bisq.core.locale.Res;
|
||||
import bisq.core.offer.OpenOffer;
|
||||
import bisq.core.user.DontShowAgainLookup;
|
||||
import bisq.core.user.Preferences;
|
||||
|
||||
import bisq.common.util.Tuple3;
|
||||
|
@ -175,20 +171,16 @@ public class EditOpenOfferView extends EditableOfferView<EditOpenOfferViewModel>
|
|||
confirmButton.setPadding(new Insets(0, 20, 0, 20));
|
||||
confirmButton.setGraphicTextGap(10);
|
||||
|
||||
|
||||
busyAnimation = editOfferTuple.second;
|
||||
Label spinnerInfoLabel = editOfferTuple.third;
|
||||
|
||||
|
||||
cancelButton = addButton(gridPane, tmpGridRow, Res.get("shared.cancel"));
|
||||
cancelButton.setDefaultButton(false);
|
||||
cancelButton.setId("cancel-button");
|
||||
cancelButton.setOnAction(event -> close());
|
||||
|
||||
confirmButton.setOnAction(e -> {
|
||||
|
||||
if (model.isPriceInRange()) {
|
||||
|
||||
model.isNextButtonDisabled.setValue(true);
|
||||
cancelButton.setDisable(true);
|
||||
busyAnimation.play();
|
||||
|
@ -196,16 +188,8 @@ public class EditOpenOfferView extends EditableOfferView<EditOpenOfferViewModel>
|
|||
//edit offer
|
||||
model.onPublishOffer(() -> {
|
||||
log.debug("Edit offer was successful");
|
||||
|
||||
String key = "ShowOpenOffersAfterEditing";
|
||||
|
||||
if (DontShowAgainLookup.showAgain(key))
|
||||
//noinspection unchecked
|
||||
new Popup<>().feedback(Res.get("editOffer.success"))
|
||||
.actionButtonTextWithGoTo("navigation.portfolio.myOpenOffers")
|
||||
.onAction(() -> navigation.navigateTo(MainView.class, PortfolioView.class, OpenOffersView.class))
|
||||
.dontShowAgainId(key)
|
||||
.show();
|
||||
new Popup<>().feedback(Res.get("editOffer.success")).show();
|
||||
spinnerInfoLabel.setText("");
|
||||
close();
|
||||
}, (message) -> {
|
||||
|
|
|
@ -473,6 +473,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
if (item != null && !empty) {
|
||||
if (button == null) {
|
||||
button = getIconButton(MaterialDesignIcon.DELETE_FOREVER, "delete");
|
||||
button.setTooltip(new Tooltip(Res.get("shared.removeOffer")));
|
||||
setGraphic(button);
|
||||
}
|
||||
button.setOnAction(event -> onRemoveOpenOffer(item.getOpenOffer()));
|
||||
|
@ -505,6 +506,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
if (item != null && !empty) {
|
||||
if (button == null) {
|
||||
button = getIconButton(MaterialDesignIcon.PENCIL);
|
||||
button.setTooltip(new Tooltip(Res.get("shared.editOffer")));
|
||||
setGraphic(button);
|
||||
}
|
||||
button.setOnAction(event -> onEditOpenOffer(item.getOpenOffer()));
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
package bisq.desktop.main.settings.preferences;
|
||||
|
||||
import bisq.desktop.app.BisqApp;
|
||||
import bisq.desktop.common.model.Activatable;
|
||||
import bisq.desktop.common.view.ActivatableViewAndModel;
|
||||
import bisq.desktop.common.view.FxmlView;
|
||||
|
@ -92,7 +91,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Activatab
|
|||
private ComboBox<String> userLanguageComboBox;
|
||||
private ComboBox<Country> userCountryComboBox;
|
||||
private ComboBox<TradeCurrency> preferredTradeCurrencyComboBox;
|
||||
private ComboBox<BaseCurrencyNetwork> selectBaseCurrencyNetworkComboBox;
|
||||
// private ComboBox<BaseCurrencyNetwork> selectBaseCurrencyNetworkComboBox;
|
||||
|
||||
private CheckBox useAnimationsCheckBox, autoSelectArbitratorsCheckBox, showOwnOffersInOfferBook, sortMarketCurrenciesNumericallyCheckBox, useCustomFeeCheckbox;
|
||||
private int gridRow = 0;
|
||||
|
@ -177,12 +176,12 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Activatab
|
|||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private void initializeGeneralOptions() {
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(root, gridRow, 8, Res.get("setting.preferences.general"));
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(root, gridRow, 7, Res.get("setting.preferences.general"));
|
||||
GridPane.setColumnSpan(titledGroupBg, 4);
|
||||
|
||||
// selectBaseCurrencyNetwork
|
||||
//noinspection unchecked
|
||||
selectBaseCurrencyNetworkComboBox = addLabelComboBox(root, gridRow,
|
||||
/* selectBaseCurrencyNetworkComboBox = addLabelComboBox(root, gridRow,
|
||||
Res.getWithCol("settings.preferences.selectCurrencyNetwork"), Layout.FIRST_ROW_DISTANCE).second;
|
||||
|
||||
selectBaseCurrencyNetworkComboBox.setConverter(new StringConverter<BaseCurrencyNetwork>() {
|
||||
|
@ -196,12 +195,12 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Activatab
|
|||
public BaseCurrencyNetwork fromString(String string) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
});*/
|
||||
|
||||
// userLanguage
|
||||
//noinspection unchecked
|
||||
userLanguageComboBox = addLabelComboBox(root, ++gridRow,
|
||||
Res.getWithCol("shared.language")).second;
|
||||
userLanguageComboBox = addLabelComboBox(root, gridRow,
|
||||
Res.getWithCol("shared.language"), Layout.FIRST_ROW_DISTANCE).second;
|
||||
|
||||
// userCountry
|
||||
//noinspection unchecked
|
||||
|
@ -482,9 +481,9 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Activatab
|
|||
.filter(e -> !e.isDash())
|
||||
.filter(BaseCurrencyNetwork::isMainnet)
|
||||
.collect(Collectors.toList());
|
||||
selectBaseCurrencyNetworkComboBox.setItems(FXCollections.observableArrayList(baseCurrencyNetworks));
|
||||
/* selectBaseCurrencyNetworkComboBox.setItems(FXCollections.observableArrayList(baseCurrencyNetworks));
|
||||
selectBaseCurrencyNetworkComboBox.setOnAction(e -> onSelectNetwork());
|
||||
selectBaseCurrencyNetworkComboBox.getSelectionModel().select(BisqEnvironment.getBaseCurrencyNetwork());
|
||||
selectBaseCurrencyNetworkComboBox.getSelectionModel().select(BisqEnvironment.getBaseCurrencyNetwork());*/
|
||||
|
||||
boolean useCustomWithdrawalTxFee = preferences.isUseCustomWithdrawalTxFee();
|
||||
useCustomFeeCheckbox.setSelected(useCustomWithdrawalTxFee);
|
||||
|
@ -646,12 +645,12 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Activatab
|
|||
autoSelectArbitratorsCheckBox.setOnAction(e -> preferences.setAutoSelectArbitrators(autoSelectArbitratorsCheckBox.isSelected()));
|
||||
}
|
||||
|
||||
private void onSelectNetwork() {
|
||||
/* private void onSelectNetwork() {
|
||||
if (selectBaseCurrencyNetworkComboBox.getSelectionModel().getSelectedItem() != BisqEnvironment.getBaseCurrencyNetwork())
|
||||
selectNetwork();
|
||||
}
|
||||
}*/
|
||||
|
||||
private void selectNetwork() {
|
||||
/* private void selectNetwork() {
|
||||
new Popup().warning(Res.get("settings.net.needRestart"))
|
||||
.onAction(() -> {
|
||||
bisqEnvironment.saveBaseCryptoNetwork(selectBaseCurrencyNetworkComboBox.getSelectionModel().getSelectedItem());
|
||||
|
@ -661,14 +660,14 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Activatab
|
|||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(() -> selectBaseCurrencyNetworkComboBox.getSelectionModel().select(BisqEnvironment.getBaseCurrencyNetwork()))
|
||||
.show();
|
||||
}
|
||||
}*/
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Deactivate
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private void deactivateGeneralOptions() {
|
||||
selectBaseCurrencyNetworkComboBox.setOnAction(null);
|
||||
// selectBaseCurrencyNetworkComboBox.setOnAction(null);
|
||||
userLanguageComboBox.setOnAction(null);
|
||||
userCountryComboBox.setOnAction(null);
|
||||
blockChainExplorerComboBox.setOnAction(null);
|
||||
|
|
|
@ -58,7 +58,7 @@ public final class BICValidator extends InputValidator {
|
|||
|
||||
input = input.toUpperCase(Locale.ROOT);
|
||||
|
||||
// ensure Bank and Contry code to be letters only
|
||||
// ensure Bank and Country code to be letters only
|
||||
for (int k = 0; k < 6; k++) {
|
||||
if (!Character.isLetter(input.charAt(k)))
|
||||
return new ValidationResult(false, Res.get("validation.bic.letters"));
|
||||
|
@ -69,6 +69,10 @@ public final class BICValidator extends InputValidator {
|
|||
if (ch == '0' || ch == '1' || input.charAt(7) == 'O')
|
||||
return new ValidationResult(false, Res.get("validation.bic.invalidLocationCode"));
|
||||
|
||||
if (input.startsWith("REVO"))
|
||||
return new ValidationResult(false, Res.get("validation.bic.sepaRevolutBic"));
|
||||
|
||||
|
||||
// check complete for 8 char BIC
|
||||
if (input.length() == 8)
|
||||
return new ValidationResult(true);
|
||||
|
@ -77,6 +81,7 @@ public final class BICValidator extends InputValidator {
|
|||
if (input.charAt(8) == 'X')
|
||||
if (input.charAt(9) != 'X' || input.charAt(10) != 'X')
|
||||
return new ValidationResult(false, Res.get("validation.bic.invalidBranchCode"));
|
||||
|
||||
return new ValidationResult(true);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue