diff --git a/.gitignore b/.gitignore index 7b14b1911a..0c3e10f3ce 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ build desktop.ini */target/* *.class +deploy +releases/* diff --git a/README.md b/README.md index 432209ba67..81ae481ce7 100644 --- a/README.md +++ b/README.md @@ -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 -------------------- diff --git a/build.gradle b/build.gradle index 318535661f..43963b30cc 100644 --- a/build.gradle +++ b/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' } diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index d1026c1307..5fa654ad40 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -1,4 +1,4 @@ -Contributing to bisq +Contributing to Bisq ============================ Pull requests diff --git a/doc/bisq-sn.cron.sh b/doc/bisq-sn.cron.sh index f30a1462bf..ea80463422 100755 --- a/doc/bisq-sn.cron.sh +++ b/doc/bisq-sn.cron.sh @@ -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=`` @@ -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 diff --git a/doc/bisq.conf b/doc/bisq.conf index bf4be0f4f2..f560a9c44e 100644 --- a/doc/bisq.conf +++ b/doc/bisq.conf @@ -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/ diff --git a/doc/build.md b/doc/build.md index 882104b80f..d8abf4f497 100644 --- a/doc/build.md +++ b/doc/build.md @@ -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. diff --git a/doc/install_on_unix_fin.sh b/doc/install_on_unix_fin.sh index f52df091d5..f046217934 100755 --- a/doc/install_on_unix_fin.sh +++ b/doc/install_on_unix_fin.sh @@ -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 .. diff --git a/doc/protobuffer.md b/doc/protobuffer.md index bb1415316b..bf84bbbb6c 100644 --- a/doc/protobuffer.md +++ b/doc/protobuffer.md @@ -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 diff --git a/doc/rpc.md b/doc/rpc.md index f4f2b208be..27219a2eed 100644 --- a/doc/rpc.md +++ b/doc/rpc.md @@ -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. diff --git a/doc/ui-development-notes.md b/doc/ui-development-notes.md index d81b7406a1..fbc934b2a7 100644 --- a/doc/ui-development-notes.md +++ b/doc/ui-development-notes.md @@ -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. diff --git a/package/29CDFD3B.asc b/package/29CDFD3B.asc new file mode 100644 index 0000000000..18f37a913f --- /dev/null +++ b/package/29CDFD3B.asc @@ -0,0 +1,51 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=9LRS +-----END PGP PUBLIC KEY BLOCK----- diff --git a/package/5BC5ED73.asc b/package/5BC5ED73.asc new file mode 100644 index 0000000000..d1f70e1e0c --- /dev/null +++ b/package/5BC5ED73.asc @@ -0,0 +1,50 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=AWz+ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/package/F379A1C6.asc b/package/F379A1C6.asc new file mode 100644 index 0000000000..19799d246b --- /dev/null +++ b/package/F379A1C6.asc @@ -0,0 +1,156 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +vUTpzlk= +=ZIr3 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/package/linux/32bitBuild.sh b/package/linux/32bitBuild.sh index 8cede5c50e..4bd665b34e 100644 --- a/package/linux/32bitBuild.sh +++ b/package/linux/32bitBuild.sh @@ -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" diff --git a/package/linux/64bitBuild.sh b/package/linux/64bitBuild.sh index 7745625c20..553332701c 100644 --- a/package/linux/64bitBuild.sh +++ b/package/linux/64bitBuild.sh @@ -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/ diff --git a/package/linux/Dockerfile b/package/linux/Dockerfile index 24fb1f65a9..be101aeed8 100644 --- a/package/linux/Dockerfile +++ b/package/linux/Dockerfile @@ -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 diff --git a/package/linux/rpm.sh b/package/linux/rpm.sh new file mode 100644 index 0000000000..e311d1dcf6 --- /dev/null +++ b/package/linux/rpm.sh @@ -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 diff --git a/package/osx/Info.plist b/package/osx/Info.plist index 0be828bf28..f983c0ce37 100644 --- a/package/osx/Info.plist +++ b/package/osx/Info.plist @@ -22,7 +22,7 @@ APPL CFBundleShortVersionString 1 - + CFBundleSignature ???? LSApplicationCategoryType @@ -30,7 +30,7 @@ CFBundleVersion 1 NSHumanReadableCopyright - Copyright (C) 2015 + Copyright (C) 2018 NSHighResolutionCapable true JVMRuntime @@ -40,7 +40,7 @@ JVMAppClasspath JVMMainJarName - shaded.jar + Bisq-0.7.0.jar JVMPreferencesID bisq JVMOptions diff --git a/package/osx/create_app.sh b/package/osx/create_app.sh index 82c3b2b1b3..f839ea9ef7 100755 --- a/package/osx/create_app.sh +++ b/package/osx/create_app.sh @@ -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 diff --git a/package/osx/finalize.sh b/package/osx/finalize.sh old mode 100644 new mode 100755 index 0490607d24..7b23afa353 --- a/package/osx/finalize.sh +++ b/package/osx/finalize.sh @@ -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 "." diff --git a/package/signingkey.asc b/package/signingkey.asc new file mode 100644 index 0000000000..49c9449491 --- /dev/null +++ b/package/signingkey.asc @@ -0,0 +1 @@ +F379A1C6 \ No newline at end of file diff --git a/package/windows/32bitBuild.bat b/package/windows/32bitBuild.bat index 083e12bd27..045a2cbb43 100644 --- a/package/windows/32bitBuild.bat +++ b/package/windows/32bitBuild.bat @@ -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" diff --git a/package/windows/64bitBuild.bat b/package/windows/64bitBuild.bat index 2ae1adf270..13f391deec 100644 --- a/package/windows/64bitBuild.bat +++ b/package/windows/64bitBuild.bat @@ -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" diff --git a/package/windows/Bisq.iss b/package/windows/Bisq.iss index c518b2dcc5..9f09e408df 100755 --- a/package/windows/Bisq.iss +++ b/package/windows/Bisq.iss @@ -3,7 +3,7 @@ [Setup] AppId={{bisq}} AppName=Bisq -AppVersion=0.6.7 +AppVersion=0.7.0 AppVerName=Bisq AppPublisher=Bisq AppComments=Bisq diff --git a/src/main/java/bisq/desktop/SystemTray.java b/src/main/java/bisq/desktop/SystemTray.java index f0ba4d0021..14baac9942 100644 --- a/src/main/java/bisq/desktop/SystemTray.java +++ b/src/main/java/bisq/desktop/SystemTray.java @@ -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)); diff --git a/src/main/java/bisq/desktop/app/BisqApp.java b/src/main/java/bisq/desktop/app/BisqApp.java index 661c983844..16b2317e5f 100644 --- a/src/main/java/bisq/desktop/app/BisqApp.java +++ b/src/main/java/bisq/desktop/app/BisqApp.java @@ -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); diff --git a/src/main/java/bisq/desktop/main/MainView.java b/src/main/java/bisq/desktop/main/MainView.java index cf2cdc4277..386fa19e8f 100644 --- a/src/main/java/bisq/desktop/main/MainView.java +++ b/src/main/java/bisq/desktop/main/MainView.java @@ -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,26 +102,22 @@ public class MainView extends InitializableView { @SuppressWarnings("PointlessBooleanExpression") public static void blur() { - if (!DevEnv.STRESS_TEST_MODE) - transitions.blur(MainView.rootContainer); + 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); + 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); + 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); + transitions.darken(MainView.rootContainer, Transitions.DEFAULT_DURATION, false); } public static void removeEffect() { @@ -149,7 +142,6 @@ public class MainView extends InitializableView { private Label splashP2PNetworkLabel; private ProgressBar btcSyncIndicator; private Label btcSplashInfo; - private List persistedFilesCorrupted; private Popup p2PNetworkWarnMsgPopup, btcNetworkWarnMsgPopup; @SuppressWarnings("WeakerAccess") @@ -312,21 +304,6 @@ public class MainView extends InitializableView { 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 { } } - public void setPersistedFilesCorrupted(List persistedFilesCorrupted) { - this.persistedFilesCorrupted = persistedFilesCorrupted; - } - private VBox createSplashScreen() { VBox vBox = new VBox(); vBox.setAlignment(Pos.CENTER); diff --git a/src/main/java/bisq/desktop/main/MainViewModel.java b/src/main/java/bisq/desktop/main/MainViewModel.java index e6addcec3e..6c43fd513f 100644 --- a/src/main/java/bisq/desktop/main/MainViewModel.java +++ b/src/main/java/bisq/desktop/main/MainViewModel.java @@ -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 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(); diff --git a/src/main/java/bisq/desktop/main/market/spread/SpreadItem.java b/src/main/java/bisq/desktop/main/market/spread/SpreadItem.java index 28f6055935..09ef65f46a 100644 --- a/src/main/java/bisq/desktop/main/market/spread/SpreadItem.java +++ b/src/main/java/bisq/desktop/main/market/spread/SpreadItem.java @@ -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; } } diff --git a/src/main/java/bisq/desktop/main/market/spread/SpreadView.java b/src/main/java/bisq/desktop/main/market/spread/SpreadView.java index 4fcdf62984..c49cd2da6a 100644 --- a/src/main/java/bisq/desktop/main/market/spread/SpreadView.java +++ b/src/main/java/bisq/desktop/main/market/spread/SpreadView.java @@ -48,6 +48,8 @@ import javafx.collections.transformation.SortedList; import javafx.util.Callback; +import java.util.Comparator; + @FxmlView public class SpreadView extends ActivatableViewAndModel { private final BSFormatter formatter; @@ -93,16 +95,12 @@ public class SpreadView extends ActivatableViewAndModel 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); diff --git a/src/main/java/bisq/desktop/main/market/spread/SpreadViewModel.java b/src/main/java/bisq/desktop/main/market/spread/SpreadViewModel.java index 547c3a7a7d..932ed8c99c 100644 --- a/src/main/java/bisq/desktop/main/market/spread/SpreadViewModel.java +++ b/src/main/java/bisq/desktop/main/market/spread/SpreadViewModel.java @@ -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()); diff --git a/src/main/java/bisq/desktop/main/offer/offerbook/OfferBook.java b/src/main/java/bisq/desktop/main/offer/offerbook/OfferBook.java index 1aa16f3f27..d975419359 100644 --- a/src/main/java/bisq/desktop/main/offer/offerbook/OfferBook.java +++ b/src/main/java/bisq/desktop/main/offer/offerbook/OfferBook.java @@ -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 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) { diff --git a/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java b/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java index e21a7c0e70..7ca71dc697 100644 --- a/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java +++ b/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java @@ -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 { @@ -471,10 +469,19 @@ public class OfferBookView extends ActivatableViewAndModel().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 { new Popup<>().information(Res.get("popup.warning.notFullyConnected")).show(); + } } private void onRemoveOpenOffer(Offer offer) { diff --git a/src/main/java/bisq/desktop/main/overlays/windows/OfferDetailsWindow.java b/src/main/java/bisq/desktop/main/overlays/windows/OfferDetailsWindow.java index bfee880c1d..35f0c20af1 100644 --- a/src/main/java/bisq/desktop/main/overlays/windows/OfferDetailsWindow.java +++ b/src/main/java/bisq/desktop/main/overlays/windows/OfferDetailsWindow.java @@ -228,9 +228,9 @@ public class OfferDetailsWindow extends Overlay { addLabelTextField(gridPane, ++rowIndex, Res.get("offerDetailsWindow.myTradingAccount"), paymentAccount.getAccountName()); } else { final String method = Res.get(paymentMethod.getId()); - String paymentMethodLabel = Res.getWithCol("shared.paymentMethod"); + String methodWithBankId = method + bankId; + String paymentMethodLabel = Res.get("shared.paymentMethod"); if (isNationalBanks || isSpecificBanks || isSepa) { - String methodWithBankId = method + bankId; if (BankUtil.isBankIdRequired(offer.getCountryCode())) addLabelTextField(gridPane, ++rowIndex, paymentMethodLabel + " " + Res.get("offerDetailsWindow.offererBankId"), @@ -239,8 +239,13 @@ public class OfferDetailsWindow extends Overlay { 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) { diff --git a/src/main/java/bisq/desktop/main/portfolio/editoffer/EditOpenOfferView.java b/src/main/java/bisq/desktop/main/portfolio/editoffer/EditOpenOfferView.java index b46dc6f007..0f52e88fc0 100644 --- a/src/main/java/bisq/desktop/main/portfolio/editoffer/EditOpenOfferView.java +++ b/src/main/java/bisq/desktop/main/portfolio/editoffer/EditOpenOfferView.java @@ -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 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 //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(); + //noinspection unchecked + new Popup<>().feedback(Res.get("editOffer.success")).show(); spinnerInfoLabel.setText(""); close(); }, (message) -> { diff --git a/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java b/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java index 0630b02102..49ccbcb266 100644 --- a/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java +++ b/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java @@ -473,6 +473,7 @@ public class OpenOffersView extends ActivatableViewAndModel onRemoveOpenOffer(item.getOpenOffer())); @@ -505,6 +506,7 @@ public class OpenOffersView extends ActivatableViewAndModel onEditOpenOffer(item.getOpenOffer())); diff --git a/src/main/java/bisq/desktop/main/settings/preferences/PreferencesView.java b/src/main/java/bisq/desktop/main/settings/preferences/PreferencesView.java index e82281fba2..9c2fedd0fd 100644 --- a/src/main/java/bisq/desktop/main/settings/preferences/PreferencesView.java +++ b/src/main/java/bisq/desktop/main/settings/preferences/PreferencesView.java @@ -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 userLanguageComboBox; private ComboBox userCountryComboBox; private ComboBox preferredTradeCurrencyComboBox; - private ComboBox selectBaseCurrencyNetworkComboBox; + // private ComboBox selectBaseCurrencyNetworkComboBox; private CheckBox useAnimationsCheckBox, autoSelectArbitratorsCheckBox, showOwnOffersInOfferBook, sortMarketCurrenciesNumericallyCheckBox, useCustomFeeCheckbox; private int gridRow = 0; @@ -177,12 +176,12 @@ public class PreferencesView extends ActivatableViewAndModel() { @@ -196,12 +195,12 @@ public class PreferencesView extends ActivatableViewAndModel !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 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 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); diff --git a/src/main/java/bisq/desktop/util/validation/BICValidator.java b/src/main/java/bisq/desktop/util/validation/BICValidator.java index f8d79bce81..3404abe580 100644 --- a/src/main/java/bisq/desktop/util/validation/BICValidator.java +++ b/src/main/java/bisq/desktop/util/validation/BICValidator.java @@ -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); }