From f843b170dadf91c2d85acca9f31afa593211499d Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Wed, 8 May 2019 16:31:55 +0300 Subject: [PATCH 01/41] CLIENT-1819: add getRestrictions method --- data-service/api/API.ts | 3 ++- data-service/api/matcher/getPairRestrictions.ts | 13 +++++++++++++ src/modules/app/services/waves/matcher/Matcher.js | 9 +++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 data-service/api/matcher/getPairRestrictions.ts diff --git a/data-service/api/API.ts b/data-service/api/API.ts index 380efa0a76..c756403b82 100644 --- a/data-service/api/API.ts +++ b/data-service/api/API.ts @@ -16,6 +16,7 @@ import { } from './matcher/getOrders'; import * as addressModule from './address'; import { getLastPrice } from './matcher/getLastPrice'; +import { getPairRestrictions } from './matcher/getPairRestrictions'; import { getAddressByAlias, getAliasesByAddress } from './aliases/aliases'; import * as pairsModule from './pairs/pairs'; import * as dataModule from './data'; @@ -26,7 +27,7 @@ export const aliases = { getAliasesByAddress, getAddressByAlias }; export const node = { height }; export const matcher = { - getOrderBook, getOrdersByPair, addSignature, clearSignature, getOrders, signatureTimeout, factory, getLastPrice + getOrderBook, getOrdersByPair, addSignature, clearSignature, getOrders, signatureTimeout, factory, getLastPrice, getPairRestrictions }; export const assets = { ...assetsApi }; diff --git a/data-service/api/matcher/getPairRestrictions.ts b/data-service/api/matcher/getPairRestrictions.ts new file mode 100644 index 0000000000..dbae6a0c62 --- /dev/null +++ b/data-service/api/matcher/getPairRestrictions.ts @@ -0,0 +1,13 @@ +import { AssetPair } from '@waves/data-entities'; +import { request } from '../../utils/request'; +import { get } from '../../config'; + + + +export function getPairRestrictions(pair: AssetPair) { + return request({ + url: `${get('matcher')}/orderbook/${pair.amountAsset.id}/${pair.priceAsset.id}/info` + }).then(info => { + return info; + }).catch(error => console.log(error)); +} diff --git a/src/modules/app/services/waves/matcher/Matcher.js b/src/modules/app/services/waves/matcher/Matcher.js index 7782cd1197..a801487350 100644 --- a/src/modules/app/services/waves/matcher/Matcher.js +++ b/src/modules/app/services/waves/matcher/Matcher.js @@ -45,6 +45,15 @@ return ds.api.matcher.getLastPrice(pair); } + /** + * @param {AssetPair} pair + * @return {Promise} + */ + @decorators.cachable(0.5) + getPairRestrictions(pair) { + return ds.api.matcher.getPairRestrictions(pair); + } + /** * @param {string} address * @return {Promise>} From bd06c57681d898e8b2db73cc8a11169fa3e85bfb Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Fri, 24 May 2019 19:05:35 +0300 Subject: [PATCH 02/41] CLIENT-1819: add pairRestrictions --- .../dex/directives/createOrder/CreateOrder.js | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index c5672d048d..9d6fec9f7f 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -126,6 +126,10 @@ * @type {boolean} */ this._silenceNow = false; + /** + * @type {Object} + */ + this.pairRestrictions = {}; /** * * @type {boolean} @@ -170,8 +174,12 @@ */ const spreadPoll = createPoll(this, this._getData, this._setData, 1000); - this.receive(balanceWatcher.change, this._updateBalances, this); + this.receive(balanceWatcher.change, () => { + this._updateBalances(); + this._getPairRestrictions(); + }, this); this._updateBalances(); + this._getPairRestrictions(); const lastTradePromise = new Promise((resolve) => { balanceWatcher.ready.then(() => { @@ -231,6 +239,7 @@ } })); currentFee(); + this._getPairRestrictions(); }); this.observe(['priceBalance', 'total', 'maxPriceBalance'], this._setIfCanBuyOrder); @@ -831,6 +840,20 @@ this.order.$setDirty(); } + _getPairRestrictions() { + if (!this.loaded) { + return false; + } + + ds.api.matcher.getPairRestrictions({ + amountAsset: this.amountBalance.asset, + priceAsset: this.priceBalance.asset + }).then(info => { + this.pairRestrictions = info; + }); + + } + static _animateNotification($element) { return utils.animate($element, { t: 100 }, { duration: 1200, From 291da9a14506f30310940abcb36d747b8ab3088f Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 27 May 2019 15:45:06 +0300 Subject: [PATCH 03/41] CLIENT-1819: save --- .../dex/directives/createOrder/CreateOrder.js | 46 +++++++++++++++++-- .../directives/createOrder/createOrder.html | 24 +++++++--- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 9d6fec9f7f..c4bc437c6d 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -126,6 +126,14 @@ * @type {boolean} */ this._silenceNow = false; + /** + * @type {boolean} + */ + this.isValidStepSize = false; + /** + * @type {boolean} + */ + this.isValidTickSize = false; /** * @type {Object} */ @@ -213,6 +221,9 @@ } }); + this.isValidStepSize = this._validateStepSize(); + this.isValidTickSize = this._validateTickSize(); + this.observe(['amountBalance', 'type', 'fee', 'priceBalance'], this._updateMaxAmountOrPriceBalance); this.observe('_assetIdPair', () => { @@ -244,14 +255,24 @@ this.observe(['priceBalance', 'total', 'maxPriceBalance'], this._setIfCanBuyOrder); - this.observe('amount', () => ( - !this._silenceNow && this._updateField({ amount: this.amount }) - )); + this.observe('amount', () => { + if (!this._silenceNow) { + this.isValidStepSize = this._validateStepSize(); + this._updateField({ amount: this.amount }); + } + }); this.observe('price', () => ( !this._silenceNow && this._updateField({ price: this.price }) )); + this.observe('price', () => { + if (!this._silenceNow) { + this.isValidTickSize = this._validateTickSize(); + this._updateField({ price: this.price }); + } + }); + this.observe('total', () => ( !this._silenceNow && this._updateField({ total: this.total }) )); @@ -849,9 +870,26 @@ amountAsset: this.amountBalance.asset, priceAsset: this.priceBalance.asset }).then(info => { - this.pairRestrictions = info; + if (info) { + this.pairRestrictions = info; + } }); + } + + _validateStepSize() { + if (!this.amount) { + return false; + } + const step = new BigNumber(this.pairRestrictions.stepSize); + return this.amount.getTokens().modulo(step).isZero(); + } + _validateTickSize() { + if (!this.price) { + return false; + } + const step = new BigNumber(this.pairRestrictions.tickSize); + return this.price.getTokens().modulo(step).isZero(); } static _animateNotification($element) { diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index c19070aa7a..f633f1c527 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -88,8 +88,9 @@ ng-blur="$ctrl.setChangedInput('amount')" w-validate w-validator-asset="{{$ctrl.amountBalance.asset}}" - w-validator-lte="{{$ctrl.maxAmountBalance}}" - w-validator-gt="0" + w-validator-lte="{{$ctrl.maxAmountBalance ? $ctrl.maxAmountBalance : $ctrl.pairRestrictions.maxAmount}}" + w-validator-gte="{{$ctrl.pairRestrictions.minAmount}}" + w-validator-custom="{{$ctrl.isValidStepSize}}" name="amount" ng-model="$ctrl.amount" autocomplete="off" @@ -102,7 +103,7 @@ - + @@ -113,6 +114,9 @@ + + + @@ -146,7 +150,9 @@ ng-blur="$ctrl.setChangedInput('price')" w-validate w-validator-asset="{{$ctrl.priceBalance.asset}}" - w-validator-gt="0" + w-validator-lte="{{$ctrl.pairRestrictions.maxPrice}}" + w-validator-gte="{{$ctrl.pairRestrictions.minPrice}}" + w-validator-custom="{{$ctrl.isValidTickSize}}" name="price" ng-model="$ctrl.price" autocomplete="off" @@ -159,12 +165,18 @@ - - + + + + + + + + From 4591cc4c9088a8b6b912a85930cff6a8d9ff00a4 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Fri, 31 May 2019 18:50:19 +0300 Subject: [PATCH 04/41] CLIENT-1819: save --- .../dex/directives/createOrder/CreateOrder.js | 146 +++++++++++++++--- .../directives/createOrder/createOrder.html | 31 ++-- .../directives/createOrder/createOrder.less | 6 + 3 files changed, 153 insertions(+), 30 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 673f0772cf..065ccff72e 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -20,7 +20,7 @@ const controller = function (Base, waves, user, utils, createPoll, $scope, $element, notification, dexDataService, ease, $state, modalManager, balanceWatcher) { - const { without, keys, last } = require('ramda'); + const { without, keys, last, equals } = require('ramda'); const { Money } = require('@waves/data-entities'); const ds = require('data-service'); const analytics = require('@waves/event-sender'); @@ -46,6 +46,10 @@ return this.amountBalance && this.priceBalance; } + get loadedPairRestrictions() { + return !equals(this.pairRestrictions, Object.create(null)); + } + /** * Max amount (with fee) * @type {Money} @@ -101,6 +105,10 @@ * @type {number} */ ERROR_DISPLAY_INTERVAL = 3; + /** + * @type {number} + */ + ERROR_CLICKABLE_DISPLAY_INTERVAL = 6; /** * @type {{amount: string, price: string}} * @private @@ -152,6 +160,14 @@ * @type {Object} */ pairRestrictions = {}; + /** + * @type {Money} + */ + _price = null; + /** + * @type {Money} + */ + _amount = null; constructor() { @@ -192,10 +208,9 @@ this.receive(balanceWatcher.change, () => { this._updateBalances(); - this._getPairRestrictions(); }, this); - this._updateBalances(); - this._getPairRestrictions(); + this._updateBalances() + .then(() => this._setPairRestrictions()); const lastTradePromise = new Promise((resolve) => { balanceWatcher.ready.then(() => { @@ -233,6 +248,7 @@ this.isValidTickSize = this._validateTickSize(); this.observe(['amountBalance', 'type', 'fee', 'priceBalance'], this._updateMaxAmountOrPriceBalance); + this.observe(['maxAmountBalance', 'amountBalance', 'priceBalance'], this._setPairRestrictions); this.observe('_assetIdPair', () => { this.amount = null; @@ -258,27 +274,28 @@ } })); currentFee(); - this._getPairRestrictions(); }); this.observe(['priceBalance', 'total', 'maxPriceBalance'], this._setIfCanBuyOrder); this.observe('amount', () => { + this.isValidStepSize = this._validateStepSize(); if (!this._silenceNow) { - this.isValidStepSize = this._validateStepSize(); this._updateField({ amount: this.amount }); } + if (this.amount) { + this._amount = this.amount; + } }); - this.observe('price', () => ( - !this._silenceNow && this._updateField({ price: this.price }) - )); - this.observe('price', () => { + this.isValidTickSize = this._validateTickSize(); if (!this._silenceNow) { - this.isValidTickSize = this._validateTickSize(); this._updateField({ price: this.price }); } + if (this.price) { + this._price = this.price; + } }); this.observe('total', () => ( @@ -309,9 +326,12 @@ /** * @param {number} factor + * @return {Promise} */ setAmountByBalance(factor) { - const amount = this.maxAmount.cloneWithTokens(this.maxAmount.getTokens().times(factor)); + const amount = this.maxAmount.cloneWithTokens( + this.roundAmount(this.maxAmount.getTokens().times(factor)) + ); this._updateField({ amount }); return Promise.resolve(); } @@ -382,6 +402,16 @@ this._updateField({ amount, total, price }); } + setPrice(value) { + const price = this.priceBalance.cloneWithTokens(value); + this._updateField({ price }); + } + + setAmount(value) { + const amount = this.amountBalance.cloneWithTokens(value); + this._updateField({ amount }); + } + setBidPrice() { const price = this.priceBalance.cloneWithTokens(String(this.bid.price)); this._updateField({ price }); @@ -908,35 +938,111 @@ this.order.$setDirty(); } - _getPairRestrictions() { + _setPairRestrictions() { if (!this.loaded) { return false; } + this.pairRestrictions = {}; + ds.api.matcher.getPairRestrictions({ amountAsset: this.amountBalance.asset, priceAsset: this.priceBalance.asset }).then(info => { if (info) { - this.pairRestrictions = info; + this.pairRestrictions = Object.keys(info).reduce((pairRestriction, key) => { + if (typeof info[key] === 'string' || typeof info[key] === 'number') { + pairRestriction[key] = new BigNumber(info[key]); + } else { + pairRestriction[key] = info[key]; + } + return pairRestriction; + }, Object.create(null)); + } else { + const tickSize = new BigNumber(Math.pow(10, -this.priceBalance.asset.precision)); + const stepSize = new BigNumber(Math.pow(10, -this.amountBalance.asset.precision)); + const maxPrice = new BigNumber(Infinity); + const maxAmount = this.maxAmountBalance ? + this.maxAmountBalance.getTokens() : + new BigNumber(Infinity); + this.pairRestrictions = { + maxPrice, + maxAmount, + tickSize, + stepSize, + minPrice: tickSize, + minAmount: stepSize + }; } }); } + /** + * @return {boolean} + */ _validateStepSize() { if (!this.amount) { return false; } - const step = new BigNumber(this.pairRestrictions.stepSize); - return this.amount.getTokens().modulo(step).isZero(); + + return this.amount.getTokens().modulo(this.pairRestrictions.stepSize).isZero(); } + /** + * @return {boolean} + */ _validateTickSize() { - if (!this.price) { - return false; + const { tickSize, minPrice, maxPrice } = this.pairRestrictions; + if (!this.price || this.price.getTokens().lte(minPrice) || this.price.getTokens().gte(maxPrice)) { + return true; } - const step = new BigNumber(this.pairRestrictions.tickSize); - return this.price.getTokens().modulo(step).isZero(); + + return this.price.getTokens().modulo(tickSize).isZero(); + } + + /** + * @return {string} + */ + roundPrice() { + if (!this.loadedPairRestrictions) { + return ''; + } + const price = this._price.getTokens(); + const { tickSize, minPrice, maxPrice } = this.pairRestrictions; + const roundedPrice = price.decimalPlaces(-tickSize.e, BigNumber.ROUND_HALF_EVEN); + + if (roundedPrice.lt(minPrice)) { + return minPrice; + } + + if (roundedPrice.gt(maxPrice)) { + return maxPrice; + } + + return roundedPrice; + } + + /** + * @param {Money} value + * @return {string} + */ + roundAmount(value) { + if (!this.loadedPairRestrictions) { + return ''; + } + const amount = value ? value : this._amount.getTokens(); + const { stepSize, minAmount, maxAmount } = this.pairRestrictions; + const roundedAmount = amount.decimalPlaces(-stepSize.e, BigNumber.ROUND_HALF_EVEN); + + if (roundedAmount.lt(minAmount)) { + return minAmount; + } + + if (roundedAmount.gt(maxAmount)) { + return maxAmount; + } + + return roundedAmount; } static _animateNotification($element) { diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index 34d988bff2..dbb7d9b151 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -89,14 +89,14 @@
- + + + {{$ctrl.roundPrice()}} + - + @@ -118,8 +120,11 @@ - + + + {{$ctrl.roundPrice()}} +
@@ -142,7 +147,7 @@
- - + - + - + + + {{$ctrl.roundAmount()}} + diff --git a/src/modules/dex/directives/createOrder/createOrder.less b/src/modules/dex/directives/createOrder/createOrder.less index eefd1aba52..1d68a9847d 100644 --- a/src/modules/dex/directives/createOrder/createOrder.less +++ b/src/modules/dex/directives/createOrder/createOrder.less @@ -431,6 +431,12 @@ w-create-order { } } } + + .clickable-value { + text-decoration: underline; + font-weight: bold; + cursor: pointer; + } } } From 4d6c6ed1fa47d0cfd960a22b309e99b9b858700b Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 3 Jun 2019 11:12:58 +0300 Subject: [PATCH 05/41] CLIENT-1819: add max/min clickable hint --- .../dex/directives/createOrder/CreateOrder.js | 5 +-- .../directives/createOrder/createOrder.html | 35 +++++++++++++------ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 065ccff72e..ef9ac41a5c 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -1004,9 +1004,10 @@ * @return {string} */ roundPrice() { - if (!this.loadedPairRestrictions) { + if (!this.loadedPairRestrictions || !this._price) { return ''; } + const price = this._price.getTokens(); const { tickSize, minPrice, maxPrice } = this.pairRestrictions; const roundedPrice = price.decimalPlaces(-tickSize.e, BigNumber.ROUND_HALF_EVEN); @@ -1027,7 +1028,7 @@ * @return {string} */ roundAmount(value) { - if (!this.loadedPairRestrictions) { + if (!this.loadedPairRestrictions || !this._amount) { return ''; } const amount = value ? value : this._amount.getTokens(); diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index dbb7d9b151..3e1057734a 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -105,23 +105,29 @@
{{$ctrl.priceDisplayName}}
- - + + {{$ctrl.roundPrice()}} - + + + {{$ctrl.pairRestrictions.maxPrice}} + - - + + + + {{$ctrl.pairRestrictions.minPrice}} + - + {{$ctrl.roundPrice()}} @@ -168,19 +174,26 @@ - - + + + + {{$ctrl.pairRestrictions.minAmount}} + - + - + + + + {{$ctrl.pairRestrictions.maxAmount}} + + From c2cabcb4bdd30cd673454acb7ee2785045e98289 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 3 Jun 2019 12:45:28 +0300 Subject: [PATCH 06/41] CLIENT-1819: save --- .../dex/directives/createOrder/CreateOrder.js | 57 +++++++++---------- .../directives/createOrder/createOrder.html | 18 +++--- 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index ef9ac41a5c..b694fb9b07 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -160,15 +160,6 @@ * @type {Object} */ pairRestrictions = {}; - /** - * @type {Money} - */ - _price = null; - /** - * @type {Money} - */ - _amount = null; - constructor() { super(); @@ -283,9 +274,6 @@ if (!this._silenceNow) { this._updateField({ amount: this.amount }); } - if (this.amount) { - this._amount = this.amount; - } }); this.observe('price', () => { @@ -293,9 +281,6 @@ if (!this._silenceNow) { this._updateField({ price: this.price }); } - if (this.price) { - this._price = this.price; - } }); this.observe('total', () => ( @@ -321,7 +306,9 @@ return false; } - return this.maxAmount.cloneWithTokens(this.maxAmount.getTokens().times(factor)).eq(amount); + return this.maxAmount.cloneWithTokens( + this.roundAmount(this.maxAmount.getTokens().times(factor)) + ).eq(amount); } /** @@ -330,7 +317,7 @@ */ setAmountByBalance(factor) { const amount = this.maxAmount.cloneWithTokens( - this.roundAmount(this.maxAmount.getTokens().times(factor)) + this.getClosestValidAmount(this.maxAmount.getTokens().times(factor)) ); this._updateField({ amount }); return Promise.resolve(); @@ -1000,15 +987,12 @@ return this.price.getTokens().modulo(tickSize).isZero(); } - /** - * @return {string} - */ roundPrice() { - if (!this.loadedPairRestrictions || !this._price) { - return ''; + if (!this.loadedPairRestrictions) { + return; } - const price = this._price.getTokens(); + const price = this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); const { tickSize, minPrice, maxPrice } = this.pairRestrictions; const roundedPrice = price.decimalPlaces(-tickSize.e, BigNumber.ROUND_HALF_EVEN); @@ -1024,16 +1008,29 @@ } /** - * @param {Money} value - * @return {string} + * @param {BigNumber} value + * @return {BigNumber} */ roundAmount(value) { - if (!this.loadedPairRestrictions || !this._amount) { - return ''; + const { stepSize } = this.pairRestrictions; + const roundedAmount = value.decimalPlaces(-stepSize.e, BigNumber.ROUND_HALF_EVEN); + + return roundedAmount; + } + + /** + * @param {BigNumber} value + */ + getClosestValidAmount(value) { + if (!this.loadedPairRestrictions) { + return; } - const amount = value ? value : this._amount.getTokens(); - const { stepSize, minAmount, maxAmount } = this.pairRestrictions; - const roundedAmount = amount.decimalPlaces(-stepSize.e, BigNumber.ROUND_HALF_EVEN); + + const amount = value ? + value : + this.amountBalance.cloneWithTokens(this.order.amount.$viewValue).getTokens(); + const { minAmount, maxAmount } = this.pairRestrictions; + const roundedAmount = this.roundAmount(amount); if (roundedAmount.lt(minAmount)) { return minAmount; diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index 3e1057734a..bc80d4cb24 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -108,19 +108,19 @@ - {{$ctrl.roundPrice()}} + {{$ctrl.roundPrice().toFormat()}} - {{$ctrl.pairRestrictions.maxPrice}} + {{$ctrl.pairRestrictions.maxPrice.toFormat()}} - {{$ctrl.pairRestrictions.minPrice}} + {{$ctrl.pairRestrictions.minPrice.toFormat()}} @@ -129,7 +129,7 @@ - {{$ctrl.roundPrice()}} + {{$ctrl.roundPrice().toFormat()}}
@@ -177,7 +177,7 @@ - {{$ctrl.pairRestrictions.minAmount}} + {{$ctrl.pairRestrictions.minAmount.toFormat()}} @@ -191,14 +191,14 @@ - {{$ctrl.pairRestrictions.maxAmount}} + {{$ctrl.pairRestrictions.maxAmount.toFormat()}} - - - {{$ctrl.roundAmount()}} + + + {{$ctrl.getClosestValidAmount().toFormat()}} From 4e53ffad12a730828649e8a92d616dfecbdfaf8f Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Tue, 4 Jun 2019 16:39:12 +0300 Subject: [PATCH 07/41] CLIENT-1819: save --- data-service/api/matcher/getPairRestrictions.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/data-service/api/matcher/getPairRestrictions.ts b/data-service/api/matcher/getPairRestrictions.ts index dbae6a0c62..4048c6bc2c 100644 --- a/data-service/api/matcher/getPairRestrictions.ts +++ b/data-service/api/matcher/getPairRestrictions.ts @@ -7,7 +7,5 @@ import { get } from '../../config'; export function getPairRestrictions(pair: AssetPair) { return request({ url: `${get('matcher')}/orderbook/${pair.amountAsset.id}/${pair.priceAsset.id}/info` - }).then(info => { - return info; - }).catch(error => console.log(error)); + }).catch(e => console.log(e.message)); } From 37e1b385893c513996d067f179066d28805d4c1f Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Wed, 5 Jun 2019 17:14:00 +0300 Subject: [PATCH 08/41] CLIENT-1819: refactor --- .../api/matcher/getPairRestrictions.ts | 2 +- .../dex/directives/createOrder/CreateOrder.js | 169 ++++++++++-------- .../directives/createOrder/createOrder.html | 8 +- 3 files changed, 96 insertions(+), 83 deletions(-) diff --git a/data-service/api/matcher/getPairRestrictions.ts b/data-service/api/matcher/getPairRestrictions.ts index 4048c6bc2c..41d0deb803 100644 --- a/data-service/api/matcher/getPairRestrictions.ts +++ b/data-service/api/matcher/getPairRestrictions.ts @@ -7,5 +7,5 @@ import { get } from '../../config'; export function getPairRestrictions(pair: AssetPair) { return request({ url: `${get('matcher')}/orderbook/${pair.amountAsset.id}/${pair.priceAsset.id}/info` - }).catch(e => console.log(e.message)); + }); } diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index a386d7dae3..b4553e848d 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -20,7 +20,7 @@ const controller = function (Base, waves, user, utils, createPoll, $scope, $element, notification, dexDataService, ease, $state, modalManager, balanceWatcher) { - const { without, keys, last, equals } = require('ramda'); + const { without, keys, last } = require('ramda'); const { Money } = require('@waves/data-entities'); const ds = require('data-service'); const analytics = require('@waves/event-sender'); @@ -46,8 +46,11 @@ return this.amountBalance && this.priceBalance; } + /** + * @return {number} + */ get loadedPairRestrictions() { - return !equals(this.pairRestrictions, Object.create(null)); + return Object.keys(this.pairRestrictions).length; } /** @@ -201,11 +204,8 @@ */ const spreadPoll = createPoll(this, this._getData, this._setData, 1000); - this.receive(balanceWatcher.change, () => { - this._updateBalances(); - }, this); - this._updateBalances() - .then(() => this._setPairRestrictions()); + this.receive(balanceWatcher.change, this._updateBalances, this); + this._updateBalances().then(() => this._setPairRestrictions()); const lastTradePromise = new Promise((resolve) => { balanceWatcher.ready.then(() => { @@ -315,7 +315,7 @@ } return this.maxAmount.cloneWithTokens( - this.roundAmount(this.maxAmount.getTokens().times(factor)) + this.getRoundAmountByStepSize(this.maxAmount.getTokens().times(factor)) ).eq(amount); } @@ -397,11 +397,17 @@ this._updateField({ amount, total, price }); } + /** + * @param value + */ setPrice(value) { const price = this.priceBalance.cloneWithTokens(value); this._updateField({ price }); } + /** + * @param value + */ setAmount(value) { const amount = this.amountBalance.cloneWithTokens(value); this._updateField({ amount }); @@ -492,6 +498,66 @@ }); } + /** + * @return {BigNumber|*} + */ + getRoundPriceByTickSize() { + if (!this.loadedPairRestrictions) { + return; + } + + const price = this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); + const { tickSize, minPrice, maxPrice } = this.pairRestrictions; + const roundedPrice = price.decimalPlaces(tickSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); + + if (roundedPrice.lt(minPrice)) { + return minPrice; + } + + if (roundedPrice.gt(maxPrice)) { + return maxPrice; + } + + return roundedPrice; + } + + /** + * @param {BigNumber} value + * @return {BigNumber} + */ + getRoundAmountByStepSize(value) { + const { stepSize } = this.pairRestrictions; + const roundedAmount = value.decimalPlaces(stepSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); + + return roundedAmount; + } + + /** + * @param {BigNumber} value + * @return {BigNumber|*} + */ + getClosestValidAmount(value) { + if (!this.loadedPairRestrictions) { + return; + } + + const amount = value ? + value : + this.amountBalance.cloneWithTokens(this.order.amount.$viewValue).getTokens(); + const { minAmount, maxAmount } = this.pairRestrictions; + const roundedAmount = this.getRoundAmountByStepSize(amount); + + if (roundedAmount.lt(minAmount)) { + return minAmount; + } + + if (roundedAmount.gt(maxAmount)) { + return maxAmount; + } + + return roundedAmount; + } + /** * @param data * @return {*|Promise} @@ -933,9 +999,12 @@ this.order.$setDirty(); } + /** + * @private + */ _setPairRestrictions() { if (!this.loaded) { - return false; + return; } this.pairRestrictions = {}; @@ -943,17 +1012,18 @@ ds.api.matcher.getPairRestrictions({ amountAsset: this.amountBalance.asset, priceAsset: this.priceBalance.asset - }).then(info => { - if (info) { - this.pairRestrictions = Object.keys(info).reduce((pairRestriction, key) => { - if (typeof info[key] === 'string' || typeof info[key] === 'number') { - pairRestriction[key] = new BigNumber(info[key]); - } else { - pairRestriction[key] = info[key]; - } - return pairRestriction; - }, Object.create(null)); - } else { + }) + .then(info => { + this.pairRestrictions = { + maxPrice: new BigNumber(info.maxPrice), + maxAmount: new BigNumber(info.maxAmount), + tickSize: new BigNumber(info.tickSize), + stepSize: new BigNumber(info.stepSize), + minPrice: new BigNumber(info.minPrice), + minAmount: new BigNumber(info.minAmount) + }; + }) + .catch(() => { const tickSize = new BigNumber(Math.pow(10, -this.priceBalance.asset.precision)); const stepSize = new BigNumber(Math.pow(10, -this.amountBalance.asset.precision)); const maxPrice = new BigNumber(Infinity); @@ -968,8 +1038,7 @@ minPrice: tickSize, minAmount: stepSize }; - } - }); + }); } /** @@ -995,62 +1064,6 @@ return this.price.getTokens().modulo(tickSize).isZero(); } - roundPrice() { - if (!this.loadedPairRestrictions) { - return; - } - - const price = this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); - const { tickSize, minPrice, maxPrice } = this.pairRestrictions; - const roundedPrice = price.decimalPlaces(-tickSize.e, BigNumber.ROUND_HALF_EVEN); - - if (roundedPrice.lt(minPrice)) { - return minPrice; - } - - if (roundedPrice.gt(maxPrice)) { - return maxPrice; - } - - return roundedPrice; - } - - /** - * @param {BigNumber} value - * @return {BigNumber} - */ - roundAmount(value) { - const { stepSize } = this.pairRestrictions; - const roundedAmount = value.decimalPlaces(-stepSize.e, BigNumber.ROUND_HALF_EVEN); - - return roundedAmount; - } - - /** - * @param {BigNumber} value - */ - getClosestValidAmount(value) { - if (!this.loadedPairRestrictions) { - return; - } - - const amount = value ? - value : - this.amountBalance.cloneWithTokens(this.order.amount.$viewValue).getTokens(); - const { minAmount, maxAmount } = this.pairRestrictions; - const roundedAmount = this.roundAmount(amount); - - if (roundedAmount.lt(minAmount)) { - return minAmount; - } - - if (roundedAmount.gt(maxAmount)) { - return maxAmount; - } - - return roundedAmount; - } - static _animateNotification($element) { return utils.animate($element, { t: 100 }, { duration: 1200, diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index bc80d4cb24..33991ce78e 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -107,8 +107,8 @@ - - {{$ctrl.roundPrice().toFormat()}} + + {{$ctrl.getRoundPriceByTickSize().toFormat()}} @@ -128,8 +128,8 @@ - - {{$ctrl.roundPrice().toFormat()}} + + {{$ctrl.getRoundPriceByTickSize().toFormat()}} From 2de972cddd99a56da2a66401963b2705cde43b6f Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Wed, 5 Jun 2019 18:41:34 +0300 Subject: [PATCH 09/41] CLIENT-1819: fixes --- .../dex/directives/createOrder/CreateOrder.js | 64 ++++++++++++------- .../directives/createOrder/createOrder.html | 12 ++-- 2 files changed, 48 insertions(+), 28 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index b4553e848d..c7b9190598 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -526,6 +526,10 @@ * @return {BigNumber} */ getRoundAmountByStepSize(value) { + if (!this.loadedPairRestrictions) { + return value; + } + const { stepSize } = this.pairRestrictions; const roundedAmount = value.decimalPlaces(stepSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); @@ -548,11 +552,11 @@ const roundedAmount = this.getRoundAmountByStepSize(amount); if (roundedAmount.lt(minAmount)) { - return minAmount; + return minAmount.decimalPlaces(roundedAmount.decimalPlaces()); } if (roundedAmount.gt(maxAmount)) { - return maxAmount; + return maxAmount.decimalPlaces(roundedAmount.decimalPlaces()); } return roundedAmount; @@ -1008,45 +1012,59 @@ } this.pairRestrictions = {}; + const defaultPairRestriction = this._getDefaultPairRestriction(); ds.api.matcher.getPairRestrictions({ amountAsset: this.amountBalance.asset, priceAsset: this.priceBalance.asset }) .then(info => { + const maxAmount = info.maxAmount ? + new BigNumber(info.maxAmount) : + defaultPairRestriction.maxAmount; this.pairRestrictions = { - maxPrice: new BigNumber(info.maxPrice), - maxAmount: new BigNumber(info.maxAmount), - tickSize: new BigNumber(info.tickSize), - stepSize: new BigNumber(info.stepSize), - minPrice: new BigNumber(info.minPrice), - minAmount: new BigNumber(info.minAmount) + maxPrice: info.maxPrice ? new BigNumber(info.maxPrice) : defaultPairRestriction.maxPrice, + maxAmount: this.maxAmountBalance ? + this.maxAmountBalance.getTokens() : + maxAmount, + tickSize: info.tickSize ? new BigNumber(info.tickSize) : defaultPairRestriction.tickSize, + stepSize: info.stepSize ? new BigNumber(info.stepSize) : defaultPairRestriction.stepSize, + minPrice: info.minPrice ? new BigNumber(info.minPrice) : defaultPairRestriction.minPrice, + minAmount: info.minAmount ? new BigNumber(info.minAmount) : defaultPairRestriction.minAmount }; }) .catch(() => { - const tickSize = new BigNumber(Math.pow(10, -this.priceBalance.asset.precision)); - const stepSize = new BigNumber(Math.pow(10, -this.amountBalance.asset.precision)); - const maxPrice = new BigNumber(Infinity); - const maxAmount = this.maxAmountBalance ? - this.maxAmountBalance.getTokens() : - new BigNumber(Infinity); - this.pairRestrictions = { - maxPrice, - maxAmount, - tickSize, - stepSize, - minPrice: tickSize, - minAmount: stepSize - }; + this.pairRestrictions = defaultPairRestriction; }); } + /** + * @return {{minAmount, minPrice, stepSize, maxPrice, maxAmount, tickSize}} + * @private + */ + _getDefaultPairRestriction() { + const tickSize = new BigNumber(Math.pow(10, -this.priceBalance.asset.precision)); + const stepSize = new BigNumber(Math.pow(10, -this.amountBalance.asset.precision)); + const maxPrice = new BigNumber(Infinity); + const maxAmount = this.maxAmountBalance ? + this.maxAmountBalance.getTokens() : + new BigNumber(Infinity); + return ({ + maxPrice, + maxAmount, + tickSize, + stepSize, + minPrice: tickSize, + minAmount: stepSize + }); + } + /** * @return {boolean} */ _validateStepSize() { if (!this.amount) { - return false; + return true; } return this.amount.getTokens().modulo(this.pairRestrictions.stepSize).isZero(); diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index 33991ce78e..8f627f72c9 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -171,9 +171,6 @@ - - - @@ -181,8 +178,10 @@ - + + + {{$ctrl.getClosestValidAmount().toFormat()}} + + + +
From be0225ca6b69184a3331f9db1cd1614bf02e7888 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Thu, 6 Jun 2019 17:44:05 +0300 Subject: [PATCH 10/41] CLIENT-1819: some fixes --- src/modules/dex/directives/createOrder/CreateOrder.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index c7b9190598..8b3a1875ac 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -342,7 +342,9 @@ expand(type) { this.type = type; if (!this.price || this.price.getTokens().eq('0')) { - this.price = this._getCurrentPrice(); + this._setPairRestrictions().then(() => { + this.price = this._getCurrentPrice(); + }); } // todo: refactor after getting rid of Layout-DEX coupling. @@ -545,6 +547,7 @@ return; } + const { stepSize } = this.pairRestrictions; const amount = value ? value : this.amountBalance.cloneWithTokens(this.order.amount.$viewValue).getTokens(); @@ -552,11 +555,11 @@ const roundedAmount = this.getRoundAmountByStepSize(amount); if (roundedAmount.lt(minAmount)) { - return minAmount.decimalPlaces(roundedAmount.decimalPlaces()); + return minAmount.decimalPlaces(stepSize.decimalPlaces()); } if (roundedAmount.gt(maxAmount)) { - return maxAmount.decimalPlaces(roundedAmount.decimalPlaces()); + return maxAmount.decimalPlaces(stepSize.decimalPlaces()); } return roundedAmount; From 1f733c36f1498af79e096424f01c3ccd008aef46 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 17 Jun 2019 12:01:52 +0300 Subject: [PATCH 11/41] CLIENT-1819: fix price and amount choosen from order book --- .../dex/directives/createOrder/CreateOrder.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 8b3a1875ac..f3a02081a9 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -175,12 +175,14 @@ this.receive(dexDataService.chooseOrderBook, ({ type, price, amount }) => { this.expand(type); + const roundedPrice = this.getRoundPriceByTickSize(price).toString(); + const roundedAmount = this.getClosestValidAmount(new BigNumber(amount)).toString(); switch (type) { case 'buy': - this._onClickBuyOrder(price, amount); + this._onClickBuyOrder(roundedPrice, roundedAmount); break; case 'sell': - this._onClickSellOrder(price, amount); + this._onClickSellOrder(roundedPrice, roundedAmount); break; default: throw new Error('Wrong order type!'); @@ -501,14 +503,17 @@ } /** + * @param {string} * @return {BigNumber|*} */ - getRoundPriceByTickSize() { + getRoundPriceByTickSize(value) { if (!this.loadedPairRestrictions) { return; } - const price = this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); + const price = value ? + new BigNumber(value) : + this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); const { tickSize, minPrice, maxPrice } = this.pairRestrictions; const roundedPrice = price.decimalPlaces(tickSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); From 5d57f42fd37a93883574b8cade090f3cded05617 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Tue, 18 Jun 2019 17:53:18 +0300 Subject: [PATCH 12/41] CLIENT-1819: tickSize fixes --- .../dex/directives/createOrder/CreateOrder.js | 110 ++++++++++++------ .../directives/createOrder/createOrder.html | 30 +++-- 2 files changed, 95 insertions(+), 45 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index f3a02081a9..c93a5bf116 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -171,12 +171,13 @@ constructor() { super(); - this.observe(['type', 'amount', 'price', 'amountBalance', 'fee'], this._currentMaxAmount); + this.observe(['type', 'amount', 'price', 'amountBalance', 'fee', 'pairRestrictions'], + this._currentMaxAmount); this.receive(dexDataService.chooseOrderBook, ({ type, price, amount }) => { this.expand(type); - const roundedPrice = this.getRoundPriceByTickSize(price).toString(); - const roundedAmount = this.getClosestValidAmount(new BigNumber(amount)).toString(); + const roundedPrice = this.getRoundPriceTokensByTickSize(new BigNumber(price)).toString(); + const roundedAmount = this.getClosestValidAmountTokens(new BigNumber(amount)).toString(); switch (type) { case 'buy': this._onClickBuyOrder(roundedPrice, roundedAmount); @@ -317,7 +318,7 @@ } return this.maxAmount.cloneWithTokens( - this.getRoundAmountByStepSize(this.maxAmount.getTokens().times(factor)) + this.getRoundAmountTokensByStepSize(this.maxAmount.getTokens().times(factor)) ).eq(amount); } @@ -327,7 +328,7 @@ */ setAmountByBalance(factor) { const amount = this.maxAmount.cloneWithTokens( - this.getClosestValidAmount(this.maxAmount.getTokens().times(factor)) + this.getClosestValidAmountTokens(this.maxAmount.getTokens().times(factor)) ); this._updateField({ amount }); return Promise.resolve(); @@ -388,7 +389,7 @@ } setMaxAmount() { - const amount = this.maxAmount; + const amount = this.getClosestValidAmount(this.maxAmount.getTokens()); this._updateField({ amount }); } @@ -503,71 +504,113 @@ } /** - * @param {string} - * @return {BigNumber|*} + * @param {BigNumber} price + * @return {Money|*} */ - getRoundPriceByTickSize(value) { + getRoundPriceByTickSize(price) { if (!this.loadedPairRestrictions) { return; } - const price = value ? - new BigNumber(value) : - this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); const { tickSize, minPrice, maxPrice } = this.pairRestrictions; const roundedPrice = price.decimalPlaces(tickSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); if (roundedPrice.lt(minPrice)) { - return minPrice; + return this.priceBalance.cloneWithTokens(minPrice); } if (roundedPrice.gt(maxPrice)) { - return maxPrice; + return this.priceBalance.cloneWithTokens(maxPrice); } - return roundedPrice; + return this.priceBalance.cloneWithTokens(roundedPrice); } /** * @param {BigNumber} value * @return {BigNumber} */ + getRoundPriceTokensByTickSize(value) { + const price = value ? + value : + this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); + const roundedPrice = this.getRoundPriceByTickSize(price); + if (!roundedPrice) { + return; + } + return roundedPrice.getTokens(); + } + + /** + * @param {BigNumber} value + * @return {Money} + */ getRoundAmountByStepSize(value) { if (!this.loadedPairRestrictions) { - return value; + return; } const { stepSize } = this.pairRestrictions; - const roundedAmount = value.decimalPlaces(stepSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); - - return roundedAmount; + const roundedAmount = value.decimalPlaces(stepSize.decimalPlaces()); + return this.amountBalance.cloneWithTokens(roundedAmount); } /** + * * @param {BigNumber} value - * @return {BigNumber|*} + * @return {BigNumber} */ - getClosestValidAmount(value) { + getRoundAmountTokensByStepSize(value) { + const roundedAmount = this.getRoundAmountByStepSize(value); + if (!roundedAmount) { + return; + } + return roundedAmount.getTokens(); + } + + /** + * @param {BigNumber} amount + * @return {Money|*} + */ + getClosestValidAmount(amount) { if (!this.loadedPairRestrictions) { return; } const { stepSize } = this.pairRestrictions; - const amount = value ? - value : - this.amountBalance.cloneWithTokens(this.order.amount.$viewValue).getTokens(); const { minAmount, maxAmount } = this.pairRestrictions; - const roundedAmount = this.getRoundAmountByStepSize(amount); + const roundedAmount = this.getRoundAmountTokensByStepSize(amount); if (roundedAmount.lt(minAmount)) { - return minAmount.decimalPlaces(stepSize.decimalPlaces()); + return this.amountBalance.cloneWithTokens( + minAmount.decimalPlaces(stepSize.decimalPlaces()) + ); } if (roundedAmount.gt(maxAmount)) { - return maxAmount.decimalPlaces(stepSize.decimalPlaces()); + return this.amountBalance.cloneWithTokens( + maxAmount.decimalPlaces(stepSize.decimalPlaces()) + ); + } + + return this.amountBalance.cloneWithTokens(roundedAmount); + } + + /** + * @param {BigNumber} value + * @return {BigNumber|*} + */ + getClosestValidAmountTokens(value) { + const amount = value ? + value : + this.amountBalance.cloneWithTokens(this.order.amount.$viewValue.replace(/\s/g, '')).getTokens(); + const validAmount = this.getClosestValidAmount(amount); + + if (!validAmount) { + return; } - return roundedAmount; + return validAmount.getTokens(); } /** @@ -883,9 +926,10 @@ } const price = this._validPrice(); const amount = this._validAmount(); - this._setDirtyField('total', this.priceBalance.cloneWithTokens( - price.times(amount) - )); + const total = price.times(amount).isZero() ? + this.priceBalance.cloneWithTokens(price.times(amount)) : + this.getRoundPriceByTickSize(price.times(amount)); + this._setDirtyField('total', total); this._silenceNow = true; } @@ -898,7 +942,7 @@ } const total = this._validTotal(); const amount = this._validAmount(); - this._setDirtyField('price', this.priceBalance.cloneWithTokens( + this._setDirtyField('price', this.getRoundPriceByTickSize( total.div(amount) )); this._silenceNow = true; @@ -914,7 +958,7 @@ const total = this._validTotal(); const price = this._validPrice(); - this._setDirtyField('amount', this.amountBalance.cloneWithTokens( + this._setDirtyField('amount', this.getClosestValidAmount( total.div(price) )); this._silenceNow = true; diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index 8f627f72c9..be72df47b6 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -107,8 +107,9 @@
- - {{$ctrl.getRoundPriceByTickSize().toFormat()}} + + {{$ctrl.getRoundPriceTokensByTickSize().toFormat()}} @@ -128,8 +129,9 @@ - - {{$ctrl.getRoundPriceByTickSize().toFormat()}} + + {{$ctrl.getRoundPriceTokensByTickSize().toFormat()}} @@ -173,14 +175,16 @@ - - {{$ctrl.pairRestrictions.minAmount.toFormat()}} + + {{$ctrl.pairRestrictions.minAmount.toFormat()}} - - {{$ctrl.getClosestValidAmount().toFormat()}} + + {{$ctrl.getClosestValidAmountTokens().toFormat()}} @@ -189,15 +193,17 @@ params="{name: $ctrl.amountBalance.asset.displayName}"> - - {{$ctrl.pairRestrictions.maxAmount.toFormat()}} + + {{$ctrl.pairRestrictions.maxAmount.toFormat()}} - - {{$ctrl.getClosestValidAmount().toFormat()}} + + {{$ctrl.getClosestValidAmountTokens().toFormat()}} From 34da8977be27f729071dbea49126f9ca620c37db Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Wed, 19 Jun 2019 17:14:06 +0300 Subject: [PATCH 13/41] CLIENT-1819: add round max amount --- .../dex/directives/createOrder/CreateOrder.js | 49 +++++++++++++++---- .../directives/createOrder/createOrder.html | 8 +-- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index c93a5bf116..e7bc783ac9 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -394,11 +394,11 @@ } setMaxPrice() { - const amount = this.maxAmount; - const total = this.priceBalance.cloneWithTokens( - this.price.getTokens().times(amount.getTokens()) + const amount = this.getRoundAmountByStepSize(this.maxAmount.getTokens()); + const price = this.getClosestValidPrice(this.price.getTokens()); + const total = this.getRoundPriceByTickSize( + price.getTokens().times(amount.getTokens()) ); - const price = this.price; this._updateField({ amount, total, price }); } @@ -511,9 +511,22 @@ if (!this.loadedPairRestrictions) { return; } - - const { tickSize, minPrice, maxPrice } = this.pairRestrictions; + const { tickSize } = this.pairRestrictions; const roundedPrice = price.decimalPlaces(tickSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); + return this.priceBalance.cloneWithTokens(roundedPrice); + } + + /** + * @param {BigNumber} price + * @return {Money|*} + */ + getClosestValidPrice(price) { + if (!this.loadedPairRestrictions) { + return; + } + + const { minPrice, maxPrice } = this.pairRestrictions; + const roundedPrice = this.getRoundPriceTokensByTickSize(price); if (roundedPrice.lt(minPrice)) { return this.priceBalance.cloneWithTokens(minPrice); @@ -528,7 +541,7 @@ /** * @param {BigNumber} value - * @return {BigNumber} + * @return {BigNumber|*} */ getRoundPriceTokensByTickSize(value) { const price = value ? @@ -541,6 +554,22 @@ return roundedPrice.getTokens(); } + /** + * @param {BigNumber} price + * @return {BigNumber|*} + */ + getClosestValidPriceTokens(value) { + const price = value ? + value : + this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); + const validPrice = this.getClosestValidPrice(price); + if (!validPrice) { + return; + } + + return validPrice.getTokens(); + } + /** * @param {BigNumber} value * @return {Money} @@ -926,8 +955,8 @@ } const price = this._validPrice(); const amount = this._validAmount(); - const total = price.times(amount).isZero() ? - this.priceBalance.cloneWithTokens(price.times(amount)) : + const total = amount.isZero() ? + this.priceBalance.cloneWithTokens('0') : this.getRoundPriceByTickSize(price.times(amount)); this._setDirtyField('total', total); this._silenceNow = true; @@ -942,7 +971,7 @@ } const total = this._validTotal(); const amount = this._validAmount(); - this._setDirtyField('price', this.getRoundPriceByTickSize( + this._setDirtyField('price', this.getClosestValidPrice( total.div(amount) )); this._silenceNow = true; diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index be72df47b6..84da2157e6 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -108,8 +108,8 @@ - {{$ctrl.getRoundPriceTokensByTickSize().toFormat()}} + ng-click="$ctrl.setPrice($ctrl.getClosestValidPriceTokens())"> + {{$ctrl.getClosestValidPriceTokens().toFormat()}} @@ -130,8 +130,8 @@ - {{$ctrl.getRoundPriceTokensByTickSize().toFormat()}} + ng-click="$ctrl.setPrice($ctrl.getClosestValidPriceTokens())"> + {{$ctrl.getClosestValidPriceTokens().toFormat()}} From e29de706a49d40f9dab986792b0b866b82c03196 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Wed, 19 Jun 2019 17:57:33 +0300 Subject: [PATCH 14/41] CLIENT-1819: refactor --- .../dex/directives/createOrder/CreateOrder.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index e7bc783ac9..cdfe5d075c 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -327,8 +327,8 @@ * @return {Promise} */ setAmountByBalance(factor) { - const amount = this.maxAmount.cloneWithTokens( - this.getClosestValidAmountTokens(this.maxAmount.getTokens().times(factor)) + const amount = this.getClosestValidAmount( + this.maxAmount.getTokens().times(factor) ); this._updateField({ amount }); return Promise.resolve(); @@ -403,7 +403,7 @@ } /** - * @param value + * @param {BigNumber} value */ setPrice(value) { const price = this.priceBalance.cloneWithTokens(value); @@ -411,7 +411,7 @@ } /** - * @param value + * @param {BigNumber} value */ setAmount(value) { const amount = this.amountBalance.cloneWithTokens(value); @@ -543,10 +543,7 @@ * @param {BigNumber} value * @return {BigNumber|*} */ - getRoundPriceTokensByTickSize(value) { - const price = value ? - value : - this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); + getRoundPriceTokensByTickSize(price) { const roundedPrice = this.getRoundPriceByTickSize(price); if (!roundedPrice) { return; From 3bc0297198d48e3698ce83f9a37c5059548efa27 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Thu, 20 Jun 2019 17:01:10 +0300 Subject: [PATCH 15/41] CLIENT-1819: review fix --- src/modules/dex/directives/createOrder/CreateOrder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index cdfe5d075c..52da4e42f4 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -176,8 +176,8 @@ this.receive(dexDataService.chooseOrderBook, ({ type, price, amount }) => { this.expand(type); - const roundedPrice = this.getRoundPriceTokensByTickSize(new BigNumber(price)).toString(); - const roundedAmount = this.getClosestValidAmountTokens(new BigNumber(amount)).toString(); + const roundedPrice = this.getRoundPriceTokensByTickSize(new BigNumber(price)).toFixed(); + const roundedAmount = this.getClosestValidAmountTokens(new BigNumber(amount)).toFixed(); switch (type) { case 'buy': this._onClickBuyOrder(roundedPrice, roundedAmount); From 5968f1aa76e07be744f293f0523259a32d8fe5d3 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Wed, 3 Jul 2019 11:05:09 +0300 Subject: [PATCH 16/41] CLIENT-1819: fix round function --- src/modules/dex/directives/createOrder/CreateOrder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 52da4e42f4..b9f1fb0f3b 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -512,7 +512,7 @@ return; } const { tickSize } = this.pairRestrictions; - const roundedPrice = price.decimalPlaces(tickSize.decimalPlaces(), BigNumber.ROUND_HALF_EVEN); + const roundedPrice = price.dividedToIntegerBy(tickSize).times(tickSize); return this.priceBalance.cloneWithTokens(roundedPrice); } @@ -577,7 +577,7 @@ } const { stepSize } = this.pairRestrictions; - const roundedAmount = value.decimalPlaces(stepSize.decimalPlaces()); + const roundedAmount = value.div(stepSize).integerValue().times(stepSize); return this.amountBalance.cloneWithTokens(roundedAmount); } From 303cb4bcfa32addcfb7c5fbe91742b26275b6203 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 23 Sep 2019 17:28:01 +0300 Subject: [PATCH 17/41] CLIENT-1819: change logic --- .../dex/directives/createOrder/CreateOrder.js | 245 ++++++++---------- .../directives/createOrder/createOrder.html | 38 +-- 2 files changed, 125 insertions(+), 158 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 36293b581f..e7b25ea7c6 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -49,10 +49,10 @@ } /** - * @return {number} + * @return {boolean} */ get loadedPairRestrictions() { - return Object.keys(this.pairRestrictions).length; + return Object.keys(this.pairRestrictions).length > 0; } /** @@ -172,13 +172,13 @@ /** * @type {boolean} */ - isValidStepSize = false; + isValidAmountPrecision = false; /** * @type {boolean} */ - isValidTickSize = false; + isValidPricePrecision = false; /** - * @type {Object} + * @type {TPairRestrictions | {}} */ pairRestrictions = {}; @@ -190,8 +190,8 @@ this.receive(dexDataService.chooseOrderBook, ({ type, price, amount }) => { this.expand(type); - const roundedPrice = this.getRoundPriceTokensByTickSize(new BigNumber(price)).toFixed(); - const roundedAmount = this.getClosestValidAmountTokens(new BigNumber(amount)).toFixed(); + const roundedPrice = this._getRoundPriceByPrecision(new BigNumber(price)).getTokens().toString(); + const roundedAmount = this._getClosestValidAmount(new BigNumber(amount)).getTokens().toString(); switch (type) { case 'buy': this._onClickBuyOrder(roundedPrice, roundedAmount); @@ -253,8 +253,8 @@ } }); - this.isValidStepSize = this._validateStepSize(); - this.isValidTickSize = this._validateTickSize(); + this.isValidAmountPrecision = this._validateAmountPrecision(); + this.isValidPricePrecision = this._validatePricePrecision(); this.observe(['amountBalance', 'type', 'fee', 'priceBalance'], this._updateMaxAmountOrPriceBalance); this.observe(['maxAmountBalance', 'amountBalance', 'priceBalance'], this._setPairRestrictions); @@ -291,19 +291,29 @@ this.observe(['priceBalance', 'total', 'maxPriceBalance'], this._setIfCanBuyOrder); this.observe('amount', () => { - this.isValidStepSize = this._validateStepSize(); + this.isValidAmountPrecision = this._validateAmountPrecision(); if (!this._silenceNow) { this._updateField({ amount: this.amount }); } }); this.observe('price', () => { - this.isValidTickSize = this._validateTickSize(); - if (!this._silenceNow) { + this.isValidPricePrecision = this._validatePricePrecision(); + if (this._silenceNow) { this._updateField({ price: this.price }); } }); + $scope.$watch('$ctrl.order.price.$viewValue', () => { + this.isValidPricePrecision = this._validatePricePrecision(); + utils.safeApply(); + }); + + $scope.$watch('$ctrl.order.amount.$viewValue', () => { + this.isValidAmountPrecision = this._validateAmountPrecision(); + utils.safeApply(); + }); + this.observe('total', () => ( !this._silenceNow && this._updateField({ total: this.total }) )); @@ -348,7 +358,7 @@ } return this.maxAmount.cloneWithTokens( - this.getRoundAmountTokensByStepSize(this.maxAmount.getTokens().mul(factor)) + this._getRoundAmountByPrecision(this.maxAmount.getTokens().mul(factor)).getTokens() ).eq(amount); } @@ -357,7 +367,7 @@ * @return {Promise} */ setAmountByBalance(factor) { - const amount = this.getClosestValidAmount( + const amount = this._getClosestValidAmount( this.maxAmount.getTokens().mul(factor) ); this._updateField({ amount }); @@ -419,14 +429,14 @@ } setMaxAmount() { - const amount = this.getClosestValidAmount(this.maxAmount.getTokens()); + const amount = this._getClosestValidAmount(this.maxAmount.getTokens()); this._updateField({ amount }); } setMaxPrice() { - const amount = this.getRoundAmountByStepSize(this.maxAmount.getTokens()); - const price = this.getClosestValidPrice(this.price.getTokens()); - const total = this.getRoundPriceByTickSize( + const amount = this._getRoundAmountByPrecision(this.maxAmount.getTokens()); + const price = this._getClosestValidPrice(this.price.getTokens()); + const total = this.priceBalance.cloneWithTokens( price.getTokens().mul(amount.getTokens()) ); this._updateField({ amount, total, price }); @@ -535,28 +545,30 @@ /** * @param {BigNumber} price - * @return {Money|*} + * @return {Money} + * @private */ - getRoundPriceByTickSize(price) { + _getRoundPriceByPrecision(price) { if (!this.loadedPairRestrictions) { - return; + return this.priceBalance.cloneWithTokens(price); } - const { tickSize } = this.pairRestrictions; - const roundedPrice = price.dividedToIntegerBy(tickSize).mul(tickSize); + const { pricePrecision } = this.pairRestrictions; + const roundedPrice = price.roundTo(pricePrecision); return this.priceBalance.cloneWithTokens(roundedPrice); } /** * @param {BigNumber} price - * @return {Money|*} + * @return {Money} + * @private */ - getClosestValidPrice(price) { + _getClosestValidPrice(price) { if (!this.loadedPairRestrictions) { - return; + return this.priceBalance.cloneWithTokens(price); } const { minPrice, maxPrice } = this.pairRestrictions; - const roundedPrice = this.getRoundPriceTokensByTickSize(price); + const roundedPrice = this._getRoundPriceByPrecision(price).getTokens(); if (roundedPrice.lt(minPrice)) { return this.priceBalance.cloneWithTokens(minPrice); @@ -569,106 +581,50 @@ return this.priceBalance.cloneWithTokens(roundedPrice); } - /** - * @param {BigNumber} value - * @return {BigNumber|*} - */ - getRoundPriceTokensByTickSize(price) { - const roundedPrice = this.getRoundPriceByTickSize(price); - if (!roundedPrice) { - return; - } - return roundedPrice.getTokens(); - } - - /** - * @param {BigNumber} price - * @return {BigNumber|*} - */ - getClosestValidPriceTokens(value) { - const price = value ? - value : - this.priceBalance.cloneWithTokens(this.order.price.$viewValue).getTokens(); - const validPrice = this.getClosestValidPrice(price); - if (!validPrice) { - return; - } - - return validPrice.getTokens(); - } - /** * @param {BigNumber} value * @return {Money} + * @private */ - getRoundAmountByStepSize(value) { + _getRoundAmountByPrecision(value) { if (!this.loadedPairRestrictions) { - return; + return this.amountBalance.cloneWithTokens(value); } - const { stepSize } = this.pairRestrictions; - const roundedAmount = value.div(stepSize).integerValue().mul(stepSize); - return this.amountBalance.cloneWithTokens(roundedAmount); - } + const { amountPrecision } = this.pairRestrictions; - /** - * - * @param {BigNumber} value - * @return {BigNumber} - */ - getRoundAmountTokensByStepSize(value) { - const roundedAmount = this.getRoundAmountByStepSize(value); - if (!roundedAmount) { - return; - } - return roundedAmount.getTokens(); + const roundedAmount = value.roundTo(amountPrecision, 1); + return this.amountBalance.cloneWithTokens(roundedAmount); } /** * @param {BigNumber} amount - * @return {Money|*} + * @return {Money} + * @private */ - getClosestValidAmount(amount) { + _getClosestValidAmount(amount) { if (!this.loadedPairRestrictions) { - return; + return this.amountBalance.cloneWithTokens(amount); } - const { stepSize } = this.pairRestrictions; - const { minAmount, maxAmount } = this.pairRestrictions; - const roundedAmount = this.getRoundAmountTokensByStepSize(amount); + const { amountPrecision, minAmount, maxAmount } = this.pairRestrictions; + const roundedAmount = this._getRoundAmountByPrecision(amount).getTokens(); if (roundedAmount.lt(minAmount)) { return this.amountBalance.cloneWithTokens( - minAmount.decimalPlaces(stepSize.decimalPlaces()) + minAmount.roundTo(amountPrecision) ); } if (roundedAmount.gt(maxAmount)) { return this.amountBalance.cloneWithTokens( - maxAmount.decimalPlaces(stepSize.decimalPlaces()) + maxAmount.roundTo(amountPrecision) ); } return this.amountBalance.cloneWithTokens(roundedAmount); } - /** - * @param {BigNumber} value - * @return {BigNumber|*} - */ - getClosestValidAmountTokens(value) { - const amount = value ? - value : - this.amountBalance.cloneWithTokens(this.order.amount.$viewValue.replace(/\s/g, '')).getTokens(); - const validAmount = this.getClosestValidAmount(amount); - - if (!validAmount) { - return; - } - - return validAmount.getTokens(); - } - /** * @param data * @return {*|Promise} @@ -986,7 +942,7 @@ const amount = this._validAmount(); const total = amount.isZero() ? this.priceBalance.cloneWithTokens('0') : - this.getRoundPriceByTickSize(price.mul(amount)); + this.priceBalance.cloneWithTokens(price.mul(amount)); this._setDirtyField('total', total); this._silenceNow = true; } @@ -1000,7 +956,7 @@ } const total = this._validTotal(); const amount = this._validAmount(); - this._setDirtyField('price', this.getClosestValidPrice( + this._setDirtyField('price', this._getClosestValidPrice( total.div(amount) )); this._silenceNow = true; @@ -1016,7 +972,7 @@ const total = this._validTotal(); const price = this._validPrice(); - this._setDirtyField('amount', this.getClosestValidAmount( + this._setDirtyField('amount', this._getClosestValidAmount( total.div(price) )); this._silenceNow = true; @@ -1199,33 +1155,49 @@ } /** + * @return {Promise|Promise} * @private */ _setPairRestrictions() { if (!this.loaded) { - return; + return Promise.resolve(); } this.pairRestrictions = {}; const defaultPairRestriction = this._getDefaultPairRestriction(); - ds.api.matcher.getPairRestrictions({ - amountAsset: this.amountBalance.asset, - priceAsset: this.priceBalance.asset - }) - .then(info => { - const maxAmount = info.maxAmount ? - new BigNumber(info.maxAmount) : - defaultPairRestriction.maxAmount; + return ds.api.matcher + .getPairRestrictions({ + amountAsset: this.amountBalance.asset, + priceAsset: this.priceBalance.asset + }) + .then(data => { + const { maxAmount, maxPrice, stepPrice, stepAmount, minPrice, minAmount } = data.restrictions; + const restMaxAmount = maxAmount ? new BigNumber(maxAmount) : defaultPairRestriction.maxAmount; + const pricePrecision = stepPrice ? + Math.min( + new BigNumber(stepPrice).getDecimalsCount(), defaultPairRestriction.pricePrecision + ) : + defaultPairRestriction.pricePrecision; + const amountPrecision = stepAmount ? + Math.min( + new BigNumber(stepAmount).getDecimalsCount(), defaultPairRestriction.amountPrecision + ) : + defaultPairRestriction.amountPrecision; + this.pairRestrictions = { - maxPrice: info.maxPrice ? new BigNumber(info.maxPrice) : defaultPairRestriction.maxPrice, + maxPrice: maxPrice ? new BigNumber(maxPrice) : defaultPairRestriction.maxPrice, maxAmount: this.maxAmountBalance ? - this.maxAmountBalance.getTokens() : - maxAmount, - tickSize: info.tickSize ? new BigNumber(info.tickSize) : defaultPairRestriction.tickSize, - stepSize: info.stepSize ? new BigNumber(info.stepSize) : defaultPairRestriction.stepSize, - minPrice: info.minPrice ? new BigNumber(info.minPrice) : defaultPairRestriction.minPrice, - minAmount: info.minAmount ? new BigNumber(info.minAmount) : defaultPairRestriction.minAmount + BigNumber.min(this.maxAmountBalance.getTokens(), restMaxAmount) : + restMaxAmount, + minPrice: minPrice ? + BigNumber.max(new BigNumber(minPrice), defaultPairRestriction.minPrice) : + defaultPairRestriction.minPrice, + minAmount: minAmount ? + BigNumber.max(new BigNumber(minAmount), defaultPairRestriction.minAmount) : + defaultPairRestriction.minAmount, + pricePrecision, + amountPrecision }; }) .catch(() => { @@ -1234,12 +1206,12 @@ } /** - * @return {{minAmount, minPrice, stepSize, maxPrice, maxAmount, tickSize}} + * @return {TPairRestrictions} * @private */ _getDefaultPairRestriction() { - const tickSize = new BigNumber(Math.pow(10, -this.priceBalance.asset.precision)); - const stepSize = new BigNumber(Math.pow(10, -this.amountBalance.asset.precision)); + const pricePrecision = this.priceBalance.asset.precision; + const amountPrecision = this.amountBalance.asset.precision; const maxPrice = new BigNumber(Infinity); const maxAmount = this.maxAmountBalance ? this.maxAmountBalance.getTokens() : @@ -1247,34 +1219,37 @@ return ({ maxPrice, maxAmount, - tickSize, - stepSize, - minPrice: tickSize, - minAmount: stepSize + pricePrecision, + amountPrecision, + minPrice: (new BigNumber(10)).pow(-pricePrecision), + minAmount: (new BigNumber(10)).pow(-amountPrecision) }); } /** * @return {boolean} */ - _validateStepSize() { - if (!this.amount) { + _validateAmountPrecision() { + if (!this.loadedPairRestrictions) { return true; } - return this.amount.getTokens().modulo(this.pairRestrictions.stepSize).isZero(); + const { amountPrecision } = this.pairRestrictions; + + return (new BigNumber(this.order.amount.$viewValue)).getDecimalsCount() <= amountPrecision; } /** * @return {boolean} */ - _validateTickSize() { - const { tickSize, minPrice, maxPrice } = this.pairRestrictions; - if (!this.price || this.price.getTokens().lte(minPrice) || this.price.getTokens().gte(maxPrice)) { + _validatePricePrecision() { + if (!this.loadedPairRestrictions) { return true; } - return this.price.getTokens().modulo(tickSize).isZero(); + const { pricePrecision } = this.pairRestrictions; + + return (new BigNumber(this.order.price.$viewValue)).getDecimalsCount() <= pricePrecision; } static _animateNotification($element) { @@ -1326,3 +1301,13 @@ controller }); })(); + +/** + * @typedef {object} TPairRestrictions + * @property {BigNumber} maxPrice + * @property {BigNumber} maxAmount + * @property {BigNumber} minPrice + * @property {BigNumber} minAmount + * @property {number} pricePrecision + * @property {number} amountPrecision + */ diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index e9fcf98390..ccb3c30dcf 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -93,10 +93,10 @@ type="text" ng-blur="$ctrl.setChangedInput('price')" w-validate - w-validator-custom="{{$ctrl.isValidTickSize}}" w-validator-asset="{{$ctrl.priceBalance.asset}}" w-validator-lte="{{$ctrl.pairRestrictions.maxPrice}}" w-validator-gte="{{$ctrl.pairRestrictions.minPrice}}" + w-validator-custom="{{$ctrl.isValidPricePrecision}}" name="price" ng-model="$ctrl.price" autocomplete="off" @@ -105,13 +105,6 @@
{{$ctrl.priceDisplayName}}
- - - - {{$ctrl.getClosestValidPriceTokens().toFormat()}} - - @@ -127,11 +120,9 @@ - - - - {{$ctrl.getClosestValidPriceTokens().toFormat()}} + + @@ -163,7 +154,7 @@ w-validator-asset="{{$ctrl.amountBalance.asset}}" w-validator-lte="{{$ctrl.maxAmountBalance ? $ctrl.maxAmountBalance : $ctrl.pairRestrictions.maxAmount}}" w-validator-gte="{{$ctrl.pairRestrictions.minAmount}}" - w-validator-custom="{{$ctrl.isValidStepSize}}" + w-validator-custom="{{$ctrl.isValidAmountPrecision}}" name="amount" ng-model="$ctrl.amount" autocomplete="off" @@ -180,13 +171,6 @@ {{$ctrl.pairRestrictions.minAmount.toFormat()}} - - - - {{$ctrl.getClosestValidAmountTokens().toFormat()}} - - - - - - {{$ctrl.getClosestValidAmountTokens().toFormat()}} - - + + + +
From c3d8bcbd6fa742903f981126224335042843e9af Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 23 Sep 2019 17:33:04 +0300 Subject: [PATCH 18/41] CLIENT-1819: change logic --- src/modules/dex/directives/createOrder/CreateOrder.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index e7b25ea7c6..2d8f3ffbdb 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -940,9 +940,7 @@ } const price = this._validPrice(); const amount = this._validAmount(); - const total = amount.isZero() ? - this.priceBalance.cloneWithTokens('0') : - this.priceBalance.cloneWithTokens(price.mul(amount)); + const total = this.priceBalance.cloneWithTokens(price.mul(amount)); this._setDirtyField('total', total); this._silenceNow = true; } From 267fcafcefc6c6f0c644b1bce0f97fd5e4fd9214 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 23 Sep 2019 18:25:53 +0300 Subject: [PATCH 19/41] CLIENT-1819: update locales --- locale/de/app.dex.json | 10 ++++++++++ locale/de/app.utils.json | 16 +++++++++++----- locale/en/app.dex.json | 10 ++++++++++ locale/en/app.utils.json | 16 +++++++++++----- locale/es/app.dex.json | 10 ++++++++++ locale/es/app.utils.json | 16 +++++++++++----- locale/et_EE/app.dex.json | 10 ++++++++++ locale/et_EE/app.utils.json | 16 +++++++++++----- locale/fr/app.dex.json | 10 ++++++++++ locale/fr/app.utils.json | 16 +++++++++++----- locale/hi_IN/app.dex.json | 10 ++++++++++ locale/hi_IN/app.utils.json | 16 +++++++++++----- locale/id/app.dex.json | 10 ++++++++++ locale/id/app.utils.json | 16 +++++++++++----- locale/it/app.dex.json | 10 ++++++++++ locale/it/app.utils.json | 16 +++++++++++----- locale/ja/app.dex.json | 10 ++++++++++ locale/ja/app.utils.json | 16 +++++++++++----- locale/ko/app.dex.json | 10 ++++++++++ locale/ko/app.utils.json | 16 +++++++++++----- locale/nl_NL/app.dex.json | 10 ++++++++++ locale/nl_NL/app.ledger.json | 2 +- locale/nl_NL/app.utils.json | 16 +++++++++++----- locale/pl/app.dex.json | 10 ++++++++++ locale/pl/app.utils.json | 16 +++++++++++----- locale/pt_BR/app.dex.json | 10 ++++++++++ locale/pt_BR/app.utils.json | 16 +++++++++++----- locale/pt_PT/app.dex.json | 10 ++++++++++ locale/pt_PT/app.utils.json | 16 +++++++++++----- locale/ru/app.dex.json | 10 ++++++++++ locale/ru/app.utils.json | 16 +++++++++++----- locale/tr/app.dex.json | 10 ++++++++++ locale/tr/app.utils.json | 16 +++++++++++----- locale/zh_CN/app.dex.json | 10 ++++++++++ locale/zh_CN/app.ledger.json | 2 +- locale/zh_CN/app.utils.json | 16 +++++++++++----- .../dex/directives/createOrder/createOrder.html | 8 ++++---- 37 files changed, 363 insertions(+), 91 deletions(-) diff --git a/locale/de/app.dex.json b/locale/de/app.dex.json index 9e7079a5b6..bc9791d96a 100644 --- a/locale/de/app.dex.json +++ b/locale/de/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[Das Diagramm konnte nicht heruntergeladen werden.] {div}[Wenn Sie dieses Diagramm in Ihrer Anwendung verwenden möchten, senden Sie eine Anfrage an [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 Tag", "1hour": "1 Stunde", @@ -32,8 +33,12 @@ "buy": "Kaufen", "createOrderNotPermitted": "Bestellungen sind vorübergehend nicht verfügbar", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Nicht genug {{name}}", "precision": "Das Maximum der {{precision}} Dezimalstellen wurde überschritten", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Dieses Feld wird benötigt" }, "expiration": "Ablauf", @@ -63,6 +68,8 @@ "priceField": "Limitpreis", "sell": "Verkaufen", "spread": "Abstand", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Gesamt" }, "demo": { @@ -144,6 +151,7 @@ "header": "Etwas ist schief gelaufen" } }, + "orders": "orders", "portfolio": { "title": "Portfolio" }, @@ -229,10 +237,12 @@ "all": "Alle", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Mein Guthaben", "myTradeHistory": "Meine Handelsgeschichte", "openOrders": "Meine offenen Bestellungen", "OrderHistory": "Meine Bestellhistorie", + "trade": "Trade", "tradeHistory": "Handelsgeschichte", "waves": "Waves" } diff --git a/locale/de/app.utils.json b/locale/de/app.utils.json index 72d3fcbe0f..57591a43e7 100644 --- a/locale/de/app.utils.json +++ b/locale/de/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Bitte hinterlegen sie ETH nicht von Smart Contracts! Hinterlegen sie keine ERC20 Tokens! Nur Ethereum ist erlaubt." }, "wavesGatewayVST": { - "helpDescrText": "Sobald die Transaktion bestätigt ist, verarbeitet das Gateway die Übertragung der Vostok Token zu einem Token in ihrem Waves Account.", - "helpDescrTitle": "Geben Sie diese Adresse in Ihren Vostok-Kunden oder Ihr Wallet ein.", + "helpDescrText": "Sobald die Transaktion bestätigt ist, verarbeitet das Gateway die Übertragung der VST Token zu einem Token in ihrem Waves Account.", + "helpDescrTitle": "Geben Sie diese Adresse in Ihren VST-Kunden oder Ihr Wallet ein.", "warningMinAmountTitle": "Der Mindesteinzahlungsbetrag beträgt {{minAmount, BigNumber}} {{assetTicker}}, der Höchsteinzahlungsbetrag beträgt {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Importieren sie Accounts von Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Teilen sie einen Link zu einer Rechnung", "verified": "Geprüft", "vostok": { - "serverError": "Der Vostok Service ist vorübergehend nicht verfügbar. Versuchen sie es später noch einmal." + "serverError": "Der VST Service ist vorübergehend nicht verfügbar. Versuchen sie es später noch einmal." }, "wtry": { "info": "Bei Problemen mit der Zahlungsabwicklung wenden sie sich bitte an das Support-Team von Digilira - [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Fehler beim Abrufen der Anbieterinformationen. Bitte überprüfen Sie die Adresse und versuchen Sie es erneut", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Keine verdächtigen Token anzeigen", + "edit": "Edit", "forDisableClear": "Um es vollständig zu deaktivieren, löschen Sie das Feld.", "matcherAddress": "Matcher Adresse", "nodeAddress": "Knotenadresse", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Verbesserte App-Navigation und Startseitenoberfläche.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Das Vostok-Gateway wurde gestartet.] \n {span.line}[2. Verbesserte Benutzeroberfläche und zusätzliche kleinere Fehler wurden behoben.]", + "1_3_2": "{span.line}[1. Das VST-Gateway wurde gestartet.] \n {span.line}[2. Verbesserte Benutzeroberfläche und zusätzliche kleinere Fehler wurden behoben.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/en/app.dex.json b/locale/en/app.dex.json index 2488ac2ab3..60826cd1aa 100644 --- a/locale/en/app.dex.json +++ b/locale/en/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[The chart could not be downloaded.]{div}[If you want to use this chart in your application, please send a request to [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 day", "1hour": "1 hour", @@ -32,8 +33,12 @@ "buy": "Buy", "createOrderNotPermitted": "Orders is temporarily unavailable", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Not enough {{name}}", "precision": "Exceeded maximum of {{precision}} decimal places", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "This field is required" }, "expiration": "Expiration", @@ -63,6 +68,8 @@ "priceField": "Limit price", "sell": "Sell", "spread": "spread", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, "demo": { @@ -144,6 +151,7 @@ "header": "Something went wrong" } }, + "orders": "orders", "portfolio": { "title": "Portfolio" }, @@ -229,10 +237,12 @@ "all": "All", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "My Balance", "myTradeHistory": "My Trade History", "openOrders": "My Open Orders", "OrderHistory": "My Order History", + "trade": "Trade", "tradeHistory": "Trade History", "waves": "Waves" } diff --git a/locale/en/app.utils.json b/locale/en/app.utils.json index fcc433b9e0..75e3940d0b 100644 --- a/locale/en/app.utils.json +++ b/locale/en/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Please do not deposit ETH from smart contracts! Do not deposit ERC20 tokens! Only Ethereum is allowed." }, "wavesGatewayVST": { - "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of Vostok to a token in your Waves account.", - "helpDescrTitle": "Enter this address into your Vostok client or wallet", + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Import accounts from Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Share a Link to an Invoice", "verified": "Verified", "vostok": { - "serverError": "Service Vostok temporarily unavailable. Try again later." + "serverError": "Service VST temporarily unavailable. Try again later." }, "wtry": { "info": "In case of problems with payment processing, please contact the Digilira support team — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Failed to get provider information. Please check the address and try again", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Don't show suspicious tokens", + "edit": "Edit", "forDisableClear": "For completely disable it, clear the field.", "matcherAddress": "Matcher address", "nodeAddress": "Node address", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/es/app.dex.json b/locale/es/app.dex.json index 6c2dea7777..537de9081c 100644 --- a/locale/es/app.dex.json +++ b/locale/es/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[No se puede descargar el gráfico.]{div}[Si quieres usar este gráfico en tu aplicación, por favor envía una petición a [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 día", "1hour": "1 hora", @@ -32,8 +33,12 @@ "buy": "Comprar", "createOrderNotPermitted": "Los pedidos no estàn disponible temporalmente", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "No hay suficiente {{name}}", "precision": "Excedido el máximo de {{precision}} lugares decimales", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Se requiere este campo" }, "expiration": "Terminación", @@ -63,6 +68,8 @@ "priceField": "Precio límite", "sell": "Vender", "spread": "diferencial", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, "demo": { @@ -144,6 +151,7 @@ "header": "Algo ha salido mal" } }, + "orders": "orders", "portfolio": { "title": "Portafolio" }, @@ -229,10 +237,12 @@ "all": "Todo", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Mi balance", "myTradeHistory": "Mi historial", "openOrders": "Mis órdenes abiertas", "OrderHistory": "Mi historial de ordenes", + "trade": "Trade", "tradeHistory": "Historial", "waves": "Waves" } diff --git a/locale/es/app.utils.json b/locale/es/app.utils.json index 905a7fa04a..ff5758a185 100644 --- a/locale/es/app.utils.json +++ b/locale/es/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "!Por favor no deposites ETH desde Smart-Contract! No deposites tokens ERC20, solo se acepta Ethereum." }, "wavesGatewayVST": { - "helpDescrText": "Una vez que se confirma la transacción, la puerta de enlace procesará la transferencia de Vostok en forma de token a su cuenta Waves.", - "helpDescrTitle": "Ingrese esta dirección en su cartera o cliente Vostok", + "helpDescrText": "Una vez que se confirma la transacción, la puerta de enlace procesará la transferencia de VST en forma de token a su cuenta Waves.", + "helpDescrTitle": "Ingrese esta dirección en su cartera o cliente VST", "warningMinAmountTitle": "La cantidad mínima de depósito es {{minAmount, BigNumber}} {{assetTicker}}, la cantidad máxima de depósito es {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Importar cuentas desde Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Comparte un Link a la factura", "verified": "Verificado", "vostok": { - "serverError": "Servicio Vostok temporalmente no disponible. Inténtalo de nuevo más tarde." + "serverError": "Servicio VST temporalmente no disponible. Inténtalo de nuevo más tarde." }, "wtry": { "info": "Si tuvieras problemas con el proceso de pago, por favor, contacta con el equipo de soporte de Digilira - [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "No se ha podido obtener la información del proveedor. Compruebe la dirección e inténtelo de nuevo", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "No mostrar tokens sospechosos", + "edit": "Edit", "forDisableClear": "Para desactivarlo por completo, borre el campo.", "matcherAddress": "Dirección del Matcher", "nodeAddress": "Dirección del Nodo", @@ -946,7 +952,7 @@ "1_3_0": "\"span.line\" [1. Se ha mejorado la navegación de la aplicación y la interfaz de la página de inicio.]", "1_3_18": "{span.line} [1. Inicio de sesión agregado a la billetera con clave privada.] \n {span.line} [2. El cambio de precio de 24 horas de un token ahora está vinculado al par de tokens / WAVES.]", "1_3_19": "{span.line}[1. Se ha puesto en marcha la puerta de enlace Bancor.]\n{span.line}[2. Se ha corregido la interfaz de usuario y algunos errores menores.]", - "1_3_2": "\"span.line\" [1. Se ha puesto en marcha la puerta de enlace Vostok.]\n\"span.line\" [2. Se ha corregido la interfaz de usuario y algunos errores menores.]", + "1_3_2": "\"span.line\" [1. Se ha puesto en marcha la puerta de enlace VST.]\n\"span.line\" [2. Se ha corregido la interfaz de usuario y algunos errores menores.]", "1_3_20": "{span.line} [1. Sistema mejorado para almacenar y restaurar cuentas desde el almacenamiento local (es necesario actualizar la [aplicación de escritorio] (https://wavesplatform.com/technology/wallet)).] \n {span.line} [2. Se corrigió el redondeo de precios en el libro de pedidos.]", "1_3_5": "\"span.line\" [1. Se ha añadido una pestaña con tokens de concurso [wsoc.io](https://wsoc.io).\n\"span.line\" [2. Se ha añadido compatibilidad con el idioma francés.]\n\"span.line\" [3. Se han corregido errores menores adicionales.]", "1_3_7": "\"span.line\" [1. Integración con [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Ahora puede calificar tokens directamente en la aplicación.]\n\"span.line\" [2. Se han corregido errores menores.]", diff --git a/locale/et_EE/app.dex.json b/locale/et_EE/app.dex.json index c72e1c421f..a964fce5f5 100644 --- a/locale/et_EE/app.dex.json +++ b/locale/et_EE/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div} [Diagrammi ei õnnestunud alla laadida.] {div} [Kui soovite seda skeemi oma rakenduses kasutada, saatke palun oma päring [tradingview.com'le](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 päev", "1hour": "1 tund", @@ -32,8 +33,12 @@ "buy": "Osta", "createOrderNotPermitted": "Orderid ei ole ajutiselt saadaval", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Pole piisavalt {{name}}", "precision": "Ületati maksimaalselt kasutatava {{precision}} kümnendkoha", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Selle välja täitmine on kohustuslik" }, "expiration": "Aegumine", @@ -63,6 +68,8 @@ "priceField": "Piirhind", "sell": "Müü", "spread": "hinnavahe", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Kokku" }, "demo": { @@ -144,6 +151,7 @@ "header": "Midagi läks valesti" } }, + "orders": "orders", "portfolio": { "title": "Portfell" }, @@ -229,10 +237,12 @@ "all": "Kõik", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Minu Saldod", "myTradeHistory": "Minu Kauplemisajalugu", "openOrders": "Minu Avatud Orderid", "OrderHistory": "My Order History", + "trade": "Trade", "tradeHistory": "Kauplemisajalugu", "waves": "Waves" } diff --git a/locale/et_EE/app.utils.json b/locale/et_EE/app.utils.json index 7a72be88b6..a2caf9da1b 100644 --- a/locale/et_EE/app.utils.json +++ b/locale/et_EE/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Palun ärge tehke sissemakset ETH smart-kontrakrtidelt! Ärge tehkse sissemakseid ERC20 tokenites! Ainult Ethereum on lubatud." }, "wavesGatewayVST": { - "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of Vostok to a token in your Waves account.", - "helpDescrTitle": "Enter this address into your Vostok client or wallet", + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Importige kontosid Waves Lite kliendist" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Jaga link arvele", "verified": "Verifitseeritud", "vostok": { - "serverError": "Service Vostok temporarily unavailable. Try again later." + "serverError": "Service VST temporarily unavailable. Try again later." }, "wtry": { "info": "Makse töötlemisega seotud probleemide korral palun võtke ühendust Digilira tugimeeskonnaga — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Teenusepakkuja teabe hankimine ebaõnnestus. Palun kontrollige aadressi ja proovige uuesti", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Don't show suspicious tokens", + "edit": "Edit", "forDisableClear": "For completely disable it, clear the field.", "matcherAddress": "Matcher'i aadress", "nodeAddress": "Sõlme aadress", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/fr/app.dex.json b/locale/fr/app.dex.json index fa1646ae67..2f3e92e474 100644 --- a/locale/fr/app.dex.json +++ b/locale/fr/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[Le graphique n'a pas pu être téléchargé.]{div}[Si vous désirez utiliser ce graphique dans votre application, veuillez envoyer une requête à [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 jour", "1hour": "1 heure", @@ -32,8 +33,12 @@ "buy": "Acheter", "createOrderNotPermitted": "Les ordres sont temporairement indisponibles", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Insuffisant {{name}}", "precision": "Dépassement du maximum de {{precision}} décimales", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Ce champ est requis" }, "expiration": "Expiration", @@ -63,6 +68,8 @@ "priceField": "Prix limite", "sell": "Vendre", "spread": "Écart", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, "demo": { @@ -144,6 +151,7 @@ "header": "Une erreur est survenue" } }, + "orders": "orders", "portfolio": { "title": "Portfolio" }, @@ -229,10 +237,12 @@ "all": "Tout", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Mon solde", "myTradeHistory": "Historique de mes échanges", "openOrders": "Mes ordres ouverts", "OrderHistory": "Mon historique d'ordres", + "trade": "Trade", "tradeHistory": "Historique d'échanges", "waves": "Waves" } diff --git a/locale/fr/app.utils.json b/locale/fr/app.utils.json index a29983c62e..37962b040c 100644 --- a/locale/fr/app.utils.json +++ b/locale/fr/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Ne déposez pas d'ETH à partir de smart-contracts ! Ne déposez pas de tokens ERC20 ! Seul Ethereum est autorisé." }, "wavesGatewayVST": { - "helpDescrText": "Une fois la transaction confirmée, le portail traitera le transfert de Vostok vers un jeton dans votre compte Waves.", - "helpDescrTitle": "Entrez cette adresse dans votre client ou portefeuille Vostok", + "helpDescrText": "Une fois la transaction confirmée, le portail traitera le transfert de VST vers un jeton dans votre compte Waves.", + "helpDescrTitle": "Entrez cette adresse dans votre client ou portefeuille VST", "warningMinAmountTitle": "Le montant minimum du dépôt est de {{minAmount, BigNumber}} {{assetTicker}}, le montant maximum du dépôt est de {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Importer des comptes depuis le Client Waves Lite" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Partager un lien vers une facture", "verified": "Vérifié", "vostok": { - "serverError": "Service Vostok temporairement indisponible. Veuillez réessayez plus tard." + "serverError": "Service VST temporairement indisponible. Veuillez réessayez plus tard." }, "wtry": { "info": "En cas de problèmes avec le traitement des paiements, veuillez contacter l'équipe de support Digilira - [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Échec de l'obtention d'informations sur le fournisseur. Veuillez vérifier l'adresse et réessayer", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Ne pas afficher les jetons suspects", + "edit": "Edit", "forDisableClear": "Pour le désactiver complètement, effacez le champ.", "matcherAddress": "Adresse du coupleur", "nodeAddress": "Adresse du node", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Amélioration de la navigation dans l'application et de l'interface de la page de démarrage.]", "1_3_18": "{span.line}[1. Ajout de la connexion au portefeuille à l'aide d'une clé privée.] \n{span.line}[2. Le changement de prix d'un jeton sur 24 heures est désormais lié à la paire jeton/WAVES.]", "1_3_19": "{span.line}[1. Le portail Bancor a été lancé.] \n{span.line}[2. Interface utilisateur améliorée.]", - "1_3_2": "{span.line}[1. Le portail Vostok a été lancé.] \n{span.line}[2. Interface utilisateur améliorée et correction de bugs mineurs supplémentaires.]", + "1_3_2": "{span.line} [1. Le portail VST a été lancé.] \n{span.line} [2. Interface utilisateur améliorée et correction de bugs mineurs supplémentaires.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. Un onglet avec les jetons du concours [wsoc.io] (https://wsoc.io) a été ajouté.] \n {span.line}[2. Prise en charge de la langue française ajoutée.] \n {span.line}[3. Des bugs mineurs supplémentaires ont été corrigés.]", "1_3_7": "{span.line}[1. Intégration avec [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Vous pouvez maintenant noter les jetons directement dans l'application.] \n {span.line}[2. Des bugs mineurs supplémentaires ont été corrigés.]", diff --git a/locale/hi_IN/app.dex.json b/locale/hi_IN/app.dex.json index 68e1e76f0f..0755b5a2f5 100644 --- a/locale/hi_IN/app.dex.json +++ b/locale/hi_IN/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[यह चार्ट डाउनलोड नहीं किया जा सका।]{div}[यदि आप इस चार्ट को अपेन ऐप्लिकेशन में उपयोग करना चाहतें हैं तो कृपया [tradingview.com](https://tradingview.com) को अनुरोध भेजें]" }, + "charts": "charts", "createOrder": { "1day": "1 दिन", "1hour": "1 घंटे", @@ -32,8 +33,12 @@ "buy": "खरीदें", "createOrderNotPermitted": "ओर्डर अस्थायी रूप से अनुपलब्ध हैं", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "पर्याप्त {{name}} नहीं", "precision": "अधिकतम {{precision}} दशमलव स्थानों से अधिक है", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "यह क्षेत्र जरूरी है" }, "expiration": "अवसान", @@ -63,6 +68,8 @@ "priceField": "मूल्य सीमित करें", "sell": "बेचना", "spread": "स्प्रेड", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "कुल योग" }, "demo": { @@ -144,6 +151,7 @@ "header": "कुछ गलत हुआ" } }, + "orders": "orders", "portfolio": { "title": "पोर्टफोलियो" }, @@ -229,10 +237,12 @@ "all": "सभी", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "मेरा बैलेंस", "myTradeHistory": "मेरा ट्रेड इतिहास", "openOrders": "मेरे खुले ऑर्डर", "OrderHistory": "My Order History", + "trade": "Trade", "tradeHistory": "ट्रेड इतिहास", "waves": "Waves" } diff --git a/locale/hi_IN/app.utils.json b/locale/hi_IN/app.utils.json index 59108afc8f..f5cd57c295 100644 --- a/locale/hi_IN/app.utils.json +++ b/locale/hi_IN/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "कृपया स्मार्ट-कॉन्ट्रैक्ट से ETH जमा ना करें! ERC20 टोकन जमा ना करें! केवल Ethereum अनुमत है।" }, "wavesGatewayVST": { - "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of Vostok to a token in your Waves account.", - "helpDescrTitle": "Enter this address into your Vostok client or wallet", + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "वेव्स लाइट क्लाइंट से खाते आयात करें" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "किसी इनवॉइस का लिंक साझा करें", "verified": "सत्यापित", "vostok": { - "serverError": "Service Vostok temporarily unavailable. Try again later." + "serverError": "Service VST temporarily unavailable. Try again later." }, "wtry": { "info": "भुगतान प्रोसेसिंग की समस्याओं की स्थिति में, कृपया Digilira सपोर्टिंग टीम से संपर्क करें — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "प्रदाता की जानकारी प्राप्त करने में विफल। कृपया पते की जांच करें और पुनः प्रयास करें", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Don't show suspicious tokens", + "edit": "Edit", "forDisableClear": "For completely disable it, clear the field.", "matcherAddress": "मैचर पता", "nodeAddress": "नोड पता", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/id/app.dex.json b/locale/id/app.dex.json index e758b9fbb7..428f0928fe 100644 --- a/locale/id/app.dex.json +++ b/locale/id/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[Bagan tidak dapat diunduh.] {div}[Jika Anda ingin menggunakan bagan ini di aplikasi Anda, silakan kirim permintaan ke [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 hari", "1hour": "1 jam", @@ -32,8 +33,12 @@ "buy": "Beli", "createOrderNotPermitted": "Pesanan sementara tidak tersedia", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Tidak cukup {{name}}", "precision": "Melebihi {{precision}} angka desimal", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Bagian ini diperlukan" }, "expiration": "Kedaluwarsa", @@ -63,6 +68,8 @@ "priceField": "Batasi harga", "sell": "Jual", "spread": "Sebaran", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, "demo": { @@ -144,6 +151,7 @@ "header": "Ada yang salah" } }, + "orders": "orders", "portfolio": { "title": "Portofolio" }, @@ -229,10 +237,12 @@ "all": "Semua", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Saldo saya", "myTradeHistory": "Sejarah Dagang Anda", "openOrders": "Pesanan Terbuka Anda", "OrderHistory": "Riwayat Pesanan Saya", + "trade": "Trade", "tradeHistory": "Sejarah Perdagangan", "waves": "Waves" } diff --git a/locale/id/app.utils.json b/locale/id/app.utils.json index 8e93860abb..3579d850f7 100644 --- a/locale/id/app.utils.json +++ b/locale/id/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Tolong jangan depositkan ETH dari kontrak pintar! Jangan setor token ERC20! Hanya Ethereum yang diizinkan." }, "wavesGatewayVST": { - "helpDescrText": "Setelah transaksi dikonfirmasi, gateway akan memproses transfer Vostok ke token di akun Waves Anda.", - "helpDescrTitle": "Masukkan alamat ini ke klien atau dompet Vostok Anda", + "helpDescrText": "Setelah transaksi dikonfirmasi, gateway akan memproses transfer VST ke token di akun Waves Anda.", + "helpDescrTitle": "Masukkan alamat ini ke klien atau dompet VST Anda", "warningMinAmountTitle": "Jumlah minimum deposit adalah {{minAmount, BigNumber}} {{assetTicker}}, jumlah deposit maksimum adalah {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Impor akun dari Klien Lite Waves" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Bagikan Tautan ke Faktur", "verified": "Terverifikasi", "vostok": { - "serverError": "Layanan Vostok sementara tidak tersedia. Coba lagi nanti." + "serverError": "Layanan VST sementara tidak tersedia. Coba lagi nanti." }, "wtry": { "info": "Jika ada masalah dengan proses pembayaran, silakan hubungi tim dukungan Digilira — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Gagal mendapatkan informasi penyedia. Silakan periksa alamatnya dan coba lagi", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Jangan tampilkan token yang mencurigakan", + "edit": "Edit", "forDisableClear": "Untuk sepenuhnya menonaktifkannya, kosongkan bidang.", "matcherAddress": "Alamat pencocok", "nodeAddress": "Alamat node", @@ -946,7 +952,7 @@ "1_3_0": "{span.line} [1. Navigasi aplikasi yang ditingkatkan dan antarmuka halaman mulai.]", "1_3_18": "{span.line} [1. Menambahkan login ke dompet menggunakan kunci pribadi.] \n{span.line} [2. Perubahan harga 24 jam dari token sekarang terikat ke pasangan token/WAVES.]", "1_3_19": "{span.line} [1. Gerbang Bancor telah diluncurkan.] \n {span.line} [2. Antarmuka menu pengguna telah ditingkatkan.]", - "1_3_2": "{span.line} [1. Gateway Vostok telah diluncurkan.] \n{span.line} [2. UI yang diperbaiki dan bug minor tambahan telah diperbaiki.]", + "1_3_2": "{span.line} [1. Gateway VST telah diluncurkan.] \n{span.line} [2. UI yang diperbaiki dan bug minor tambahan telah diperbaiki.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line} [1. Tab dengan token kontes [wsoc.io] (https://wsoc.io) telah ditambahkan.] \n {span.line} [2. Dukungan bahasa Perancis ditambahkan.] \n {span.line} [3. Bug minor tambahan telah diperbaiki.]", "1_3_7": "{span.line}[1. Integrasi dengan [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Sekarang Anda dapat menilai token langsung di app.] \n {span.line}[2. Bug minor tambahan telah diperbaiki.]", diff --git a/locale/it/app.dex.json b/locale/it/app.dex.json index 5ed040c159..f4f0a726ed 100644 --- a/locale/it/app.dex.json +++ b/locale/it/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[Non è stato possibile scaricare il listino.]{div}[Se vuoi usare questo listino nella tua applicazione, invia una richiesta a [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 giorno", "1hour": "1 ora", @@ -32,8 +33,12 @@ "buy": "Compra", "createOrderNotPermitted": "Ordini temporaneamente non disponibile", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "{{name}} insufficienti", "precision": "Superamento del massimo di {{precision}} posizioni decimali", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Questo campo è obbligatorio" }, "expiration": "Scadenza", @@ -63,6 +68,8 @@ "priceField": "Prezzo Limite", "sell": "Vendi", "spread": "spread", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Totale" }, "demo": { @@ -144,6 +151,7 @@ "header": "Qualcosa non ha funzionato" } }, + "orders": "orders", "portfolio": { "title": "Portafoglio" }, @@ -229,10 +237,12 @@ "all": "Tutto", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Il mio bilancio", "myTradeHistory": "Il mio storico ordini", "openOrders": "I miei ordini pendenti", "OrderHistory": "Storico Ordini", + "trade": "Trade", "tradeHistory": "Storico Ordini", "waves": "Waves" } diff --git a/locale/it/app.utils.json b/locale/it/app.utils.json index 6e5aac1627..55d36ff258 100644 --- a/locale/it/app.utils.json +++ b/locale/it/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Per favore, non inviare ETH da smart contracts! Non inviare token ERC20! Accettiamo esclusivamente Ethereum." }, "wavesGatewayVST": { - "helpDescrText": "Una volta che la transazione sarà confermata, il gateway processerà il trasferimento di Vostok in favore di un token nel tuo account Waves.", - "helpDescrTitle": "Inserisci questo indirizzo nel tuo client Vostok o nel tuo wallet", + "helpDescrText": "Una volta che la transazione sarà confermata, il gateway processerà il trasferimento di VST in favore di un token nel tuo account Waves.", + "helpDescrTitle": "Inserisci questo indirizzo nel tuo client VST o nel tuo wallet", "warningMinAmountTitle": "L'importo minimo di deposito è di {{minAmount, BigNumber}} {{assetTicker}}, l'importo massimo di deposito è di {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Importa account dal Client Waves Lite" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Condividi il link ad una fattura", "verified": "Verificato", "vostok": { - "serverError": "Servizio Vostok temporaneamente non disponibile. Riprova più tardi." + "serverError": "Servizio VST temporaneamente non disponibile. Riprova più tardi." }, "wtry": { "info": "In caso di problema con la procedura di pagamento, per favore contattare il team di supporto di Digilira — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Informazioni del provider non acquisite. Controllare il link e riprovare più tardi", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Nascondi token sospetti", + "edit": "Edit", "forDisableClear": "Per disabilitarlo completamente, lascia vuoto il campo.", "matcherAddress": "Indirizzo Matcher", "nodeAddress": "Indirizzo Nodo", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Miglioramento dell'interfaccia do navigazione della pagina iniziale.]", "1_3_18": "{span.line} [1. Aggiunto login al wallet utilizzando una chiave privata.]\n{span.line} [2. La modifica del prezzo di 24 ore di un token è ora associata alla coppia token/WAVES.]", "1_3_19": "{span.line} [1. Lancio del gateway Bancor.] \n{span.line} [2.Miglioramento dell'interfaccia del menu utente.]", - "1_3_2": "{span.line} [1. Lancio del gateway Vostok.] \n{span.line} [2. Miglioramento dell'interfaccia utente e risoluzione di altri bug minori.]", + "1_3_2": "{span.line} [1. Lancio del gateway VST.] \n{span.line} [2. Miglioramento dell'interfaccia utente e risoluzione di altri bug minori.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. Aggiunto il tab al concorso [wsoc.io](https://wsoc.io) tokens.]\n{span.line}[2. Aggiunto il supporto alla lingua Francese.]\n{span.line}[3. Risoluzione di bug minori.]", "1_3_7": "{span.line} [1. Integrazione con [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Ora puoi valutare i token direttamente nell'app.] \n {span.line} [2. Sono stati corretti altri bug minori.]", diff --git a/locale/ja/app.dex.json b/locale/ja/app.dex.json index 39e54d90f0..48f198a714 100644 --- a/locale/ja/app.dex.json +++ b/locale/ja/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[チャートをダウンロードできません。]{div}[アプリケーション内でチャートの利用を希望する場合 [tradingview.com](https://tradingview.com)にリクエストを送信して下さい。]" }, + "charts": "charts", "createOrder": { "1day": "1日", "1hour": "1時間", @@ -32,8 +33,12 @@ "buy": "購入", "createOrderNotPermitted": "現在、注文することができません", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "{{name}} が足りません", "precision": "小数点数の最大は {{precision}} 桁です", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "この項目は必須です" }, "expiration": "有効期限", @@ -63,6 +68,8 @@ "priceField": "指値", "sell": "売却", "spread": "スプレッド", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "合計" }, "demo": { @@ -144,6 +151,7 @@ "header": "何かがおかしいようです" } }, + "orders": "orders", "portfolio": { "title": "ポートフォリオ" }, @@ -229,10 +237,12 @@ "all": "すべて", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "自分の残高", "myTradeHistory": "自分のトレード履歴", "openOrders": "自分の未約定注文", "OrderHistory": "自分のトレード履歴", + "trade": "Trade", "tradeHistory": "トレード履歴", "waves": "Waves" } diff --git a/locale/ja/app.utils.json b/locale/ja/app.utils.json index 5e2bd24943..fd797a8c6c 100644 --- a/locale/ja/app.utils.json +++ b/locale/ja/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "ETHをスマートコントラクトからデポジットしないでください。また、ERC20トークンもデポジットしないでください。" }, "wavesGatewayVST": { - "helpDescrText": "トランザクションが承認されると、ゲートウェイはVostokの送信を進め、あなたのWavesアカウントにトークンが反映されます。", - "helpDescrTitle": "このアドレスをVostokクライアント、またはウォレットに入力してください", + "helpDescrText": "トランザクションが承認されると、ゲートウェイはVSTの送信を進め、あなたのWavesアカウントにトークンが反映されます。", + "helpDescrTitle": "このアドレスをVSTクライアント、またはウォレットに入力してください", "warningMinAmountTitle": "最小デポジット額は{{minAmount, BigNumber}} {{assetTicker}}、最大デポジット額は{{maxAmount}} {{assetTicker}}です" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Wavesのライトクライアントからアカウントをインポート" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "請求書リンクを共有", "verified": "承認済", "vostok": { - "serverError": "現在、一時的に、Vostokのサービスがご利用いただけません。再度お試しください。" + "serverError": "現在、一時的に、VSTのサービスがご利用いただけません。再度お試しください。" }, "wtry": { "info": "送金処理に問題が生じた場合、Digiliraのサポートチームに連絡してください。— [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "プロバイダー情報の取得に失敗しました。アドレスを確認して再度お試しください。", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "不審なトークンを表示しない", + "edit": "Edit", "forDisableClear": "完全に無効にするには、このフィールドをクリアします。", "matcherAddress": "Matcher アドレス", "nodeAddress": "ノードアドレス", @@ -946,7 +952,7 @@ "1_3_0": "{span.line} [1. アプリのナビゲーションとスタートページのインターフェースが改善されました。]", "1_3_18": "{span.line}[1. 秘密鍵によるログインが可能になりました。]{span.line}[2. 24時間以内のトークン価格の変化がトークン/WAVESペアに対応しました。]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line} [1. Vostokのゲートウェイが追加されました。 \n{span.line} [2. UIの改善と、いくつかのマイナーなバグを修正しました。]", + "1_3_2": "{span.line} [1. VSTのゲートウェイが追加されました。 \n{span.line} [2. UIの改善と、いくつかのマイナーなバグを修正しました。]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. [wsoc.io](https://wsoc.io) コンテスト用のトークンタブが追加されました。]{span.line}[2. フランス語に対応しました。]{span.line}[3. 一部のマイナーバグを修正しました。]", "1_3_7": "{span.line}[1.[tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) に対応。アプリから直接トークンのレーティングが可能に。]{span.line}[2. 追加のマイナーバグを修正しました。]", diff --git a/locale/ko/app.dex.json b/locale/ko/app.dex.json index fe60b752c7..64c0006ee0 100644 --- a/locale/ko/app.dex.json +++ b/locale/ko/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[차트를 불러올 수 없습니다.]{div}[귀하의 어플리케이션에서 해당 차트를 불러오고 싶다면 [tradingview.com](https://tradingview.com)에 요청하세요.]" }, + "charts": "charts", "createOrder": { "1day": "1일", "1hour": "1시간", @@ -32,8 +33,12 @@ "buy": "매수", "createOrderNotPermitted": "일시적으로 거래 주문을 이용할 수 없습니다.", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "{{name}}가 부족합니다", "precision": "최대 소수점 자리 값 {{precision}} 초과", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "필수 입력 항목입니다" }, "expiration": "주문 만기", @@ -63,6 +68,8 @@ "priceField": "지정가", "sell": "매도", "spread": "스프레드", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "총금액" }, "demo": { @@ -144,6 +151,7 @@ "header": "문제가 발생했습니다" } }, + "orders": "orders", "portfolio": { "title": "포트폴리오" }, @@ -229,10 +237,12 @@ "all": "모두", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "나의 잔액", "myTradeHistory": "나의 주문내역", "openOrders": "나의 대기 주문", "OrderHistory": "나의 주문내역", + "trade": "Trade", "tradeHistory": "거래내역", "waves": "Waves" } diff --git a/locale/ko/app.utils.json b/locale/ko/app.utils.json index fcc5edf504..5292c0eae5 100644 --- a/locale/ko/app.utils.json +++ b/locale/ko/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Smart Contracts에서 ETH를 입금하지 마세요! ERC20 토큰을 입금하지 마세요! Ethereum 입금만 가능합니다." }, "wavesGatewayVST": { - "helpDescrText": "트랜잭션이 승인되면 게이트웨이가 귀하의 Waves 계정에서 Vostok를 토큰으로 전송하는 작업을 처리할 것입니다.", - "helpDescrTitle": "이 주소를 Vostok 클라이언트 또는 지갑에 입력하세요", + "helpDescrText": "트랜잭션이 승인되면 게이트웨이가 귀하의 Waves 계정에서 VST를 토큰으로 전송하는 작업을 처리할 것입니다.", + "helpDescrTitle": "이 주소를 VST 클라이언트 또는 지갑에 입력하세요", "warningMinAmountTitle": "최소 입금액은 {{minAmount, BigNumber}} {{assetTicker}} 이며 최대 입금액은 {{maxAmount}} {{assetTicker}} 입니다." } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Waves Lite 클라이언트에서 계정 불러오기" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "인보이스 링크 복사", "verified": "인증 완료", "vostok": { - "serverError": "Vostok 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요." + "serverError": "VST 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요." }, "wtry": { "info": "지불 처리와 관련된 문제가 있을 경우 Digilira 지원팀에 문의하세요 — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "제공자의 정보를 가져오는데 실패했습니다. 주소를 확인하고 다시 시도하세요.", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "검증되지 않은 토큰을 표시하지 않습니다", + "edit": "Edit", "forDisableClear": "완전히 비활성화하려면 항목을 지우세요", "matcherAddress": "Matcher 주소", "nodeAddress": "Node 주소", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. 앱 네비게이션 및 시작 페이지 인터페이스 개선.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok 게이트웨이 런칭 완료.]\n{span.line}[2. UI 개선 및 기타 버그 픽스.]", + "1_3_2": "{span.line}[1. VST 게이트웨이 런칭 완료.]\n{span.line}[2. UI 개선 및 기타 버그 픽스.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. [wsoc.io](https://wsoc.io) 컨테스트 토큰 탭 추가 완료.]\n{span.line}[2. 프랑스어 지원 추가.]\n{span.line}[3. 기타 버그 픽스.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com)과의 통합. 앱에서 토큰을 평가할 수 있습니다.]\n{span.line}[2. 기타 버그 픽스.]", diff --git a/locale/nl_NL/app.dex.json b/locale/nl_NL/app.dex.json index 28d2314981..d1b56f5728 100644 --- a/locale/nl_NL/app.dex.json +++ b/locale/nl_NL/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[De grafiek kan niet worden gedownload.] {div}[Als u deze grafiek in uw toepassing wilt gebruiken, stuur dan een verzoek naar [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 dag", "1hour": "1 uur", @@ -32,8 +33,12 @@ "buy": "Kopen", "createOrderNotPermitted": "Orders zijn tijdelijk niet beschikbaar.", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Niet genoeg {{name}}", "precision": "Maximum aantal decimalen van {{precision}} overschreden", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Verplicht veld" }, "expiration": "Vervalt", @@ -63,6 +68,8 @@ "priceField": "Limiet prijs", "sell": "verkoop", "spread": "spreiding", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Totaal" }, "demo": { @@ -144,6 +151,7 @@ "header": "Er is iets misgegaan" } }, + "orders": "orders", "portfolio": { "title": "Portfolio" }, @@ -229,10 +237,12 @@ "all": "Alles", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Mijn balans", "myTradeHistory": "Mijn handelsgeschiedenis", "openOrders": "Mijn openstaande orders", "OrderHistory": "Mijn handelsgeschiedenis", + "trade": "Trade", "tradeHistory": "Handelsgeschiedenis", "waves": "Waves" } diff --git a/locale/nl_NL/app.ledger.json b/locale/nl_NL/app.ledger.json index ef733ed4b1..377fba94b7 100644 --- a/locale/nl_NL/app.ledger.json +++ b/locale/nl_NL/app.ledger.json @@ -12,7 +12,7 @@ "back": "Ga terug", "choose": "Kies uw account", "help": { - "id": "{div} [Stel handmatig een ID in of selecteer een account uit de lijst.] \n{div} [Bewaar de ID, deze is nodig voor het importeren.]" + "id": "{div}[Stel handmatig een ID in of selecteer een account uit de lijst.] \n{div}[Bewaar de ID, deze is nodig voor het importeren.]" }, "id": "Account ID", "importAccount": "Importeer een Ledger account", diff --git a/locale/nl_NL/app.utils.json b/locale/nl_NL/app.utils.json index cdf6358126..c264dedac5 100644 --- a/locale/nl_NL/app.utils.json +++ b/locale/nl_NL/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Verstuur geen ETH vanuit smart contracts naar dit adres. Stort geen ERC20 tokens! Alleen Ethereum is toegestaan." }, "wavesGatewayVST": { - "helpDescrText": "Zodra de transactie bevestigd is zal de gateway de transactie behandelen en dit omzetten naar een Vostok token in uw Waves account.", - "helpDescrTitle": "Dit adres invoeren in uw Vostok-client of wallet", + "helpDescrText": "Zodra de transactie bevestigd is zal de gateway de transactie behandelen en dit omzetten naar een VST token in uw Waves account.", + "helpDescrTitle": "Dit adres invoeren in uw VST-client of wallet", "warningMinAmountTitle": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Accounts importeren van Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Deel een link naar een factuur", "verified": "Geverifieerd", "vostok": { - "serverError": "Service Vostok tijdelijk niet beschikbaar. Probeer het later opnieuw." + "serverError": "Service VST tijdelijk niet beschikbaar. Probeer het later opnieuw." }, "wtry": { "info": "Neem in geval van problemen met de betalingsverwerking contact op met het Digilira-ondersteuningsteam - [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Niet gelukt provider informatie op te vragen. Controleer het adres en probeer het opnieuw.", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Toon geen verdachte tokens", + "edit": "Edit", "forDisableClear": "Om het volledig uit te schakelen, maak het veld leeg.", "matcherAddress": "Matcher adres", "nodeAddress": "Node adres", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Spam tokens and transactions have been hidden in client.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/pl/app.dex.json b/locale/pl/app.dex.json index 86fdc9c472..7ade2bdc19 100644 --- a/locale/pl/app.dex.json +++ b/locale/pl/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[Wykres nie mógł zostać załadowany]{div}[Jeśli chcesz używać tego wykresu w twojej aplikacji wyślij proszę prośbę do [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 dzień", "1hour": "1 godz", @@ -32,8 +33,12 @@ "buy": "Kupno", "createOrderNotPermitted": "Chwilowo niedostępna informacja o ofertach", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Nie wystarczająco {{name}}", "precision": "Przekroczono maksymalną liczbę{{precision}} miejsc dziesiętnych", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "To pole jest wymagane" }, "expiration": "Wygaśnięcie", @@ -63,6 +68,8 @@ "priceField": "Limit ceny", "sell": "Sprzedaż", "spread": "spread", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Ogółem" }, "demo": { @@ -144,6 +151,7 @@ "header": "Coś poszło nie tak" } }, + "orders": "orders", "portfolio": { "title": "Portfolio" }, @@ -229,10 +237,12 @@ "all": "Wszystko", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Stan konta", "myTradeHistory": "Moja historia transakcji", "openOrders": "Moje aktywne zlecenia", "OrderHistory": "Moja historia transakcji", + "trade": "Trade", "tradeHistory": "Historia transakcji", "waves": "Waves" } diff --git a/locale/pl/app.utils.json b/locale/pl/app.utils.json index a3218902f4..ce63240eb3 100644 --- a/locale/pl/app.utils.json +++ b/locale/pl/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Proszę nie deponować ETH z inteligentnych kontraktów (smart contracts)! Proszę nie deponować tokenów ERC20! Tylko Ethereum dozwolone." }, "wavesGatewayVST": { - "helpDescrText": "Jeżeli transakcja zostanie potwierdzona, system wymieni Vostok na tokeny w Twoim koncie Waves.", - "helpDescrTitle": "Wprowadź ten adres w swoim kliencie albo portfelu Vostok", + "helpDescrText": "Jeżeli transakcja zostanie potwierdzona, system wymieni VST na tokeny w Twoim koncie Waves.", + "helpDescrTitle": "Wprowadź ten adres w swoim kliencie albo portfelu VST", "warningMinAmountTitle": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}}, maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Import konta z Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Udostępnij link do faktury", "verified": "Zweryfikowany", "vostok": { - "serverError": "Usługa Vostok jest tymczasowo niedostępna. Spróbuj ponownie później." + "serverError": "Usługa VST jest tymczasowo niedostępna. Spróbuj ponownie później." }, "wtry": { "info": "Na wypadek problemów z procesem płatności, proszę kontaktować się z Digilira support team — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Nie udało się pobrać informacji o dostawcy. Sprawdź adres i spróbuj ponownie", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Nie pokazuj podejrzanych tokenów", + "edit": "Edit", "forDisableClear": "Aby całkowicie go wyłączyć, wyczyść pole.", "matcherAddress": "Adres Matchera", "nodeAddress": "Adres Node", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Ulepszona nawigacja aplikacji i interfejs strony startowej.]", "1_3_18": "{span.line} [1. Dodano login do portfela za pomocą klucza prywatnego.] \n {span.line} [2. 24-godzinna zmiana ceny tokena jest teraz powiązana z parą token / WAVES.]", "1_3_19": "{span.line} [1. Uruchomiono bramę Bancor.] \n {span.line} [2. Interfejs menu użytkownika został ulepszony.]", - "1_3_2": "{span.line} [1. Uruchomiono bramę (gateway) Vostok.] \n {span.line} [2. Poprawiony interfejs użytkownika i dodatkowo zostały naprawione drobne błędy.]", + "1_3_2": "{span.line} [1. Uruchomiono bramę (gateway) VST.] \n {span.line} [2. Poprawiony interfejs użytkownika i dodatkowo zostały naprawione drobne błędy.]", "1_3_20": "{span.line} [1. Ulepszony system przechowywania i przywracania kont z lokalnego magazynu (potrzeba aktualizacji [aplikacji komputerowej] (https://wavesplatform.com/technology/wallet)).] \n {span.line} [2. Naprawiono zaokrąglanie cen w księdze zamówień.]", "1_3_5": "{span.line} [1. Dodano zakładkę z tokenami konkursowymi [wsoc.io] (https://wsoc.io).] \n {span.line} [2. Dodano obsługę języka francuskiego.] \n {span.line} [3. Dodatkowe drobne błędy zostały naprawione.]", "1_3_7": "{span.line} [1. Integracja z [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Teraz możesz oceniać tokeny bezpośrednio w aplikacji.] \n {span.line} [2. Dodatkowe drobne błędy zostały naprawione.]", diff --git a/locale/pt_BR/app.dex.json b/locale/pt_BR/app.dex.json index cf59c2aa34..810635b2ad 100644 --- a/locale/pt_BR/app.dex.json +++ b/locale/pt_BR/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[O gráfico não pôde ser baixado.]{div}[Se você quiser usar este gráfico em seu aplicativo, envie uma solicitação para [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 dia", "1hour": "1 hora", @@ -32,8 +33,12 @@ "buy": "Comprar", "createOrderNotPermitted": "As ordens estão temporariamente indisponíveis", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Insuficiente {{name}}", "precision": "Máximo excedido de {{precision}} casas decimais", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Este campo é obrigatório" }, "expiration": "Prazo", @@ -63,6 +68,8 @@ "priceField": "Preço limite", "sell": "Vender", "spread": "spread", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, "demo": { @@ -144,6 +151,7 @@ "header": "Algo deu errado" } }, + "orders": "orders", "portfolio": { "title": "Portfólio" }, @@ -229,10 +237,12 @@ "all": "Tudo", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Meu Saldo", "myTradeHistory": "Meu histórico de Negociações", "openOrders": "Minhas Ordens Abertas", "OrderHistory": "My Order History", + "trade": "Trade", "tradeHistory": "Histórico de Negociações", "waves": "Waves" } diff --git a/locale/pt_BR/app.utils.json b/locale/pt_BR/app.utils.json index b65605dd8c..43fbf6d10f 100644 --- a/locale/pt_BR/app.utils.json +++ b/locale/pt_BR/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Por favor, não deposite ETH através de smart contracts! Não deposite tokens ERC20! Apenas Ethereum é permitido." }, "wavesGatewayVST": { - "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of Vostok to a token in your Waves account.", - "helpDescrTitle": "Enter this address into your Vostok client or wallet", + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Importar contas da Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Compartilhar o link desta fatura", "verified": "Verificado", "vostok": { - "serverError": "Service Vostok temporarily unavailable. Try again later." + "serverError": "Service VST temporarily unavailable. Try again later." }, "wtry": { "info": "Em caso de problemas com o processamento de pagamentos, entre em contato com a equipe de suporte da Digilira — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Falha ao obter informações do provedor. Por favor, verifique o endereço e tente novamente", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Don't show suspicious tokens", + "edit": "Edit", "forDisableClear": "For completely disable it, clear the field.", "matcherAddress": "Endereço do Matcher", "nodeAddress": "Endereço do node", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/pt_PT/app.dex.json b/locale/pt_PT/app.dex.json index 2488ac2ab3..60826cd1aa 100644 --- a/locale/pt_PT/app.dex.json +++ b/locale/pt_PT/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[The chart could not be downloaded.]{div}[If you want to use this chart in your application, please send a request to [tradingview.com](https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 day", "1hour": "1 hour", @@ -32,8 +33,12 @@ "buy": "Buy", "createOrderNotPermitted": "Orders is temporarily unavailable", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Not enough {{name}}", "precision": "Exceeded maximum of {{precision}} decimal places", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "This field is required" }, "expiration": "Expiration", @@ -63,6 +68,8 @@ "priceField": "Limit price", "sell": "Sell", "spread": "spread", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, "demo": { @@ -144,6 +151,7 @@ "header": "Something went wrong" } }, + "orders": "orders", "portfolio": { "title": "Portfolio" }, @@ -229,10 +237,12 @@ "all": "All", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "My Balance", "myTradeHistory": "My Trade History", "openOrders": "My Open Orders", "OrderHistory": "My Order History", + "trade": "Trade", "tradeHistory": "Trade History", "waves": "Waves" } diff --git a/locale/pt_PT/app.utils.json b/locale/pt_PT/app.utils.json index 437ad5fbfd..51d28d761b 100644 --- a/locale/pt_PT/app.utils.json +++ b/locale/pt_PT/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Please do not deposit ETH from smart contracts! Do not deposit ERC20 tokens! Only Ethereum is allowed." }, "wavesGatewayVST": { - "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of Vostok to a token in your Waves account.", - "helpDescrTitle": "Enter this address into your Vostok client or wallet", + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Import accounts from Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Share a Link to an Invoice", "verified": "Verified", "vostok": { - "serverError": "Service Vostok temporarily unavailable. Try again later." + "serverError": "Service VST temporarily unavailable. Try again later." }, "wtry": { "info": "In case of problems with payment processing, please contact the Digilira support team — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Failed to get provider information. Please check the address and try again", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Don't show suspicious tokens", + "edit": "Edit", "forDisableClear": "For completely disable it, clear the field.", "matcherAddress": "Matcher address", "nodeAddress": "Node address", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/ru/app.dex.json b/locale/ru/app.dex.json index b1f8416599..de75e50684 100644 --- a/locale/ru/app.dex.json +++ b/locale/ru/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[Невозможно загрузить график.]{div}[Если вы хотите использовать график в своем приложении, отправьте заявку [tradingview.com](https://tradingview.com)]" }, + "charts": "графики", "createOrder": { "1day": "1 день", "1hour": "1 час", @@ -32,8 +33,12 @@ "buy": "Купить", "createOrderNotPermitted": "Ордера временно недоступны.", "errors": { + "amountMax": "Макс. сумма - ", + "amountMin": "Мин. сумма - ", "balance": "Недостаточно {{name}}", "precision": "Десятичных знаков больше, чем {{precision}}", + "priceMax": "Макс. цена - ", + "priceMin": "Мин. цена - ", "required": "Это поле необходимо заполнить" }, "expiration": "Действителен", @@ -63,6 +68,8 @@ "priceField": "Цена", "sell": "Продать", "spread": "разница", + "stopPriceField": "Стоп-цена", + "stopPriceHelp": "Это автоматически действующий ордер на покупку или продажу по заранее установленной цене", "total": "Сумма" }, "demo": { @@ -144,6 +151,7 @@ "header": "Что-то пошло не так..." } }, + "orders": "ордера", "portfolio": { "title": "Портфолио" }, @@ -229,10 +237,12 @@ "all": "Все", "btc": "Btc", "eth": "ETH", + "history": "история", "myBalance": "Мой баланс", "myTradeHistory": "Моя история сделок", "openOrders": "Мои открытые ордера", "OrderHistory": "Моя история ордеров", + "trade": "Сделки", "tradeHistory": "История сделок", "waves": "Waves" } diff --git a/locale/ru/app.utils.json b/locale/ru/app.utils.json index b8e3d2f259..a674723772 100644 --- a/locale/ru/app.utils.json +++ b/locale/ru/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "Не отправляйте ETH со смарт-контрактов! Не отправляйте ERC20-токены! Только Ethereum." }, "wavesGatewayVST": { - "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит Vostok-токен на ваш аккаунт Waves.", - "helpDescrTitle": "Введите этот адрес в ваш Vostok клиент или кошелёк.", + "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит VST-токен на ваш аккаунт Waves.", + "helpDescrTitle": "Введите этот адрес в ваш VST клиент или кошелёк.", "warningMinAmountTitle": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Импорт аккаунтов из Waves Lite Client" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Ссылка на выставленный счет", "verified": "Проверенный", "vostok": { - "serverError": "Сервис Vostok временно недоступен. Попробуйте, пожалуйста, позже." + "serverError": "Сервис VST временно недоступен. Попробуйте, пожалуйста, позже." }, "wtry": { "info": "Если у вас возникнут проблемы с процессингом, пожалуйста, обратитесь в службу поддержки Digilira — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "Невозможно получить информацию о провайдере. Проверьте корректность адреса и попробуйте ещё раз", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Не показывать подозрительные токены", + "edit": "Изменить", "forDisableClear": "Если хотите его полностью отключить, очистите поле.", "matcherAddress": "Адрес матчера", "nodeAddress": "Адрес ноды", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Улучшена навигация приложения и интерфейс стартовых страниц.]", "1_3_18": "{span.line}[1. Добавлен импорт из приватного ключа.]\n{span.line}[2. Изменение цены токена теперь считается по паре с WAVES.]", "1_3_19": "{span.line}[1. Запущен шлюз Bancor]\n{span.line}[2. Улучшен интерфейс меню пользователя.]", - "1_3_2": "{span.line}[1. Запущен шлюз Vostok.]\n{span.line}[2. Улучшен UI и исправлено несколько багов.]", + "1_3_2": "{span.line}[1. Запущен шлюз VST.]\n{span.line}[2. Улучшен UI и исправлено несколько багов.]", "1_3_20": "{span.line}[1. Улучшена система хранения и восстановления аккаунтов из локального хранилища (Необходимо обновить [desktop-приложение](https://wavesplatform.com/technology/wallet))]\n{span.line}[2. Исправлено округление цен в ордербуке]", "1_3_5": "{span.line}[1. Добавлена вкладка с токенами конкурса [wsoc.io](https://wsoc.io)]\n{span.line}[2. Добавлена поддержка франзуского языка]\n{span.line}[3. Исправлены мелкие ошибки]", "1_3_7": "{span.line}[1. Интеграция с [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Теперь вы можете голосовать за токены прямо в приложении]\n{span.line}[2. Исправлены мелкие ошибки]", diff --git a/locale/tr/app.dex.json b/locale/tr/app.dex.json index b3c12224c8..3706e128ea 100644 --- a/locale/tr/app.dex.json +++ b/locale/tr/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[grafikler indirilememektedir.]{div}[Eğer uygulamanızda grafikleri kullanmak istiyorsanız [tradingview.com] a mesaj atın(https://tradingview.com)]" }, + "charts": "charts", "createOrder": { "1day": "1 gün", "1hour": "1 saat", @@ -32,8 +33,12 @@ "buy": "Al", "createOrderNotPermitted": "Emirler geçici olarak devre dışı", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "Yetersiz {{name}} bakiyesi", "precision": "Maksimum ondalık sayısını {{precision}} aştınız", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "Bu alanın doldurulması zorunludur" }, "expiration": "Geçerlilik tarihi", @@ -63,6 +68,8 @@ "priceField": "Limit fiyat", "sell": "Sat", "spread": "Makas", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Toplam" }, "demo": { @@ -144,6 +151,7 @@ "header": "Bir şeyler ters gitti" } }, + "orders": "orders", "portfolio": { "title": "Portföy" }, @@ -229,10 +237,12 @@ "all": "Hepsi", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "Bakiyem", "myTradeHistory": "Takas geçmişim", "openOrders": "Açık emirlerim", "OrderHistory": "Takas geçmişim", + "trade": "Trade", "tradeHistory": "Takas geçmişi", "waves": "Waves" } diff --git a/locale/tr/app.utils.json b/locale/tr/app.utils.json index b980124853..52b8268872 100644 --- a/locale/tr/app.utils.json +++ b/locale/tr/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "ETH akıllı kontratlarından yatırma işlemi yapmayınız. ERC20 tokenleri yatırmayınız! Sadece Ethereum transferleri kabul edilir." }, "wavesGatewayVST": { - "helpDescrText": "İşlem onaylandıktan sonra Vostoklar Waves adresinize geçit tarafından gönderilir.", - "helpDescrTitle": "Bu adresi Vostok cüzdanına ya da uygulamasına giriniz.", + "helpDescrText": "İşlem onaylandıktan sonra VSTlar Waves adresinize geçit tarafından gönderilir.", + "helpDescrTitle": "Bu adresi VST cüzdanına ya da uygulamasına giriniz.", "warningMinAmountTitle": "Minimum yatırma tutarı {{minAmount, BigNumber}} {{assetTicker}}'dir. Maksimum yatırma tutarı ise {{maxAmount}} {{assetTicker}}'dir." } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "Hesapları Waves Lite Client'ten aktar" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "Custom matcher address", + "matcher": "Matcher", + "matcherTerms": "I agree to the Super DEX Mather Terms of Use.", + "terms": "Terms", + "title": "Choose matcher", + "wavesTerms": "I am over 18 years old, and I agree to the Waves Terms of Use and Waves Privacy Policy." }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "Faturanın bir kopyasını paylaş", "verified": "Doğrulandı", "vostok": { - "serverError": "Vostok geçici olarak hizmet dışıdır. Daha sonra tekrar deneyiniz." + "serverError": "VST geçici olarak hizmet dışıdır. Daha sonra tekrar deneyiniz." }, "wtry": { "info": "Ödemeler konusunda herhangi bir problem yaşarsanız — [destek@digilira.com](mailto:destek@digilira.com) 'a e-posta gönderebilirsiniz." @@ -670,6 +675,7 @@ "dataProviderInvalid": "Sağlayıcı bilgisine ulaşılamadı. Lütfen adresi kontrol edin ve tekrar deneyin.", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "Şüheli tokenleri gösterme", + "edit": "Edit", "forDisableClear": "Tamamen devre dışı bırakmak için alanı temizleyin.", "matcherAddress": "Eşleştirici adresi", "nodeAddress": "Tam düğüm adresi", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1. Açılış sayfası güncellendi ve sayfalar arası dolaşım geliştirildi.]", "1_3_18": "{span.line}[1. Özel anahtar ile giriş eklendi]\n{span.line}[2. Bir token'in 24 saatlik değişimi token/WAVES olarak ayarlandı.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Vostok geçidi faaliyete alındı.]\n{span.line}[2. Görsel tasarım geliştirildi ve ufak hatalar giderildi.]", + "1_3_2": "{span.line}[1. VST geçidi faaliyete alındı.]\n{span.line}[2. Görsel tasarım geliştirildi ve ufak hatalar giderildi.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. [wsoc.io](https://wsoc.io) Yarışma kripto paraları eklendi.]\n{span.line}[2. Fransızca desteği eklendi.]\n{span.line}[3. Ufak hatalar giderildi.]", "1_3_7": "{span.line}[1. [tokenrating.wavesexplorer.com] entegrasyonu (https://tokenrating.wavesexplorer.com) Artık uygulamadan kripto paralar için derecelendirme puanı verebilirsiniz.]\n{span.line}[2. Ufak hatalar giderildi.]", diff --git a/locale/zh_CN/app.dex.json b/locale/zh_CN/app.dex.json index 90160bff70..33b7df88f4 100644 --- a/locale/zh_CN/app.dex.json +++ b/locale/zh_CN/app.dex.json @@ -19,6 +19,7 @@ "candleChart": { "error": "{div}[无法下载该图表。]{div}[如果您要在您的应用程序中使用此图表,请向[tradingview.com](https://tradingview.com)]发送请求" }, + "charts": "charts", "createOrder": { "1day": "1天", "1hour": "1小时", @@ -32,8 +33,12 @@ "buy": "买", "createOrderNotPermitted": "订单暂时无法使用", "errors": { + "amountMax": "Max Amount - ", + "amountMin": "Min Amount - ", "balance": "您的{{name}}余额不足以", "precision": "超过最大的{{precision}}位小数", + "priceMax": "Max Price - ", + "priceMin": "Min Price - ", "required": "这是必填栏" }, "expiration": "满期", @@ -63,6 +68,8 @@ "priceField": "限价", "sell": "卖", "spread": "买卖差价", + "stopPriceField": "Stop price", + "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "总额" }, "demo": { @@ -144,6 +151,7 @@ "header": "出了些问题" } }, + "orders": "orders", "portfolio": { "title": "投资组合" }, @@ -229,10 +237,12 @@ "all": "所有", "btc": "Btc", "eth": "ETH", + "history": "history", "myBalance": "我的金额", "myTradeHistory": "我的贸易历史", "openOrders": "我的开放订单", "OrderHistory": "我的订单历史", + "trade": "Trade", "tradeHistory": "交易历史记录", "waves": "Waves" } diff --git a/locale/zh_CN/app.ledger.json b/locale/zh_CN/app.ledger.json index f79762f4ac..a814dccffc 100644 --- a/locale/zh_CN/app.ledger.json +++ b/locale/zh_CN/app.ledger.json @@ -12,7 +12,7 @@ "back": "返回", "choose": "选择您的帐户", "help": { - "id": "{div} [手动设置ID或从列表中选择一个帐户。] \n {div} [请保存ID,导入时需要。]" + "id": "{div}[手动设置ID或从列表中选择一个帐户。] \n {div}[请保存ID,导入时需要。]" }, "id": "帐户ID", "importAccount": "导入 Ledger 帐户", diff --git a/locale/zh_CN/app.utils.json b/locale/zh_CN/app.utils.json index 2e23cf52e0..1b50d31432 100644 --- a/locale/zh_CN/app.utils.json +++ b/locale/zh_CN/app.utils.json @@ -293,8 +293,8 @@ "warningTitle": "请不要从智能合约中交存ETH!别交存ERC20代币!您只能交存以太坊Ethereum。" }, "wavesGatewayVST": { - "helpDescrText": "确认交易后,网关将处理将Vostok转移到Waves帐户中的代币。", - "helpDescrTitle": "在您的Vostok客户端或钱包中输入此地址", + "helpDescrText": "确认交易后,网关将处理将VST转移到Waves帐户中的代币。", + "helpDescrTitle": "在您的VST客户端或钱包中输入此地址", "warningMinAmountTitle": "最低存款金额为{{minAmount, BigNumber}} {{assetTicker}},最高存款金额为{{maxAmount}} {{assetTicker}}" } }, @@ -353,7 +353,12 @@ "wavesLiteClientDescription": "从Waves Lite客户端导入帐户" }, "matcherChoice": { - "title": "Choose matcher" + "customMatcher": "自定义匹配器地址", + "matcher": "匹配", + "matcherTerms": "我同意Super DEX Mather使用条款。", + "terms": "条款", + "title": "选择匹配器", + "wavesTerms": "我已超过18岁,我同意Waves使用条款和Waves隐私政策。" }, "open-main": { "dex": { @@ -470,7 +475,7 @@ "shareInvoiceLink": "分享单据链接", "verified": "验证", "vostok": { - "serverError": "Vostok服务暂时无法使用。稍后再试。" + "serverError": "VST服务暂时无法使用。稍后再试。" }, "wtry": { "info": "如果付款处理出了问题,请联系Digilira支持团队 — [support@digilira.com](mailto:support@digilira.com)" @@ -670,6 +675,7 @@ "dataProviderInvalid": "无法获得提供商信息。请检查地址并再试一次", "dataProviderName": "{{dataProviderName}}", "dontShowSpamCheckboxDescr": "不要显示可疑代币", + "edit": "编辑", "forDisableClear": "要完全禁用它,请清除该字段。", "matcherAddress": "交易匹配节点地址", "nodeAddress": "节点地址", @@ -946,7 +952,7 @@ "1_3_0": "{span.line}[1。改进了应用程序导航和起始页面界面。]", "1_3_18": "{span.line} [1。使用私钥添加了对钱包的登录。] \n {span.line} [2。令牌的24小时价格变化现在绑定到代币/ WAVES对。]", "1_3_19": "{span.line} [1。 Bancor网关已经推出。] \n {span.line} [2。用户菜单界面已得到改进。]", - "1_3_2": "{span.line} [1。 Vostok网关已经推出。] \n {span.line} [2。改进的用户界面和其他小错误已得到修复。]", + "1_3_2": "{span.line} [1。 VST网关已经推出。] \n {span.line} [2。改进的用户界面和其他小错误已得到修复。]", "1_3_20": "{span.line} [1。改进了从本地存储中存储和恢复帐户的系统(需要更新[桌面应用程序](https://wavesplatform.com/technology/wallet))。 \n {span.line} [2。修正了订单中价格的四舍五入。]", "1_3_5": "{span.line} [1。已添加包含[wsoc.io](https://wsoc.io)竞赛代币的标签。 \n {span.line} [2。增加了法语支持。] \n {span.line} [3。其他小错误已得到修复。]", "1_3_7": "{span.line} [1。与[tokenrating.wavesexplorer.com]集成(https://tokenrating.wavesexplorer.com)现在您可以直接在应用程序中对令牌进行评分。 \n {span.line} [2。其他小错误已得到修复。]", diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index ccb3c30dcf..1e834a1c19 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -106,13 +106,13 @@
- + {{$ctrl.pairRestrictions.maxPrice.toFormat()}} - + {{$ctrl.pairRestrictions.minPrice.toFormat()}} @@ -165,7 +165,7 @@ - + {{$ctrl.pairRestrictions.minAmount.toFormat()}} @@ -176,7 +176,7 @@ w-i18n="directives.createOrder.errors.balance" params="{name: $ctrl.amountBalance.asset.displayName}"> - + {{$ctrl.pairRestrictions.maxAmount.toFormat()}} From 462f65932f8df45b5156632b1a11c7a77861cd4e Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 7 Oct 2019 11:56:11 +0300 Subject: [PATCH 20/41] CLIENT-1819: fixes setting restrictions --- src/modules/dex/directives/createOrder/CreateOrder.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 2d8f3ffbdb..a2fe6b2c75 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -45,7 +45,7 @@ } get loaded() { - return this.amountBalance && this.priceBalance && this.fee; + return !!(this.amountBalance && this.priceBalance && this.fee); } /** @@ -257,7 +257,7 @@ this.isValidPricePrecision = this._validatePricePrecision(); this.observe(['amountBalance', 'type', 'fee', 'priceBalance'], this._updateMaxAmountOrPriceBalance); - this.observe(['maxAmountBalance', 'amountBalance', 'priceBalance'], this._setPairRestrictions); + this.observe(['maxAmountBalance', 'amountBalance', 'priceBalance', 'fee'], this._setPairRestrictions); this.observe('_assetIdPair', () => { this.amount = null; @@ -1163,7 +1163,6 @@ this.pairRestrictions = {}; const defaultPairRestriction = this._getDefaultPairRestriction(); - return ds.api.matcher .getPairRestrictions({ amountAsset: this.amountBalance.asset, From 4af0b0db27291497f47291a088f7e919683bfdcb Mon Sep 17 00:00:00 2001 From: vba2000 Date: Wed, 23 Oct 2019 15:24:03 +0300 Subject: [PATCH 21/41] DEXW-2234: fix migration --- src/modules/migrate/templates/migrate.html | 4 +- src/modules/utils/services/Storage.js | 81 +++++++++++++++++++++- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/src/modules/migrate/templates/migrate.html b/src/modules/migrate/templates/migrate.html index b35a520d75..d04c299eb4 100644 --- a/src/modules/migrate/templates/migrate.html +++ b/src/modules/migrate/templates/migrate.html @@ -60,6 +60,8 @@
+ + @@ -122,4 +124,4 @@ - \ No newline at end of file + diff --git a/src/modules/utils/services/Storage.js b/src/modules/utils/services/Storage.js index 3bfab08cb2..2c5eb7f26d 100644 --- a/src/modules/utils/services/Storage.js +++ b/src/modules/utils/services/Storage.js @@ -27,7 +27,8 @@ return saveUsersWithUniqueName(storage) .then(data => addNewGateway(data, WavesApp.defaultAssets.BNT)); }, - '1.4.0': storage => migrateCommonSettings(storage) + '1.4.0': storage => migrateCommonSettings(storage), + '1.4.6': storage => fixMigrateCommonSettings(storage) }; function newTerms(storage) { @@ -93,6 +94,84 @@ }); } + function fixSettings(user) { + const newDefaultSettings = defaultSettings.create(); + const pinnedList = newDefaultSettings.get('pinnedAssetIdList'); + + if (!user || typeof user.settings !== 'object') { + return {}; + } + + const settings = { ...user.settings }; + + if (settings.pinnedAssetIdList && settings.pinnedAssetIdList.length) { + const list = [ ...settings.pinnedAssetIdList ]; + + for (let assetIndex = list.length; assetIndex--; ) { + if (list[assetIndex] == null) { + list[assetIndex] = pinnedList[assetIndex]; + } + } + + settings.pinnedAssetIdList = list; + } + + if (settings.dex && settings.dex.watchlist && settings.dex.watchlist.favourite) { + const dexSettings = { ... settings.dex }; + dexSettings.watchlist = { ...dexSettings.watchlist }; + + if (!Array.isArray(dexSettings.watchlist.favourite)) { + dexSettings.watchlist.favourite = []; + } + + const favourite = dexSettings.watchlist.favourite + .map(pair => { + if (!pair || pair.length === 0) { + return null; + } + + if (!pair[0] || !pair[1]) { + return null; + } + + return pair; + }) + .filter(Boolean); + + dexSettings.watchlist.favourite = favourite; + settings.dex = dexSettings; + } + + return settings; + } + + function fixMigrateCommonSettings(storage) { + return Promise.all([storage.load('userList'), storage.load('multiAccountUsers')]).then(([userList, multiAccountUsers]) => { + try { + if (userList && userList.length) { + userList = userList.map(user => ({ ...user, settings: fixSettings(user) })); + } + + if (multiAccountUsers && typeof multiAccountUsers === 'object') { + const users = Object.entries(multiAccountUsers); + multiAccountUsers = users.reduce((acc, [key, user]) => { + user = { ...user, settings: fixSettings(user) }; + acc[key] = user; + return acc; + }, Object.create(null)); + } + } catch (e) { + + } + + return Promise.all([ + storage.save('multiAccountUsers', multiAccountUsers), + storage.save('userList', userList) + ]); + + }); + } + function migrateCommonSettings(storage) { return storage.load('userList').then(userList => { const commonSettings = defaultSettings.create(); From 9e6a05724ba8abdf8bf9b45738988d6ec007bd2a Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Thu, 24 Oct 2019 12:18:25 +0300 Subject: [PATCH 22/41] DEXW-2126: added supporting of deposit by gateway for BTC --- locale/de/app.create.json | 4 ++-- locale/de/app.utils.json | 8 +++++++- locale/en/app.create.json | 4 ++-- locale/en/app.utils.json | 8 +++++++- locale/es/app.create.json | 4 ++-- locale/es/app.utils.json | 8 +++++++- locale/et_EE/app.create.json | 4 ++-- locale/et_EE/app.utils.json | 8 +++++++- locale/fr/app.create.json | 4 ++-- locale/fr/app.utils.json | 8 +++++++- locale/hi_IN/app.create.json | 4 ++-- locale/hi_IN/app.utils.json | 8 +++++++- locale/id/app.create.json | 4 ++-- locale/id/app.utils.json | 8 +++++++- locale/it/app.utils.json | 6 ++++++ locale/ja/app.create.json | 4 ++-- locale/ja/app.utils.json | 8 +++++++- locale/ko/app.create.json | 4 ++-- locale/ko/app.utils.json | 8 +++++++- locale/nl_NL/app.create.json | 4 ++-- locale/nl_NL/app.utils.json | 8 +++++++- locale/pl/app.create.json | 4 ++-- locale/pl/app.utils.json | 8 +++++++- locale/pt_BR/app.create.json | 4 ++-- locale/pt_BR/app.utils.json | 8 +++++++- locale/pt_PT/app.create.json | 4 ++-- locale/pt_PT/app.utils.json | 8 +++++++- locale/ru/app.create.json | 6 +++--- locale/ru/app.utils.json | 8 +++++++- locale/tr/app.create.json | 4 ++-- locale/tr/app.utils.json | 8 +++++++- locale/zh_CN/app.create.json | 4 ++-- locale/zh_CN/app.utils.json | 8 +++++++- src/modules/utils/services/gateways/CoinomatService.js | 2 +- .../utils/services/gateways/WavesGatewayService.js | 5 +++-- 35 files changed, 155 insertions(+), 52 deletions(-) diff --git a/locale/de/app.create.json b/locale/de/app.create.json index a0b33994cd..aa5d99d7c2 100644 --- a/locale/de/app.create.json +++ b/locale/de/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "Zurück", "copySeed": "kopieren", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Sie müssen die Phrase auf dem nächsten Bildschirm bestätigen.", "ok": "Ich habe es aufgeschrieben.", "or": "oder", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/de/app.utils.json b/locale/de/app.utils.json index 7c8ee9dabd..259fff4e0f 100644 --- a/locale/de/app.utils.json +++ b/locale/de/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Wenn sie weniger als {{minAmount, BigNumber}} {{assetTicker}} senden, werden sie dieses Geld verlieren.", + "warningMinAmountTitle": "Die Mindesteinzahlung beträgt {{minAmount, BigNumber}} {{assetTicker}}", + "warningText": "Das Senden einer anderen Währung an diese Adresse kann zum Verlust ihrer Einzahlung führen.", + "warningTitle": "Senden sie nur BTC an diese Depotadresse" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "Greifen sie nicht auf ihre Wallet zu, wenn Sie öffentliches WLAN oder ein anderes Gerät verwenden.", "nextButton": "Ich verstehe", "p1": "Eine der häufigsten Formen des Betrugs ist Phishing, bei dem Betrüger falsche Gemeinschaften auf Facebook oder anderen Websites erstellen, die den authentischen ähneln.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Wie man sich vor Phishing schützt" } } diff --git a/locale/en/app.create.json b/locale/en/app.create.json index db2b92d1e0..7d347101da 100644 --- a/locale/en/app.create.json +++ b/locale/en/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "go back", "copySeed": "copy them", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "You will confirm this phrase on the next screen.", "ok": "I’ve written it down", "or": "or", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/en/app.utils.json b/locale/en/app.utils.json index 63af2f58ce..6fc82e05a5 100644 --- a/locale/en/app.utils.json +++ b/locale/en/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", + "warningText": "Sending any other currency to this address may result in the loss of your deposit.", + "warningTitle": "Send only BTC to this deposit address" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "Do not access your wallet when using public Wi-Fi or someone else’s device.", "nextButton": "I Understand", "p1": "One of the most common forms of scamming is phishing, which is when scammers create fake communities on Facebook or other websites that look similar to the authentic ones.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "How To Protect Yourself from Phishers" } } diff --git a/locale/es/app.create.json b/locale/es/app.create.json index 71c798375d..a21a8f3c01 100644 --- a/locale/es/app.create.json +++ b/locale/es/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "ir para atrás", "copySeed": "cópialas", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Confirmarás esta frase en la próxima pantalla.", "ok": "Las he anotado", "or": "o", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/es/app.utils.json b/locale/es/app.utils.json index 2cafdce53c..4b34e70fb3 100644 --- a/locale/es/app.utils.json +++ b/locale/es/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Verifique si su billetera o intercambio utiliza contratos inteligentes para retirar Bancor. No aceptamos tales transacciones y no podemos reembolsarlas. Perderá ese dinero.", "warningTitle": "Por favor, no deposite BNT desde contratos inteligentes! No deposite otros tokens ERC20! Sólo se permite Bancor." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Si mandas menos de {{minAmount, BigNumber}} {{assetTicker}} perderás tu dinero.", + "warningMinAmountTitle": "La cantidad mínima a depositar es de {{minAmount, BigNumber}} {{assetTicker}}", + "warningText": "Enviar otro tipo de moneda a esta dirección puede ocasionar la pérdida de tu depósito.", + "warningTitle": "Envía solo BTC a esta dirección de depósito" + }, "wavesGatewayERGO": { "helpDescrText": "Una vez se confirme la transacción, la puerta de enlace procesará la transferencia de ERGO en forma de token a su cuenta de Waves.", "helpDescrTitle": "Introduzca esta dirección en su cliente ERGO o billetera", @@ -888,7 +894,7 @@ "cell6": "No accedas a tu cartera (Wallet) cuando uses un acceso público Wi-Fi o el dispositivo de alguien.", "nextButton": "Lo entiendo", "p1": "Una de las formas más comunes de estafa es la suplantación de identidad, en el que estafadores crean falsas comunidades de Facebook u otros websites que se parecen a los auténticos.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "¿Cómo protegerte de los estafadores?" } } diff --git a/locale/et_EE/app.create.json b/locale/et_EE/app.create.json index cf90116ca1..32d469461f 100644 --- a/locale/et_EE/app.create.json +++ b/locale/et_EE/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "mine tagasi", "copySeed": "kopeerige need", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Kinnitate selle fraasi järgmisel ekraanil.", "ok": "Ma olen selle üles kirjutanud", "or": "või", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/et_EE/app.utils.json b/locale/et_EE/app.utils.json index 7a97426b9f..729a06d443 100644 --- a/locale/et_EE/app.utils.json +++ b/locale/et_EE/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Kui saadate vähem kui {{minAmount, BigNumber}} {{assetTicker}}, kaotate selle raha.", + "warningMinAmountTitle": "Minimaalne sissemakse summa on {{minAmount, BigNumber}} {{assetTicker}}", + "warningText": "Muude valuutade saatmine sellele aadressile võib kaasa tuua teie deposiidi kadumise.", + "warningTitle": "Saada selle deposiidi aadressile ainult BTC" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "Ärge avage oma rahakotti, kui kasutate avalikku Wi-Fi't või kellegi teise seadet", "nextButton": "Ma saan aru", "p1": "Üks levinumaid pettuse vorme on andmepüük, mis on siis, kui petturid loovad Facebookis võltsitud kogukonnad või muud autentsete lehekülgedega sarnased veebilehed.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Kuidas Kaitsta End Andmepüüdjate Eest" } } diff --git a/locale/fr/app.create.json b/locale/fr/app.create.json index 5b2f812892..5e88c0dbb2 100644 --- a/locale/fr/app.create.json +++ b/locale/fr/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "Retour", "copySeed": "Copier", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Vous confirmez cette phrase à l'écran suivant.", "ok": "Je l'ai écrite", "or": "ou", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/fr/app.utils.json b/locale/fr/app.utils.json index 6179a9a853..2f7cb56fa1 100644 --- a/locale/fr/app.utils.json +++ b/locale/fr/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Vérifiez si votre portefeuille ou votre plateforme d'échange utilise des smart-contracts pour retirer Bancor. Nous n'acceptons pas de telles transactions et ne pouvons pas les rembourser. Vous perdrez cet argent.", "warningTitle": "Veuillez ne pas déposer BNT depuis un smart-contract! Ne déposez pas d'autres jetons ERC20! Seul Bancor est autorisé." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Si vous envoyez moins de {{minAmount, BigNumber}} {{assetTicker}}, vous perdrez cet argent.", + "warningMinAmountTitle": "Le montant minimum de dépôt est {{minAmount, BigNumber}} {{assetTicker}}", + "warningText": "L'envoi de toute autre devise à cette adresse peut entraîner la perte de votre dépôt.", + "warningTitle": "Envoyez uniquement du BTC à cette adresse de dépôt" + }, "wavesGatewayERGO": { "helpDescrText": "Une fois la transaction confirmée, le portail traitera le transfert d’ERGO vers un jeton dans votre compte Waves.", "helpDescrTitle": "Entrez cette adresse dans votre client ou portefeuille ERGO", @@ -888,7 +894,7 @@ "cell6": "N'accédez pas à votre portefeuille lorsque vous utilisez le Wi-Fi public ou l'appareil de quelqu'un d'autre.", "nextButton": "Je comprends", "p1": "L'une des formes les plus courantes d'escroquerie est l'hameçonnage, qui consiste à créer de fausses communautés sur Facebook ou d'autres sites Web qui ressemblent à des sites authentiques.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Comment vous protéger des escrocs" } } diff --git a/locale/hi_IN/app.create.json b/locale/hi_IN/app.create.json index 887323e576..bf8410e118 100644 --- a/locale/hi_IN/app.create.json +++ b/locale/hi_IN/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "वापस जाएं", "copySeed": "इनको कॉपी करें", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "आप इस वाक्य की पुष्टि अगले स्क्रीन पर करेंगे ", "ok": "मैने इनको लिख लिया है", "or": "या", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/hi_IN/app.utils.json b/locale/hi_IN/app.utils.json index d1d054596d..1026350fd8 100644 --- a/locale/hi_IN/app.utils.json +++ b/locale/hi_IN/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "यदि आप {{minAmount, BigNumber}} {{assetTicker}} से कम राशि भेजेंगे तो आप उस धन को खो देंगे।", + "warningMinAmountTitle": "न्यूनतम जमा राशि {{minAmount, BigNumber}} {{assetTicker}} है।", + "warningText": "इस पते पर कोई और करेंसी भेजने से आपकी जमा राशि की हानि हो सकती है।", + "warningTitle": "इस जमा पते पर केवल BTC ही भेजें" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "सार्वजनिक वाई-फाई या किसी और की डिवाइस का उपयोग करते समय अपने वॉलेट को एक्सेस ना करें।", "nextButton": "मैं समझा", "p1": "अपनी खुद की सुरक्षा के लिए कुछ महत्वपूर्ण चीजों को समझने के लिए कृपया कुछ समय निकालें।", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "फिशर्स से खुद की सुरक्षा कैसे करें" } } diff --git a/locale/id/app.create.json b/locale/id/app.create.json index 9732458660..f5b9fd5893 100644 --- a/locale/id/app.create.json +++ b/locale/id/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "kembali", "copySeed": "salin semua", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Anda akan mengkonfirmasi frasa ini pada layar berikutnya.", "ok": "Saya telah menulisnya", "or": "atau", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/id/app.utils.json b/locale/id/app.utils.json index 43eb863dae..60cf8f563c 100644 --- a/locale/id/app.utils.json +++ b/locale/id/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Periksa apakah dompet atau pertukaran Anda menggunakan kontrak pintar untuk menarik Bancor. Kami tidak menerima transaksi tersebut dan tidak dapat mengembalikannya. Anda akan kehilangan uang itu.", "warningTitle": "Tolong jangan setorkan BNT dari kontrak pintar! Jangan setorkan token ERC20 lainnya! Hanya Bancor yang diizinkan." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Jika Anda akan mengirim kurang dari {{minAmount, BigNumber}} {{assetTicker}}, Anda akan kehilangan uang itu.", + "warningMinAmountTitle": "Jumlah minimum setoran adalah {{minAmount, BigNumber}} {{assetTicker}} , jumlah setoran maksimum adalah {{maxAmount}} {{assetTicker}}", + "warningText": "Mengirimkan mata uang lain ke alamat ini dapat menyebabkan hilangnya deposit Anda.", + "warningTitle": "Kirim saja BTC ke alamat setoran ini" + }, "wavesGatewayERGO": { "helpDescrText": "Setelah transaksi dikonfirmasi, gateway akan memproses transfer ERGO ke token di akun Waves Anda.", "helpDescrTitle": "Masukkan alamat ini ke klien atau dompet ERGO Anda", @@ -888,7 +894,7 @@ "cell6": "Jangan mengakses dompet Anda saat menggunakan Wi-Fi publik atau perangkat orang lain.", "nextButton": "Saya mengerti", "p1": "Salah satu bentuk penipuan yang paling umum adalah phishing, yaitu ketika scammers membuat komunitas palsu di Facebook atau situs web lain yang terlihat mirip dengan yang asli.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Cara Melindungi Diri dari Phisher" } } diff --git a/locale/it/app.utils.json b/locale/it/app.utils.json index b2cb63060f..c65c0971e4 100644 --- a/locale/it/app.utils.json +++ b/locale/it/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Controlla se il tuo wallet o exchange utilizza smart contract per trasferire Bancor. Non accettiamo questo tipo di transazioni e non ci sarà possibile rimborsarle. L'importo trasferito andrà perduto.", "warningTitle": "Per favore, non inviare BNT da smart contracts! Non inviare token ERC20! Accettiamo esclusivamente Bancor." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Inviando meno di {{minAmount, BigNumber}} {{assetTicker}}, l'importo trasferito andrà perduto.", + "warningMinAmountTitle": "Il deposito minimo è di {{minAmount, BigNumber}} {{assetTicker}}, il deposito massimo è di {{maxAmount}} {{assetTicker}}", + "warningText": "Inviare qualunque altra valuta a questo indirizzo potrebbe risultare in una perdita di quanto inviato.", + "warningTitle": "Invia esclusivamente BTC a questo indirizzo" + }, "wavesGatewayERGO": { "helpDescrText": "Una volta che la transazione sarà confermata, il gateway processerà il trasferimento di ERGO come token nel tuo account Waves.", "helpDescrTitle": "Inserisci questo indirizzo nel client ERGO o nel tuo wallet", diff --git a/locale/ja/app.create.json b/locale/ja/app.create.json index ff8707c396..3e1585d727 100644 --- a/locale/ja/app.create.json +++ b/locale/ja/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "戻る", "copySeed": "コピー", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "あなたは次の画面でこのフレーズの入力を求められます。", "ok": "書き留めました", "or": "または", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/ja/app.utils.json b/locale/ja/app.utils.json index 2bead243c3..b0ea6ad10a 100644 --- a/locale/ja/app.utils.json +++ b/locale/ja/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "{{minAmount, BigNumber}}以下の {{assetTicker}}を送金した場合、資産を紛失します。", + "warningMinAmountTitle": "最小デポジットは {{minAmount, BigNumber}} {{assetTicker}}です", + "warningText": "このアドレスに他の通貨を送信した場合、資産の消失につながる可能性があります。", + "warningTitle": "このデポジットアドレスにはBTCのみ送信してください" + }, "wavesGatewayERGO": { "helpDescrText": "トランザクションが承認されると、ゲートウェイはERGOの送信を進め、完了するとあなたのWavesアカウントにトークンが反映されます。", "helpDescrTitle": "このアドレスをERGOクライアント、またはウォレットに入力してください", @@ -888,7 +894,7 @@ "cell6": "公共のWi-Fiに接続している時、または自分以外のデバイスを使用する際、あなたのウォレットにはアクセスしないでください。", "nextButton": "理解しました", "p1": "最も一般的な詐欺の方法の一つがフィッシングです。Facebookやウェブサイト上で公式に似たページを偽造するケースが多いです。", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "あなたを詐欺師から守る方法" } } diff --git a/locale/ko/app.create.json b/locale/ko/app.create.json index cc8fe834ff..d796b25677 100644 --- a/locale/ko/app.create.json +++ b/locale/ko/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "이전 페이지로 돌아가세요", "copySeed": "이곳을 클릭하여 복사하세요", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "확인을 위해 다음 단계에서 백업 구절을 직접 입력해야 합니다.", "ok": "백업 구절을 저장했습니다", "or": "하거나", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/ko/app.utils.json b/locale/ko/app.utils.json index d574f5c4ac..185cb597a1 100644 --- a/locale/ko/app.utils.json +++ b/locale/ko/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "{{minAmount, BigNumber}} 미만의 {{assetTicker}}를 입금할 경우 귀하의 자산을 잃게 됩니다.", + "warningMinAmountTitle": "최소 입금액은 {{minAmount, BigNumber}} {{assetTicker}} 입니다", + "warningText": "이 주소로 다른 암호화폐를 전송할 경우 귀하의 자산을 잃게 됩니다.", + "warningTitle": "본 입금 주소로 BTC만 전송하세요" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "공용 Wi-Fi 또는 타인의 장치를 사용하여 지갑에 액세스하지 마세요.", "nextButton": "모두 이해했습니다", "p1": "가장 일반적인 형태의 사기 중 하나는 피싱입니다. 이는 사기꾼들이 Facebook이나 다른 웹사이트에서 실제의 것과 아주 흡사한 가짜 커뮤니티를 만드는 것입니다.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "피싱으로부터 자신을 보호하는 방법" } } diff --git a/locale/nl_NL/app.create.json b/locale/nl_NL/app.create.json index fd2bb9706a..278d754c28 100644 --- a/locale/nl_NL/app.create.json +++ b/locale/nl_NL/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "terug", "copySeed": "kopieer ze", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "U bevestigt deze zin op het volgende scherm.", "ok": "Ik heb het opgeschreven", "or": "of", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/nl_NL/app.utils.json b/locale/nl_NL/app.utils.json index 5f2b51ee57..7774c78063 100644 --- a/locale/nl_NL/app.utils.json +++ b/locale/nl_NL/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Controleer of uw wallet of exchange smart-contracts gebruikt om Bancor op te nemen. Wij accepteren zulke transacties niet en kunnen dit niet terug betalen. U raakt op deze manier uw geld kwijt.", "warningTitle": "Stort BNT niet via smart contracts! Stort geen andere ERC20-tokens! Alleen Bancor is toegestaan." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Als u minder dan {{minAmount, BigNumber}} {{assetTicker}} verstuurd raakt u dit geld kwijt.", + "warningMinAmountTitle": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}", + "warningText": "Het versturen van elke andere currency naar dit adres kan resulteren in het verlies van uw storting.", + "warningTitle": "Verstuur enkel BTC naar dit deposit adres" + }, "wavesGatewayERGO": { "helpDescrText": "Zodra de transactie is bevestigd, verwerkt de gateway de overdracht van ERGO naar een token in uw Waves-account.", "helpDescrTitle": "Voer dit adres in uw ERGO-client of portemonnee in", @@ -888,7 +894,7 @@ "cell6": "Gebruik uw Waves wallet niet terwijl u een publiek Wi-Fi netwerk of een apparaat van iemand anders gebruikt.", "nextButton": "Ik begrijp het", "p1": "De meest gebruikte manier van oplichting is phishing. Phishing houdt onder andere in dat oplichters neppe communities op Facebook of andere websites en platformen maken welke erg op de originele lijken.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Hoe u zichzelf tegen phishing kunt beschermen" } } diff --git a/locale/pl/app.create.json b/locale/pl/app.create.json index e67a9efe0a..b3302f302c 100644 --- a/locale/pl/app.create.json +++ b/locale/pl/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "wróć", "copySeed": "skopiuj", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Potwierdzisz wygenerowaną frazę na następnym ekranie", "ok": "Zapisałem to", "or": "albo", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/pl/app.utils.json b/locale/pl/app.utils.json index 0c95cd73ee..b3fcc63076 100644 --- a/locale/pl/app.utils.json +++ b/locale/pl/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Sprawdź, czy Twój portfel lub giełda wykorzystuje inteligentne kontrakty do wypłaty Bancor. Nie akceptujemy takich transakcji i nie możemy ich zwrócić. Stracisz te środki.", "warningTitle": "Proszę nie deponować BNT z inteligentnych kontraktów (smart contracts)! Proszę nie deponować innych tokenów ERC20! Tylko Bancor dozwolony." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Jeśli wyślesz mniej niż {{minAmount, BigNumber}} {{assetTicker}}, stracisz te pieniądze.", + "warningMinAmountTitle": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}} , maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}", + "warningText": "Przesłanie dowolnej innej waluty pod ten adres może spowodować utratę depozytu.", + "warningTitle": "Wyślij tylko BTC do tego adresu depozytowego" + }, "wavesGatewayERGO": { "helpDescrText": "Po potwierdzeniu transakcji bramka przetworzy transfer ERGO na token na Twoim koncie Waves.", "helpDescrTitle": "Wpisz ten adres do swojego klienta lub portfela ERGO", @@ -888,7 +894,7 @@ "cell6": "Nie wchodź na swój portfel korzystając z publicznego Wi-FI lub innego obcego urządzenia.", "nextButton": "Rozumiem", "p1": "Jedną z najczęstszych form oszustw jest phishing, czyli oszuści tworzą fałszywe społeczności na Facebooku lub innych stronach, które wyglądają podobnie do autentycznych.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Jak uchronić się przed phishingiem" } } diff --git a/locale/pt_BR/app.create.json b/locale/pt_BR/app.create.json index 90a8555b84..a711f6fcdd 100644 --- a/locale/pt_BR/app.create.json +++ b/locale/pt_BR/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "voltar", "copySeed": "copiar", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Você irá confirmar esta frase na próxima tela.", "ok": "Eu anotei isso em um local seguro", "or": "ou", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/pt_BR/app.utils.json b/locale/pt_BR/app.utils.json index 281805a43e..ccb86c2b94 100644 --- a/locale/pt_BR/app.utils.json +++ b/locale/pt_BR/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Se você enviar menos de {{minAmount, BigNumber}} {{assetTicker}}, você perderá esse dinheiro.", + "warningMinAmountTitle": "O depósito mínimo é {{minAmount, BigNumber}} {{assetTicker}}", + "warningText": "Se enviar qualquer outra moeda para este endereço, poderá resultar na perda do seu depósito.", + "warningTitle": "Envie apenas BTC para este endereço de depósito" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "Não acesse sua carteira ao usar Wi-Fi público ou o dispositivo de outras pessoas.", "nextButton": "Eu Entendi", "p1": "Uma das formas mais comuns de golpes é o phishing, que é quando os golpistas criam comunidades falsas no Facebook ou sites semelhantes aos oficiais.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Como se proteger de Phishers" } } diff --git a/locale/pt_PT/app.create.json b/locale/pt_PT/app.create.json index db2b92d1e0..7d347101da 100644 --- a/locale/pt_PT/app.create.json +++ b/locale/pt_PT/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "go back", "copySeed": "copy them", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "You will confirm this phrase on the next screen.", "ok": "I’ve written it down", "or": "or", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/pt_PT/app.utils.json b/locale/pt_PT/app.utils.json index fe4af26c68..e97420476b 100644 --- a/locale/pt_PT/app.utils.json +++ b/locale/pt_PT/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", + "warningText": "Sending any other currency to this address may result in the loss of your deposit.", + "warningTitle": "Send only BTC to this deposit address" + }, "wavesGatewayERGO": { "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ERGO to a token in your Waves account.", "helpDescrTitle": "Enter this address into your ERGO client or wallet", @@ -888,7 +894,7 @@ "cell6": "Do not access your wallet when using public Wi-Fi or someone else’s device.", "nextButton": "I Understand", "p1": "One of the most common forms of scamming is phishing, which is when scammers create fake communities on Facebook or other websites that look similar to the authentic ones.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "How To Protect Yourself from Phishers" } } diff --git a/locale/ru/app.create.json b/locale/ru/app.create.json index 2cfe30756a..e0648dd748 100644 --- a/locale/ru/app.create.json +++ b/locale/ru/app.create.json @@ -2,12 +2,12 @@ "backupSeed": { "back": " вернуться назад", "copySeed": "скопируйте их", - "description": "Будьте осторожны и никогда не вводите свой СИД на других сайтах, потому что ваша учетная запись будет скомпрометирована, и вы потеряете все свои деньги.", + "description": "Будьте осторожны и никогда не вводите свой SEED в другие клиенты, потому что ваша учетная запись будет скомпрометирована, и вы потеряете все свои деньги. Пользуйтесь только официальными клиентами Waves.", "needConfirm": "Вам нужно будет восстановить эту фразу на следующем шаге.", "ok": "Я всё записал", "or": "или", "saveSecret": "Сохранение секретной фразы", - "seedPhrase": "СИД", + "seedPhrase": "SEED", "warn": "Посколько только вы контролируете ваши деньги, вам необходимо сохранить секретную фразу или", "writeSeed": "Пожалуйста, внимательно запишите эти 15 слов", "yourSeed": "Your Seed phrase" @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Скопировать", - "saveToFile": "Сохранить в файл" + "saveToFile": "Сохранить файл" } } \ No newline at end of file diff --git a/locale/ru/app.utils.json b/locale/ru/app.utils.json index 773cf2333d..4c81f964e6 100644 --- a/locale/ru/app.utils.json +++ b/locale/ru/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Проверьте, не использует ли ваш кошелёк или биржа смарт-контракты для отправки Bancor. Мы не принимаем такие переводы и не можем возместить их. Вы потеряете эти деньги.", "warningTitle": "Не отправляйте BNT со смарт-контрактов! Не отправляйте другие ERC20-токены! Только Bancor." }, + "wavesGatewayBTC": { + "warningMinAmountText": "Если вы отправите меньше чем {{minAmount, BigNumber}} {{assetTicker}}, вы потеряете деньги.", + "warningMinAmountTitle": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}", + "warningText": "Отправка любой другой валюты на этот адрес может повлечь за собой потерю средств.", + "warningTitle": "Отправляйте только BTC на этот адрес" + }, "wavesGatewayERGO": { "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит ERGO-токен на ваш аккаунт Waves.", "helpDescrTitle": "Введите этот адрес в ваш ERGO клиент или кошелёк.", @@ -888,7 +894,7 @@ "cell6": "Не заходите в кошелёк, используя общественный Wi-Fi или с чужого устройства.", "nextButton": "Я понял", "p1": "Одним из распространённых видов мошенничества является фишинг — мошенники создают фальшивые группы в Facebook, сайты, внешне похожие на настоящие.", - "saveSeedButton": "Сохраните СИД", + "saveSeedButton": "Сохраните SEED", "title": "Как защититься от фишинга" } } diff --git a/locale/tr/app.create.json b/locale/tr/app.create.json index d5bf4c0f01..a45e6e9b90 100644 --- a/locale/tr/app.create.json +++ b/locale/tr/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "Geri git", "copySeed": "kelimeleri kopyalayın", - "description": "Please be careful and never input your SEED into other sites, because your account will be compromised and you will lose all of your funds.", + "description": "Please be careful and never input your SEED into other clients, because your account will be compromised and you will lose all of your funds. You should only use the official Waves clients.", "needConfirm": "Bu kelimeleri bir sonraki ekranda doğrulayacaksınız", "ok": "Hepsini bir kenera yazdım", "or": "veya", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "Copy to clipboard", - "saveToFile": "Save to file" + "saveToFile": "Save as file" } } \ No newline at end of file diff --git a/locale/tr/app.utils.json b/locale/tr/app.utils.json index c6038078e1..0ad3da5bf3 100644 --- a/locale/tr/app.utils.json +++ b/locale/tr/app.utils.json @@ -278,6 +278,12 @@ "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw Bancor. We do not accept such transactions and can’t refund them. You will lose that money.", "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, + "wavesGatewayBTC": { + "warningMinAmountText": "{{minAmount, BigNumber}} {{assetTicker}}'nin altında gönderim yaparsanız paranızı kaybedersiniz.", + "warningMinAmountTitle": "Minimum yatırma tutarı {{minAmount, BigNumber}} {{assetTicker}}'dir", + "warningText": "Bu adrese başka bir kripto para gönderilmesi kayıplara yol açabilir.", + "warningTitle": "Bu adrese sadece BTC gönderin" + }, "wavesGatewayERGO": { "helpDescrText": "İşlemler onaylandıktan sonra ERGO geçidi tarafından Waves adresinize transfer gerçekleştirilecektir.", "helpDescrTitle": "Bu adresi ERGO cüzdanınıza girin", @@ -888,7 +894,7 @@ "cell6": "Başka birisinin cihazından veya halka açık alanlardaki Wİ-Fİ hizmetlerinden cüzdanınıza erişim sağlamayın.", "nextButton": "Anladım", "p1": "En sık karşılaşılan dolandırıcılık yöntemi Waves Platform'a benzeyen sahte web siteleri, Facebook sayfaları olarak karşımıza çıkmaktadır.", - "saveSeedButton": "Save your SEED phrase", + "saveSeedButton": "Save the SEED phrase", "title": "Kendinizi nasıl koruyacaksınız?" } } diff --git a/locale/zh_CN/app.create.json b/locale/zh_CN/app.create.json index 3cab9c5ac9..e8c166a92f 100644 --- a/locale/zh_CN/app.create.json +++ b/locale/zh_CN/app.create.json @@ -2,7 +2,7 @@ "backupSeed": { "back": "返回", "copySeed": "复制", - "description": "请小心,切勿将SEED输入其他站点,因为您的帐户将被盗用,并且您将损失所有资金。", + "description": "请小心,切勿将SEED输入其他客户,因为您的帐户将被盗用,并且您将损失所有资金。您只应使用Waves的官方客户端。", "needConfirm": "您需要在下一个页面确认备份短语(助记词)", "ok": "我已经写下短语", "or": "或", @@ -80,6 +80,6 @@ }, "seed": { "copyToClipboard": "复制到剪贴板", - "saveToFile": "保存到文件" + "saveToFile": "另存为文件" } } \ No newline at end of file diff --git a/locale/zh_CN/app.utils.json b/locale/zh_CN/app.utils.json index 9fcb1bf7f0..4fdf0cbff9 100644 --- a/locale/zh_CN/app.utils.json +++ b/locale/zh_CN/app.utils.json @@ -278,6 +278,12 @@ "warningText": "检查您的钱包或交易所是否使用智能合约撤回Bancor。我们不接受此类交易,也不能退款。你会失去那笔钱。", "warningTitle": "请不要从智能合约中存入BNT!不要存入其他ERC20代币!只允许Bancor。" }, + "wavesGatewayBTC": { + "warningMinAmountText": "如果您发送的费用低于{{minAmount, BigNumber}} {{assetTicker}},您将失去这笔钱。", + "warningMinAmountTitle": "最低存款金额为{{minAmount,BigNumber}} {{assetTicker}} ,最高存款金额为{{maxAmount}} {{assetTicker}}", + "warningText": "如通过该地址发送任何其他代币,您的代币将失去。", + "warningTitle": "通过该存款地址只能发送BTC" + }, "wavesGatewayERGO": { "helpDescrText": "确认交易后,网关将处理将ERGO转移到Waves帐户中的代币。", "helpDescrTitle": "在ERGO客户端或钱包中输入此地址", @@ -888,7 +894,7 @@ "cell6": "使用公共Wi-Fi或其他人的设备时请勿访问您的钱包。", "nextButton": "我了解", "p1": "诈骗最常见的攻击方式之一是网络钓鱼,一般钓鱼者在Facebook或其他类似于真实的网站上创建假社群。", - "saveSeedButton": "保存您的SEED短语", + "saveSeedButton": "保存SEED短语", "title": "如何防止网络钓鱼攻击" } } diff --git a/src/modules/utils/services/gateways/CoinomatService.js b/src/modules/utils/services/gateways/CoinomatService.js index 994ed98c7b..30c850b49f 100644 --- a/src/modules/utils/services/gateways/CoinomatService.js +++ b/src/modules/utils/services/gateways/CoinomatService.js @@ -91,7 +91,7 @@ getSupportMap(asset) { if (GATEWAYS[asset.id]) { return { - deposit: true, + deposit: asset.id !== WavesApp.defaultAssets.BTC, withdraw: true, errorAddressMessage: true }; diff --git a/src/modules/utils/services/gateways/WavesGatewayService.js b/src/modules/utils/services/gateways/WavesGatewayService.js index b57bd07a6d..cfdf22d2d4 100644 --- a/src/modules/utils/services/gateways/WavesGatewayService.js +++ b/src/modules/utils/services/gateways/WavesGatewayService.js @@ -5,7 +5,8 @@ [WavesApp.defaultAssets.VST]: { waves: 'WVST', gateway: 'VST' }, [WavesApp.defaultAssets.ERGO]: { waves: 'WERGO', gateway: 'ERGO' }, [WavesApp.defaultAssets.BNT]: { waves: 'WBNT', gateway: 'BNT' }, - [WavesApp.defaultAssets.ETH]: { waves: 'ETH', gateway: 'ETH' } + [WavesApp.defaultAssets.ETH]: { waves: 'ETH', gateway: 'ETH' }, + [WavesApp.defaultAssets.BTC]: { waves: 'WBTC', gateway: 'BTC' } }; const PATH = `${WavesApp.network.wavesGateway}/api/v1`; @@ -30,7 +31,7 @@ if (GATEWAYS[asset.id]) { return { deposit: true, - withdraw: true, + withdraw: asset.id !== WavesApp.defaultAssets.BTC, errorAddressMessage: true, wrongAddressMessage: true }; From 7ab8b561f7ed88362f7a1d595746c234872d378c Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Thu, 24 Oct 2019 15:44:42 +0300 Subject: [PATCH 23/41] DEXW-2249: added platform and electronVersion in wavesapp --- src/index.hbs | 2 ++ ts-scripts/utils.ts | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/index.hbs b/src/index.hbs index 021ec0e62b..10d4e7570c 100644 --- a/src/index.hbs +++ b/src/index.hbs @@ -319,6 +319,8 @@ */ var WavesApp = { name: 'Waves DEX', + platform: config.platform(), + electronVersion: config.electronVersion, version: config.pack.version, type: !config.isWeb() ? 'desktop' : 'web', matcherPriorityList: config.network.matcherPriorityList, diff --git a/ts-scripts/utils.ts b/ts-scripts/utils.ts index 9015e92f15..e163189ff7 100644 --- a/ts-scripts/utils.ts +++ b/ts-scripts/utils.ts @@ -476,6 +476,26 @@ export async function getInitScript( } }; + + config.platform = function() { + const userAgent = navigator.userAgent; + const platform = navigator.platform; + const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']; + const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']; + const iosPlatforms = ['iPhone', 'iPad', 'iPod']; + + switch (true) { + case (macosPlatforms.indexOf(platform) !== -1): return 'mac'; + case (iosPlatforms.indexOf(platform) !== -1): return 'ios'; + case (windowsPlatforms.indexOf(platform) !== -1): return 'win'; + case (/Android/.test(userAgent)): return 'android'; + case (/Linux/.test(platform)): return 'linux'; + default: return 'linux'; + } + }; + + config.electronVersion = config.isDesktop() ? navigator.userAgent.replace(/.*?waves-(client|dex)\/(\d+\.\d+\.\d+).*/g, '$2') : ''; + config.remappedAssetNames = {}; config.remappedAssetNames[config.network.assets.EUR] = 'Euro'; config.remappedAssetNames[config.network.assets.USD] = 'US Dollar'; From 009fca88c09065ae0ae40c2ee0abea18a879b666 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Thu, 24 Oct 2019 18:50:14 +0300 Subject: [PATCH 24/41] DEXW-2219: fix double notification --- src/modules/utils/services/whatsNew.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/utils/services/whatsNew.js b/src/modules/utils/services/whatsNew.js index e40e4e3b7d..2d8e3aec02 100644 --- a/src/modules/utils/services/whatsNew.js +++ b/src/modules/utils/services/whatsNew.js @@ -82,6 +82,8 @@ } function handleLogin() { + notification.destroyAll(); + const notShownUpdates = user.getSetting('whatsNewList') .filter(version => { if (migration.gt(version, WavesApp.version)) { From c56a3fab0a58b51c0625d5f71ba987a009bbb4e5 Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Fri, 25 Oct 2019 11:48:09 +0300 Subject: [PATCH 25/41] DEXW-2255: update jQuery to 3.4.1 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b471d1b5a..0352cc3cc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "waves-client", - "version": "1.4.5", + "version": "1.4.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -10492,9 +10492,9 @@ "dev": true }, "jquery": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.0.tgz", - "integrity": "sha512-ggRCXln9zEqv6OqAGXFEcshF5dSBvCkzj6Gm2gzuR5fWawaX8t7cxKVkkygKODrDAzKdoYw3l/e3pm3vlT4IbQ==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" }, "js-cookie": { "version": "2.2.0", diff --git a/package.json b/package.json index eb6c5db4e9..4cc459bf72 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "i18next": "9.1.0", "i18next-locize-backend": "1.2.1", "identity-img": "1.0.0", - "jquery": "^3.4.0", + "jquery": "^3.4.1", "js-cookie": "2.2.0", "mobile-detect": "^1.4.1", "mousetrap": "1.6.1", From 03b588c723ce5aa2f799eed13a1596e55200780a Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Fri, 25 Oct 2019 12:29:20 +0300 Subject: [PATCH 26/41] DEXW-2151: set default network settings --- src/modules/utils/modals/settings/SettingsCtrl.js | 4 ++++ src/modules/utils/modals/settings/settings.html | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/utils/modals/settings/SettingsCtrl.js b/src/modules/utils/modals/settings/SettingsCtrl.js index a538543728..67a577eebc 100644 --- a/src/modules/utils/modals/settings/SettingsCtrl.js +++ b/src/modules/utils/modals/settings/SettingsCtrl.js @@ -285,6 +285,10 @@ modalManager.showDeleteAccountModal(); } + onBlurSetting(prop) { + this[prop] = this[prop] ? this[prop] : undefined; + } + } return new SettingsCtrl(); diff --git a/src/modules/utils/modals/settings/settings.html b/src/modules/utils/modals/settings/settings.html index 99984f3c5d..137ad9c162 100644 --- a/src/modules/utils/modals/settings/settings.html +++ b/src/modules/utils/modals/settings/settings.html @@ -209,7 +209,7 @@
- +
@@ -219,7 +219,7 @@
- +
@@ -288,7 +288,7 @@
- +
From 9065b74b1b2f66570815e1d4d9fedc3a4faaaef4 Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Fri, 25 Oct 2019 13:46:45 +0300 Subject: [PATCH 27/41] DEXW-2260: hide-error-in-onSubmit-catch --- src/modules/signIn/controllers/SignInCtrl.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/signIn/controllers/SignInCtrl.js b/src/modules/signIn/controllers/SignInCtrl.js index 8d3c82cb8f..3156db33dd 100644 --- a/src/modules/signIn/controllers/SignInCtrl.js +++ b/src/modules/signIn/controllers/SignInCtrl.js @@ -88,6 +88,8 @@ } else { $state.go('create'); } + }).catch(() => { + return null; }); } From 08fcfaf939f86f545e14a4c9277fe9f72cad90c0 Mon Sep 17 00:00:00 2001 From: Vusal Gakhramanov Date: Fri, 25 Oct 2019 16:02:01 +0300 Subject: [PATCH 28/41] DEXW-2232: add terms checkbox --- src/modules/app/services/User.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/app/services/User.js b/src/modules/app/services/User.js index 9cf5e92206..9f05835d51 100644 --- a/src/modules/app/services/User.js +++ b/src/modules/app/services/User.js @@ -565,7 +565,8 @@ storage.save('multiAccountData', ''), storage.save('multiAccountHash', ''), storage.save('multiAccountUsers', ''), - storage.save('userList', '') + storage.save('userList', ''), + storage.save('termsAccepted', false) ]); } From 58da0a8e82341adadd1e7de1809a546b00a95f87 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Fri, 25 Oct 2019 17:56:49 +0300 Subject: [PATCH 29/41] DEXW-1823: add step round in orderbook --- data-service/api/API.ts | 3 +- .../api/matcher/getPairRestrictions.ts | 9 +++ .../app/services/waves/matcher/Matcher.js | 9 +++ .../dex/directives/orderBook/OrderBook.js | 72 ++++++++++++++++--- .../dex/directives/orderBook/OrderList.js | 5 +- .../dex/directives/orderBook/OrderListItem.js | 32 +++++++-- 6 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 data-service/api/matcher/getPairRestrictions.ts diff --git a/data-service/api/API.ts b/data-service/api/API.ts index 2dff63ca89..e69182492b 100644 --- a/data-service/api/API.ts +++ b/data-service/api/API.ts @@ -17,6 +17,7 @@ import { import * as matchersApi from './matchers/matchers' import * as addressModule from './address'; import { getLastPrice } from './matcher/getLastPrice'; +import { getPairRestrictions } from './matcher/getPairRestrictions'; import { getAddressByAlias, getAliasesByAddress, getAliasesByIdList } from './aliases/aliases'; import { getFeeRates, getSettings } from './matcher/getSettings'; import * as pairsModule from './pairs/pairs'; @@ -30,7 +31,7 @@ export const node = { height }; export const matcher = { getOrderBook, getOrdersByPair, addSignature, clearSignature, getOrders, signatureTimeout, factory, getLastPrice, - getFeeRates, getSettings + getFeeRates, getSettings, getPairRestrictions }; export const matchers = matchersApi; diff --git a/data-service/api/matcher/getPairRestrictions.ts b/data-service/api/matcher/getPairRestrictions.ts new file mode 100644 index 0000000000..04e57c9b87 --- /dev/null +++ b/data-service/api/matcher/getPairRestrictions.ts @@ -0,0 +1,9 @@ +import { AssetPair } from '@waves/data-entities'; +import { request } from '../../utils/request'; +import { get } from '../../config'; + +export function getPairRestrictions(pair: AssetPair) { + return request({ + url: `${get('matcher')}/orderbook/${pair.amountAsset.id}/${pair.priceAsset.id}/info` + }); +} diff --git a/src/modules/app/services/waves/matcher/Matcher.js b/src/modules/app/services/waves/matcher/Matcher.js index 6a156c4aa8..d92446c092 100644 --- a/src/modules/app/services/waves/matcher/Matcher.js +++ b/src/modules/app/services/waves/matcher/Matcher.js @@ -113,6 +113,15 @@ return ds.api.matcher.getLastPrice(pair); } + /** + * @param {AssetPair} pair + * @return {Promise} + */ + @decorators.cachable(0.5) + getPairRestrictions(pair) { + return ds.api.matcher.getPairRestrictions(pair); + } + /** * @param {string} address * @return {Promise>} diff --git a/src/modules/dex/directives/orderBook/OrderBook.js b/src/modules/dex/directives/orderBook/OrderBook.js index 435dd0fcc5..c20ebe3c84 100644 --- a/src/modules/dex/directives/orderBook/OrderBook.js +++ b/src/modules/dex/directives/orderBook/OrderBook.js @@ -106,6 +106,10 @@ * @public */ this.isScrolled = false; + /** + * @type {TPairRestrictions | null} + */ + this.pairRestrictions = null; this.receive(dexDataService.showSpread, () => { this._dom.$box.stop().animate({ scrollTop: this._getSpreadScrollPosition() }, 300); @@ -192,6 +196,11 @@ this.priceAsset = priceAsset; this.amountAsset = amountAsset; this.pair = new AssetPair(amountAsset, priceAsset); + return this.pair; + }) + .then(ds.api.matcher.getPairRestrictions) + .then((data) => { + this.pairRestrictions = data; }); } @@ -225,7 +234,7 @@ ]) .then(([orderbook, orders, lastPrice]) => { this.loadingError = false; - return this._remapOrderBook(orderbook, orders, lastPrice); + return this._remapOrderBook(orderbook, orders, lastPrice, this.pairRestrictions.restrictions); }) .catch(() => { this.loadingError = true; @@ -280,8 +289,8 @@ }, Object.create(null)); const lastTrade = lastPrice; - const bids = OrderBook._sumAllOrders(dataBids, 'sell'); - const asks = OrderBook._sumAllOrders(dataAsks, 'buy').reverse(); + const bids = OrderBook._sumAllOrders(dataBids, 'sell', this.pairRestrictions.restrictions); + const asks = OrderBook._sumAllOrders(dataAsks, 'buy', this.pairRestrictions.restrictions).reverse(); const maxAmount = OrderBook._getMaxAmount(bids, asks, crop); @@ -333,8 +342,17 @@ }; const length = OrderList.ROWS_COUNT; - this._asks.render(toLength(data.asks, length), data.crop, data.priceHash, data.maxAmount, pair); - this._bids.render(data.bids, data.crop, data.priceHash, data.maxAmount, pair); + const stepPrecision = this.pairRestrictions && this.pairRestrictions.restrictions ? + { + amount: (new BigNumber(this.pairRestrictions.restrictions.stepAmount)).getDecimalsCount(), + price: (new BigNumber(this.pairRestrictions.restrictions.stepPrice)).getDecimalsCount() + } : + null; + + this._asks.render( + toLength(data.asks, length), data.crop, data.priceHash, data.maxAmount, pair, stepPrecision + ); + this._bids.render(data.bids, data.crop, data.priceHash, data.maxAmount, pair, stepPrecision); if (this._showSpread) { this._showSpread = false; @@ -356,20 +374,27 @@ /** * @param {Array} list * @param {'buy'|'sell'} type + * @param {TRestrictions | null} restrictions * @return Array * @private */ - static _sumAllOrders(list, type) { + static _sumAllOrders(list, type, restrictions) { let total = new BigNumber(0); let amountTotal = new BigNumber(0); return list.map((item) => { total = total.add(item.total); amountTotal = amountTotal.add(item.amount); + const amount = this._roundToStep( + item.amount, restrictions && restrictions.stepAmount ? restrictions.stepAmount : undefined + ); + const price = this._roundToStep( + item.price, restrictions && restrictions.stepPrice ? restrictions.stepPrice : undefined + ); return { type, - amount: new BigNumber(item.amount), - price: new BigNumber(item.price), + amount, + price, total, totalAmount: amountTotal }; @@ -407,6 +432,20 @@ return list.filter((o) => o.price.gte(crop.min) && o.price.lte(crop.max)); } + /** + * @param {string | number} value + * @param {string | number} step? + * @private + */ + static _roundToStep(value, step) { + if (!step) { + return new BigNumber(value); + } + return new BigNumber(value).roundTo( + (new BigNumber(step).getDecimalsCount()) + ); + } + } return new OrderBook(); @@ -463,3 +502,20 @@ * @property {{price: Money, lastSide: string}} lastTrade * @property {BigNumber} spread */ + +/** + * @typedef {object} TPairRestrictions + * @property {TRestrictions | null} restrictions + * @property {tickSize: string} matchingRules + */ + +/** + * @typedef {object} TRestrictions + * @property {string} maxAmount + * @property {string} maxPrice + * @property {string} stepPrice + * @property {string} stepAmount + * @property {string} minPrice + * @property {string} minAmount + */ + diff --git a/src/modules/dex/directives/orderBook/OrderList.js b/src/modules/dex/directives/orderBook/OrderList.js index d234cbb5b8..ff0469913c 100644 --- a/src/modules/dex/directives/orderBook/OrderList.js +++ b/src/modules/dex/directives/orderBook/OrderList.js @@ -54,14 +54,15 @@ * @param {OrderBook.ICrop} crop * @param {Record} priceHash * @param {BigNumber} maxAmount + * @param {TStepPrecision | null} stepPrecision * @param {AssetPair} pair */ - render(data, crop, priceHash, maxAmount, pair) { + render(data, crop, priceHash, maxAmount, pair, stepPrecision) { const widthList = []; this._rows.forEach((row, index) => { const item = data[index]; - row.render(item, crop, priceHash, pair); + row.render(item, crop, priceHash, pair, stepPrecision); widthList[index] = item && item.amount.div(maxAmount).mul(100).toFixed(2); }); diff --git a/src/modules/dex/directives/orderBook/OrderListItem.js b/src/modules/dex/directives/orderBook/OrderListItem.js index 0b627833be..f031ce603b 100644 --- a/src/modules/dex/directives/orderBook/OrderListItem.js +++ b/src/modules/dex/directives/orderBook/OrderListItem.js @@ -82,16 +82,17 @@ * @param {OrderBook.IOrder} data * @param {OrderBook.ICrop} crop * @param {Record} priceHash + * @param {TStepPrecision | null} stepPrecision * @param {AssetPair} pair */ - render(data, crop, priceHash, pair) { + render(data, crop, priceHash, pair, stepPrecision) { if (OrderListItem._isEqual(this._data, data)) { return null; } this._pair = pair; this._data = data; - this._draw(crop, priceHash, pair); + this._draw(crop, priceHash, pair, stepPrecision); } /** @@ -105,14 +106,25 @@ * @param {OrderBook.ICrop} [crop] * @param {Record} [priceHash] * @param {AssetPair} [pair] + * @param {TStepPrecision | null} [stepPrecision] * @private */ - _draw(crop, priceHash, pair) { + _draw(crop, priceHash, pair, stepPrecision) { if (this._data) { - this._amountNode.innerHTML = - utils.getNiceNumberTemplate(this._data.amount, pair.amountAsset.precision, true); - this._priceNode.innerHTML = - utils.getNiceNumberTemplate(this._data.price, pair.priceAsset.precision, 100000); + const amountPrecision = stepPrecision && stepPrecision.amount ? + Math.min(pair.amountAsset.precision, stepPrecision.amount) : + pair.amountAsset.precision; + + const pricePrecision = stepPrecision && stepPrecision.price ? + Math.min(pair.priceAsset.precision, stepPrecision.price) : + pair.priceAsset.precision; + + this._amountNode.innerHTML = utils.getNiceNumberTemplate( + this._data.amount, amountPrecision, true + ); + this._priceNode.innerHTML = utils.getNiceNumberTemplate( + this._data.price, pricePrecision, 100000 + ); this._totalNode.innerHTML = utils.getNiceNumberTemplate(this._data.total, pair.priceAsset.precision, true); @@ -255,3 +267,9 @@ /** * @name OrderListItem */ + +/** + * @typedef {object} TStepPrecision + * @property {number} price + * @property {number} amount + */ From 7238d37b7b43a947a3047f4e992eefed8390b1e0 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 28 Oct 2019 10:52:58 +0300 Subject: [PATCH 30/41] DEXW-1823: save stepPrice round --- .../dex/directives/orderBook/OrderBook.js | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/src/modules/dex/directives/orderBook/OrderBook.js b/src/modules/dex/directives/orderBook/OrderBook.js index c20ebe3c84..76b6e135ea 100644 --- a/src/modules/dex/directives/orderBook/OrderBook.js +++ b/src/modules/dex/directives/orderBook/OrderBook.js @@ -200,7 +200,21 @@ }) .then(ds.api.matcher.getPairRestrictions) .then((data) => { - this.pairRestrictions = data; + if (data.restrictions && data.matchingRules) { + const stepPrice = +data.matchingRules.tickSize > +data.restrictions.stepPrice ? + data.matchingRules.tickSize : + data.restrictions.stepPrice; + this.pairRestrictions = { + ...data.restrictions, + stepPrice + }; + } else if (data.matchingRules) { + this.pairRestrictions = { + stepPrice: data.matchingRules.tickSize + }; + } else { + this.pairRestrictions = null; + } }); } @@ -234,7 +248,7 @@ ]) .then(([orderbook, orders, lastPrice]) => { this.loadingError = false; - return this._remapOrderBook(orderbook, orders, lastPrice, this.pairRestrictions.restrictions); + return this._remapOrderBook(orderbook, orders, lastPrice); }) .catch(() => { this.loadingError = true; @@ -289,8 +303,8 @@ }, Object.create(null)); const lastTrade = lastPrice; - const bids = OrderBook._sumAllOrders(dataBids, 'sell', this.pairRestrictions.restrictions); - const asks = OrderBook._sumAllOrders(dataAsks, 'buy', this.pairRestrictions.restrictions).reverse(); + const bids = OrderBook._sumAllOrders(dataBids, 'sell', this.pairRestrictions); + const asks = OrderBook._sumAllOrders(dataAsks, 'buy', this.pairRestrictions).reverse(); const maxAmount = OrderBook._getMaxAmount(bids, asks, crop); @@ -342,10 +356,10 @@ }; const length = OrderList.ROWS_COUNT; - const stepPrecision = this.pairRestrictions && this.pairRestrictions.restrictions ? + const stepPrecision = this.pairRestrictions ? { - amount: (new BigNumber(this.pairRestrictions.restrictions.stepAmount)).getDecimalsCount(), - price: (new BigNumber(this.pairRestrictions.restrictions.stepPrice)).getDecimalsCount() + amount: (new BigNumber(this.pairRestrictions.stepAmount)).getDecimalsCount(), + price: (new BigNumber(this.pairRestrictions.stepPrice)).getDecimalsCount() } : null; @@ -374,7 +388,7 @@ /** * @param {Array} list * @param {'buy'|'sell'} type - * @param {TRestrictions | null} restrictions + * @param {TPairRestrictions | null} restrictions * @return Array * @private */ @@ -505,17 +519,11 @@ /** * @typedef {object} TPairRestrictions - * @property {TRestrictions | null} restrictions - * @property {tickSize: string} matchingRules - */ - -/** - * @typedef {object} TRestrictions - * @property {string} maxAmount - * @property {string} maxPrice + * @property {string} maxAmount? + * @property {string} maxPrice? * @property {string} stepPrice - * @property {string} stepAmount - * @property {string} minPrice - * @property {string} minAmount + * @property {string} stepAmount? + * @property {string} minPrice? + * @property {string} minAmount? */ From 20b4b5a44c4a8901ee380e084f1121cb1ecf8eea Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 28 Oct 2019 11:40:46 +0300 Subject: [PATCH 31/41] DEXW-1823: add matcherSettings in service --- .../app/services/waves/matcher/Matcher.js | 29 ++++++++- src/modules/dex/controllers/DexCtrl.js | 8 ++- .../dex/directives/orderBook/OrderBook.js | 64 +++++++++---------- 3 files changed, 65 insertions(+), 36 deletions(-) diff --git a/src/modules/app/services/waves/matcher/Matcher.js b/src/modules/app/services/waves/matcher/Matcher.js index d92446c092..df95b00b3e 100644 --- a/src/modules/app/services/waves/matcher/Matcher.js +++ b/src/modules/app/services/waves/matcher/Matcher.js @@ -28,6 +28,11 @@ */ currentMatcherAddress = ''; + /** + * @type {TPairRestrictions | null} + */ + pairRestrictions = null; + constructor() { this._orderBookCacheHash = Object.create(null); @@ -115,11 +120,15 @@ /** * @param {AssetPair} pair - * @return {Promise} + * @return {Promise} */ @decorators.cachable(0.5) getPairRestrictions(pair) { - return ds.api.matcher.getPairRestrictions(pair); + return ds.api.matcher.getPairRestrictions(pair) + .then((restrictions) => { + this.pairRestrictions = restrictions; + return restrictions; + }); } /** @@ -465,3 +474,19 @@ * @typedef {object} Matcher#IFeeMap * @property {number} */ + +/** + * @typedef {object} TPairRestrictions + * @param {TRestrictions} restrictions + * @param {{tickSize: string}} matchingRules + */ + +/** + * @typedef {object} TRestrictions + * @property {string} maxAmount + * @property {string} maxPrice + * @property {string} stepPrice + * @property {string} stepAmount + * @property {string} minPrice + * @property {string} minAmount + */ diff --git a/src/modules/dex/controllers/DexCtrl.js b/src/modules/dex/controllers/DexCtrl.js index 82ad6288cf..e2f56207a9 100644 --- a/src/modules/dex/controllers/DexCtrl.js +++ b/src/modules/dex/controllers/DexCtrl.js @@ -14,6 +14,7 @@ * @param {Waves} waves * @param {utils} utils * @param {ModalManager} modalManager + * @param {Matcher} matcher * @return {DexCtrl} */ const controller = function ( @@ -26,7 +27,8 @@ createPoll, waves, utils, - modalManager) { + modalManager, + matcher) { const analytics = require('@waves/event-sender'); @@ -122,6 +124,7 @@ return this._showModalAndRedirect(userAssetIdPair.amount, userAssetIdPair.price); } const pair = await this._getPair(); + matcher.getPairRestrictions(pair); $location.search('assetId2', pair.amountAsset.id); $location.search('assetId1', pair.priceAsset.id); } @@ -278,7 +281,8 @@ 'createPoll', 'waves', 'utils', - 'modalManager' + 'modalManager', + 'matcher' ]; angular.module('app.dex') diff --git a/src/modules/dex/directives/orderBook/OrderBook.js b/src/modules/dex/directives/orderBook/OrderBook.js index 76b6e135ea..9fb8ef387d 100644 --- a/src/modules/dex/directives/orderBook/OrderBook.js +++ b/src/modules/dex/directives/orderBook/OrderBook.js @@ -13,6 +13,7 @@ * @param {app.i18n} i18n * @param {typeof OrderList} OrderList * @param {Transactions} transactions + * @param {Matcher} matcher * @return {OrderBook} */ const controller = function (Base, @@ -24,7 +25,8 @@ $scope, i18n, OrderList, - transactions) { + transactions, + matcher) { const SECTIONS = { ASKS: '.table__asks', @@ -107,7 +109,7 @@ */ this.isScrolled = false; /** - * @type {TPairRestrictions | null} + * @type {TRestrictions | null} */ this.pairRestrictions = null; @@ -124,6 +126,8 @@ this._onChangeVisibleElements(); this._updateAssetData(); + + this.receive(utils.observe(matcher, 'pairRestrictions'), this._onChangeMatcherPairRestrictions, this); } $postLink() { @@ -197,24 +201,6 @@ this.amountAsset = amountAsset; this.pair = new AssetPair(amountAsset, priceAsset); return this.pair; - }) - .then(ds.api.matcher.getPairRestrictions) - .then((data) => { - if (data.restrictions && data.matchingRules) { - const stepPrice = +data.matchingRules.tickSize > +data.restrictions.stepPrice ? - data.matchingRules.tickSize : - data.restrictions.stepPrice; - this.pairRestrictions = { - ...data.restrictions, - stepPrice - }; - } else if (data.matchingRules) { - this.pairRestrictions = { - stepPrice: data.matchingRules.tickSize - }; - } else { - this.pairRestrictions = null; - } }); } @@ -385,10 +371,33 @@ return info.offsetTop - box.offsetTop - box.clientHeight / 2 + info.clientHeight / 2; } + /** + * @private + */ + _onChangeMatcherPairRestrictions() { + const restrictions = matcher.pairRestrictions && matcher.pairRestrictions.restrictions; + const matchingRules = matcher.pairRestrictions && matcher.pairRestrictions.matchingRules; + if (restrictions && matchingRules) { + const stepPrice = +matchingRules.tickSize > +restrictions.stepPrice ? + matchingRules.tickSize : + restrictions.stepPrice; + this.pairRestrictions = { + ...restrictions, + stepPrice + }; + } else if (matchingRules) { + this.pairRestrictions = { + stepPrice: matchingRules.tickSize + }; + } else { + this.pairRestrictions = null; + } + } + /** * @param {Array} list * @param {'buy'|'sell'} type - * @param {TPairRestrictions | null} restrictions + * @param {TRestrictions | null} restrictions * @return Array * @private */ @@ -475,7 +484,8 @@ '$scope', 'i18n', 'OrderList', - 'transactions' + 'transactions', + 'matcher' ]; angular.module('app.dex').component('wDexOrderBook', { @@ -517,13 +527,3 @@ * @property {BigNumber} spread */ -/** - * @typedef {object} TPairRestrictions - * @property {string} maxAmount? - * @property {string} maxPrice? - * @property {string} stepPrice - * @property {string} stepAmount? - * @property {string} minPrice? - * @property {string} minAmount? - */ - From e4bcf663c27c5a8f854ffa9b64ffb5050ccd9d2e Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Mon, 28 Oct 2019 12:04:02 +0300 Subject: [PATCH 32/41] DEXW-2114: exclude all gateways from vote possibility --- .../ui/directives/assetInfoHead/AssetInfoHead.js | 13 +++++++------ .../directives/assetInfoHead/asset-info-head.html | 2 +- .../wallet/modules/assets/directives/asset/Asset.js | 6 ++++-- .../directives/portfolioRow/PortfolioRow.js | 6 ++++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js b/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js index ec72d02d67..b8ef948c03 100644 --- a/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js +++ b/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js @@ -27,6 +27,11 @@ */ tokenratingLink; + /** + * @type {number | null} + */ + rating = null; + $postLink() { this._getAssetInfo(); this._setLink(); @@ -43,11 +48,7 @@ this.ticker = asset.ticker; const { hasLabel, isGateway } = utils.getDataFromOracles(asset.id); this.hasLabel = hasLabel; - this.isGatewayOrWaves = this.assetId === WavesApp.defaultAssets.WAVES || - isGateway && - this.assetId !== WavesApp.defaultAssets.VST && - this.assetId !== WavesApp.defaultAssets.ERGO && - this.assetId !== WavesApp.defaultAssets.BNT; + this.isGatewayOrWaves = isGateway; $scope.$apply(); }); @@ -71,7 +72,7 @@ this.ratingError = true; return null; } - if (!assetList[0]) { + if (assetList.length === 0) { return null; } diff --git a/src/modules/ui/directives/assetInfoHead/asset-info-head.html b/src/modules/ui/directives/assetInfoHead/asset-info-head.html index 1caf26a818..d0de7cdfaa 100644 --- a/src/modules/ui/directives/assetInfoHead/asset-info-head.html +++ b/src/modules/ui/directives/assetInfoHead/asset-info-head.html @@ -11,7 +11,7 @@ -
+
diff --git a/src/modules/wallet/modules/assets/directives/asset/Asset.js b/src/modules/wallet/modules/assets/directives/asset/Asset.js index 9c69425a63..c203fb941a 100644 --- a/src/modules/wallet/modules/assets/directives/asset/Asset.js +++ b/src/modules/wallet/modules/assets/directives/asset/Asset.js @@ -25,7 +25,9 @@ this.isVerified = isVerified; this.isGateway = isGateway; this.isTokenomica = isTokenomica; - createPoll(this, this._getTokenRating, this._setTokenRating, 60 * 1000); + if (!this.isGateway) { + createPoll(this, this._getTokenRating, this._setTokenRating, 60 * 1000); + } } isUnpinned() { @@ -39,7 +41,7 @@ } _setTokenRating(assetList) { - if (!assetList || !assetList[0]) { + if (!assetList || assetList.length === 0) { return null; } diff --git a/src/modules/wallet/modules/portfolio/directives/portfolioRow/PortfolioRow.js b/src/modules/wallet/modules/portfolio/directives/portfolioRow/PortfolioRow.js index cb8a754afa..f6b3563089 100644 --- a/src/modules/wallet/modules/portfolio/directives/portfolioRow/PortfolioRow.js +++ b/src/modules/wallet/modules/portfolio/directives/portfolioRow/PortfolioRow.js @@ -190,7 +190,7 @@ } = utils.getDataFromOracles(this.balance.asset.id); this.isVST = this.balance.asset.id === WavesApp.defaultAssets.VST; - + this.isGateway = isGateway; this.isVerifiedOrGateway = isVerified || isGateway; const html = template({ @@ -361,7 +361,9 @@ ); }).catch(() => null); - if (typeof balance.rating === 'number') { + const hasRate = balance.rating !== null; + + if (hasRate && !this.isGateway && balance.asset.id !== WavesApp.defaultAssets.WAVES) { new RatingStarsFactory({ $container: this.$node.find(`.${SELECTORS.STARS_CONTAINER}`), rating: balance.rating, From c2c59d8099e0d3bf786b0294dbc8fe2bc7a9820a Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 28 Oct 2019 12:22:37 +0300 Subject: [PATCH 33/41] DEXW-1823: refactor --- src/modules/dex/directives/orderBook/OrderBook.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/dex/directives/orderBook/OrderBook.js b/src/modules/dex/directives/orderBook/OrderBook.js index 9fb8ef387d..65000c6e4b 100644 --- a/src/modules/dex/directives/orderBook/OrderBook.js +++ b/src/modules/dex/directives/orderBook/OrderBook.js @@ -378,7 +378,7 @@ const restrictions = matcher.pairRestrictions && matcher.pairRestrictions.restrictions; const matchingRules = matcher.pairRestrictions && matcher.pairRestrictions.matchingRules; if (restrictions && matchingRules) { - const stepPrice = +matchingRules.tickSize > +restrictions.stepPrice ? + const stepPrice = (new BigNumber(matchingRules.tickSize)).gt(restrictions.stepPrice) ? matchingRules.tickSize : restrictions.stepPrice; this.pairRestrictions = { From 80328bbb5be84a33be74608233bf0fc23f037e15 Mon Sep 17 00:00:00 2001 From: Max Axenov Date: Mon, 28 Oct 2019 12:38:48 +0300 Subject: [PATCH 34/41] DEXW-2114: fix: assetInfo rating --- src/modules/ui/directives/assetInfoHead/AssetInfoHead.js | 2 +- src/modules/ui/directives/assetInfoHead/asset-info-head.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js b/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js index b8ef948c03..64fc78c9c6 100644 --- a/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js +++ b/src/modules/ui/directives/assetInfoHead/AssetInfoHead.js @@ -48,7 +48,7 @@ this.ticker = asset.ticker; const { hasLabel, isGateway } = utils.getDataFromOracles(asset.id); this.hasLabel = hasLabel; - this.isGatewayOrWaves = isGateway; + this.isGatewayOrWaves = this.assetId === WavesApp.defaultAssets.WAVES || isGateway; $scope.$apply(); }); diff --git a/src/modules/ui/directives/assetInfoHead/asset-info-head.html b/src/modules/ui/directives/assetInfoHead/asset-info-head.html index d0de7cdfaa..1caf26a818 100644 --- a/src/modules/ui/directives/assetInfoHead/asset-info-head.html +++ b/src/modules/ui/directives/assetInfoHead/asset-info-head.html @@ -11,7 +11,7 @@
-
+
From bc28f08c046542d7c676253fffe93225aeea83be Mon Sep 17 00:00:00 2001 From: Vusal Gakhramanov Date: Mon, 28 Oct 2019 12:42:01 +0300 Subject: [PATCH 35/41] DEXW-2264: fixed tooltip --- .../less/largeHeader/dropdown-toggler.less | 4 ++ .../ui/directives/ratingStars/tooltip.less | 45 ++++++++++++++++--- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/modules/ui/directives/mainHeader/less/largeHeader/dropdown-toggler.less b/src/modules/ui/directives/mainHeader/less/largeHeader/dropdown-toggler.less index abc521d340..572ef75ede 100644 --- a/src/modules/ui/directives/mainHeader/less/largeHeader/dropdown-toggler.less +++ b/src/modules/ui/directives/mainHeader/less/largeHeader/dropdown-toggler.less @@ -82,4 +82,8 @@ } } } + + &.dropdown-toggler_right:hover::after { + display: none; + } } diff --git a/src/modules/ui/directives/ratingStars/tooltip.less b/src/modules/ui/directives/ratingStars/tooltip.less index 16c72366a9..e96cb96a0a 100644 --- a/src/modules/ui/directives/ratingStars/tooltip.less +++ b/src/modules/ui/directives/ratingStars/tooltip.less @@ -101,7 +101,8 @@ } // account type helper tooltip -.avatar-container.has-helper { +.avatar-container.has-helper, +.dropdown-toggler__avatar.dropdown-toggler__avatar_has-helper { w-help-icon { position: absolute; right: 0; @@ -114,7 +115,6 @@ text-align: center; background: @color-white; margin: 0; - overflow: hidden; display: flex; align-items: center; justify-content: center; @@ -135,18 +135,13 @@ font-size: 11px; content: '+'; color: @color-black; - background-color: @color-white; } } &__content { - width: 150px; - left: 0; - top: 100%; padding: 11px; line-height: 1em; font-size: 11px; - transform: translate(-50%, 5px); } &__row { @@ -191,6 +186,42 @@ } } +.avatar-container.has-helper { + .help-icon { + &__icon { + overflow: hidden; + } + + &__content { + width: 150px; + left: 0; + top: 100%; + transform: translate(-50%, 5px); + } + } +} + +.dropdown-toggler__avatar.dropdown-toggler__avatar_has-helper { + z-index: 11; + + .help-icon { + .help-icon__icon::after { + top: 23px; + } + + .help-icon__row { + white-space: nowrap; + } + + .help-icon__content { + width: auto; + left: auto; + right: -35px; + top: -3px; + } + } +} + .tooltip_unpin { transform: translate(-8px, -30px); visibility: hidden; From 58ce0031f1ffe22bd4194b097a0ccd4f5ac7d8a3 Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 28 Oct 2019 16:31:51 +0300 Subject: [PATCH 36/41] CLIENT-1819: merge dexw-1823, refactoring --- .../dex/directives/createOrder/CreateOrder.js | 118 ++++++++++-------- 1 file changed, 66 insertions(+), 52 deletions(-) diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index c45bdd4e54..974810b010 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -16,10 +16,11 @@ * @param {ModalManager} modalManager * @param {BalanceWatcher} balanceWatcher * @param {Transactions} transactions + * @param {Matcher} matcher * @return {CreateOrder} */ const controller = function (Base, waves, user, utils, createPoll, $scope, $element, notification, - dexDataService, ease, $state, modalManager, balanceWatcher, transactions) { + dexDataService, ease, $state, modalManager, balanceWatcher, transactions, matcher) { const { without, keys, last } = require('ramda'); const { Money } = require('@waves/data-entities'); @@ -221,15 +222,13 @@ */ const spreadPoll = createPoll(this, this._getData, this._setData, 1000); - this.receive(balanceWatcher.change, this._updateBalances, this); - this._updateBalances().then(() => this._setPairRestrictions()); - const onChangeBalanceWatcher = () => { this._updateBalances(); if (this.matcherSettings.mode === 'dynamic') { this._updateFeeList(); } }; + this.receive(balanceWatcher.change, onChangeBalanceWatcher, this); this._updateBalances(); @@ -257,7 +256,6 @@ this.isValidPricePrecision = this._validatePricePrecision(); this.observe(['amountBalance', 'type', 'fee', 'priceBalance'], this._updateMaxAmountOrPriceBalance); - this.observe(['maxAmountBalance', 'amountBalance', 'priceBalance', 'fee'], this._setPairRestrictions); this.observe('_assetIdPair', () => { this.amount = null; @@ -344,6 +342,9 @@ } $scope.$apply(); }); + + this.receive(utils.observe(matcher, 'pairRestrictions'), this._onChangeMatcherPairRestrictions, this); + this.observe(['maxAmountBalance'], this._onChangeMatcherPairRestrictions); } /** @@ -385,9 +386,7 @@ expand(type) { this.type = type; if (!this.price || this.price.getTokens().eq('0')) { - this._setPairRestrictions().then(() => { - this.price = this._getCurrentPrice(); - }); + this.price = this._getCurrentPrice(); } // todo: refactor after getting rid of Layout-DEX coupling. @@ -1155,53 +1154,67 @@ } /** - * @return {Promise|Promise} + * @return {void} * @private */ - _setPairRestrictions() { - if (!this.loaded) { - return Promise.resolve(); - } - + _onChangeMatcherPairRestrictions() { this.pairRestrictions = {}; const defaultPairRestriction = this._getDefaultPairRestriction(); - return ds.api.matcher - .getPairRestrictions({ - amountAsset: this.amountBalance.asset, - priceAsset: this.priceBalance.asset - }) - .then(data => { - const { maxAmount, maxPrice, stepPrice, stepAmount, minPrice, minAmount } = data.restrictions; - const restMaxAmount = maxAmount ? new BigNumber(maxAmount) : defaultPairRestriction.maxAmount; - const pricePrecision = stepPrice ? - Math.min( - new BigNumber(stepPrice).getDecimalsCount(), defaultPairRestriction.pricePrecision - ) : - defaultPairRestriction.pricePrecision; - const amountPrecision = stepAmount ? - Math.min( - new BigNumber(stepAmount).getDecimalsCount(), defaultPairRestriction.amountPrecision - ) : - defaultPairRestriction.amountPrecision; - - this.pairRestrictions = { - maxPrice: maxPrice ? new BigNumber(maxPrice) : defaultPairRestriction.maxPrice, - maxAmount: this.maxAmountBalance ? - BigNumber.min(this.maxAmountBalance.getTokens(), restMaxAmount) : - restMaxAmount, - minPrice: minPrice ? - BigNumber.max(new BigNumber(minPrice), defaultPairRestriction.minPrice) : - defaultPairRestriction.minPrice, - minAmount: minAmount ? - BigNumber.max(new BigNumber(minAmount), defaultPairRestriction.minAmount) : - defaultPairRestriction.minAmount, - pricePrecision, - amountPrecision - }; - }) - .catch(() => { - this.pairRestrictions = defaultPairRestriction; - }); + const matcherSettings = matcher.pairRestrictions; + + if (!matcherSettings) { + this.pairRestrictions = defaultPairRestriction; + return; + } + + const restrictions = matcherSettings.restrictions; + const matchingRules = matcherSettings.matchingRules; + + if (!restrictions && !matchingRules) { + this.pairRestrictions = defaultPairRestriction; + return; + } + + if (!restrictions && matchingRules && matchingRules.tickSize) { + this.pairRestrictions = { + ...defaultPairRestriction, + pricePrecision: new BigNumber(matchingRules.tickSize).getDecimalsCount() + }; + return; + } + + const { maxAmount, maxPrice, stepPrice, stepAmount, minPrice, minAmount } = restrictions; + const restMaxAmount = maxAmount ? new BigNumber(maxAmount) : defaultPairRestriction.maxAmount; + + const priceSizes = [defaultPairRestriction.pricePrecision]; + if (stepPrice) { + priceSizes.push(new BigNumber(stepPrice).getDecimalsCount()); + } + if (matchingRules && matchingRules.tickSize) { + priceSizes.push(new BigNumber(matchingRules.tickSize).getDecimalsCount()); + } + const pricePrecision = Math.min(...priceSizes); + + const amountPrecision = stepAmount ? + Math.min( + new BigNumber(stepAmount).getDecimalsCount(), defaultPairRestriction.amountPrecision + ) : + defaultPairRestriction.amountPrecision; + + this.pairRestrictions = { + maxPrice: maxPrice ? new BigNumber(maxPrice) : defaultPairRestriction.maxPrice, + maxAmount: this.maxAmountBalance ? + BigNumber.min(this.maxAmountBalance.getTokens(), restMaxAmount) : + restMaxAmount, + minPrice: minPrice ? + BigNumber.max(new BigNumber(minPrice), defaultPairRestriction.minPrice) : + defaultPairRestriction.minPrice, + minAmount: minAmount ? + BigNumber.max(new BigNumber(minAmount), defaultPairRestriction.minAmount) : + defaultPairRestriction.minAmount, + pricePrecision, + amountPrecision + }; } /** @@ -1290,7 +1303,8 @@ '$state', 'modalManager', 'balanceWatcher', - 'transactions' + 'transactions', + 'matcher' ]; angular.module('app.dex').component('wCreateOrder', { From 2142fcce0d41595eee2f773dd18e8fa0b9e7dbfc Mon Sep 17 00:00:00 2001 From: okanishcheva Date: Mon, 28 Oct 2019 16:52:22 +0300 Subject: [PATCH 37/41] DEXW-2151: fix set default assetsOracleTmp --- src/modules/utils/modals/settings/SettingsCtrl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/utils/modals/settings/SettingsCtrl.js b/src/modules/utils/modals/settings/SettingsCtrl.js index 67a577eebc..c77754f8c7 100644 --- a/src/modules/utils/modals/settings/SettingsCtrl.js +++ b/src/modules/utils/modals/settings/SettingsCtrl.js @@ -253,6 +253,7 @@ this.scamListUrl = WavesApp.network.scamListUrl; this.tokensNameListUrl = WavesApp.network.tokensNameListUrl; this.oracleWaves = WavesApp.oracles.waves; + this.assetsOracleTmp = this.oracleWaves; this.api = WavesApp.network.api; } From 11fa3f1b70fa2387d0e172757be1422ac018c672 Mon Sep 17 00:00:00 2001 From: Vusal Gakhramanov Date: Mon, 28 Oct 2019 18:40:54 +0300 Subject: [PATCH 38/41] DEXW-2264: fix --- src/modules/ui/directives/helpIcon/helpIcon.less | 10 ++++------ src/modules/ui/directives/ratingStars/tooltip.less | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/modules/ui/directives/helpIcon/helpIcon.less b/src/modules/ui/directives/helpIcon/helpIcon.less index 91aa06e380..cec6d4d7a4 100644 --- a/src/modules/ui/directives/helpIcon/helpIcon.less +++ b/src/modules/ui/directives/helpIcon/helpIcon.less @@ -3,6 +3,10 @@ @import (reference) '../../../app/less/typography'; .help-icon { + display: inline-flex; + z-index: 10; + flex-shrink: 0; + &__icon { margin-left: 7px; border-radius: 50%; @@ -74,12 +78,6 @@ margin-bottom: 5px; margin-top: 0; } -} - -w-help-icon { - display: inline-flex; - z-index: 10; - flex-shrink: 0; &.info { .help-icon { diff --git a/src/modules/ui/directives/ratingStars/tooltip.less b/src/modules/ui/directives/ratingStars/tooltip.less index e96cb96a0a..f428ffb591 100644 --- a/src/modules/ui/directives/ratingStars/tooltip.less +++ b/src/modules/ui/directives/ratingStars/tooltip.less @@ -103,7 +103,7 @@ // account type helper tooltip .avatar-container.has-helper, .dropdown-toggler__avatar.dropdown-toggler__avatar_has-helper { - w-help-icon { + .help-icon { position: absolute; right: 0; bottom: 0; From ddc6713fa06fb0f8320d62dafe02845fc7df6c55 Mon Sep 17 00:00:00 2001 From: Boris Volkov Date: Mon, 28 Oct 2019 18:41:48 +0300 Subject: [PATCH 39/41] Revert "CLIENT-1819: add pair restrictions (ticksize)" --- data-service/api/API.ts | 3 +- .../api/matcher/getPairRestrictions.ts | 9 - locale/it/app.dex.json | 2 +- locale/it/app.utils.json | 2 +- locale/zh_CN/app.dex.json | 2 +- .../app/services/waves/matcher/Matcher.js | 34 -- src/modules/dex/controllers/DexCtrl.js | 8 +- .../dex/directives/createOrder/CreateOrder.js | 324 ++---------------- .../directives/createOrder/createOrder.html | 70 ++-- .../directives/createOrder/createOrder.less | 6 - .../dex/directives/orderBook/OrderBook.js | 82 +---- .../dex/directives/orderBook/OrderList.js | 5 +- .../dex/directives/orderBook/OrderListItem.js | 32 +- .../directives/validators/ValidateService.js | 6 +- .../sendAsset/components/massSend/MassSend.js | 4 +- 15 files changed, 78 insertions(+), 511 deletions(-) delete mode 100644 data-service/api/matcher/getPairRestrictions.ts diff --git a/data-service/api/API.ts b/data-service/api/API.ts index e69182492b..2dff63ca89 100644 --- a/data-service/api/API.ts +++ b/data-service/api/API.ts @@ -17,7 +17,6 @@ import { import * as matchersApi from './matchers/matchers' import * as addressModule from './address'; import { getLastPrice } from './matcher/getLastPrice'; -import { getPairRestrictions } from './matcher/getPairRestrictions'; import { getAddressByAlias, getAliasesByAddress, getAliasesByIdList } from './aliases/aliases'; import { getFeeRates, getSettings } from './matcher/getSettings'; import * as pairsModule from './pairs/pairs'; @@ -31,7 +30,7 @@ export const node = { height }; export const matcher = { getOrderBook, getOrdersByPair, addSignature, clearSignature, getOrders, signatureTimeout, factory, getLastPrice, - getFeeRates, getSettings, getPairRestrictions + getFeeRates, getSettings }; export const matchers = matchersApi; diff --git a/data-service/api/matcher/getPairRestrictions.ts b/data-service/api/matcher/getPairRestrictions.ts deleted file mode 100644 index 04e57c9b87..0000000000 --- a/data-service/api/matcher/getPairRestrictions.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AssetPair } from '@waves/data-entities'; -import { request } from '../../utils/request'; -import { get } from '../../config'; - -export function getPairRestrictions(pair: AssetPair) { - return request({ - url: `${get('matcher')}/orderbook/${pair.amountAsset.id}/${pair.priceAsset.id}/info` - }); -} diff --git a/locale/it/app.dex.json b/locale/it/app.dex.json index ee7f154c4f..11a7c87628 100644 --- a/locale/it/app.dex.json +++ b/locale/it/app.dex.json @@ -249,4 +249,4 @@ "waves": "Waves" } } -} +} \ No newline at end of file diff --git a/locale/it/app.utils.json b/locale/it/app.utils.json index ea771c00c4..c65c0971e4 100644 --- a/locale/it/app.utils.json +++ b/locale/it/app.utils.json @@ -985,4 +985,4 @@ "help": "Byte restanti: {{bytes}}" } } -} +} \ No newline at end of file diff --git a/locale/zh_CN/app.dex.json b/locale/zh_CN/app.dex.json index 1c3ba7ebcd..f8e6fe28e7 100644 --- a/locale/zh_CN/app.dex.json +++ b/locale/zh_CN/app.dex.json @@ -249,4 +249,4 @@ "waves": "Waves" } } -} +} \ No newline at end of file diff --git a/src/modules/app/services/waves/matcher/Matcher.js b/src/modules/app/services/waves/matcher/Matcher.js index df95b00b3e..6a156c4aa8 100644 --- a/src/modules/app/services/waves/matcher/Matcher.js +++ b/src/modules/app/services/waves/matcher/Matcher.js @@ -28,11 +28,6 @@ */ currentMatcherAddress = ''; - /** - * @type {TPairRestrictions | null} - */ - pairRestrictions = null; - constructor() { this._orderBookCacheHash = Object.create(null); @@ -118,19 +113,6 @@ return ds.api.matcher.getLastPrice(pair); } - /** - * @param {AssetPair} pair - * @return {Promise} - */ - @decorators.cachable(0.5) - getPairRestrictions(pair) { - return ds.api.matcher.getPairRestrictions(pair) - .then((restrictions) => { - this.pairRestrictions = restrictions; - return restrictions; - }); - } - /** * @param {string} address * @return {Promise>} @@ -474,19 +456,3 @@ * @typedef {object} Matcher#IFeeMap * @property {number} */ - -/** - * @typedef {object} TPairRestrictions - * @param {TRestrictions} restrictions - * @param {{tickSize: string}} matchingRules - */ - -/** - * @typedef {object} TRestrictions - * @property {string} maxAmount - * @property {string} maxPrice - * @property {string} stepPrice - * @property {string} stepAmount - * @property {string} minPrice - * @property {string} minAmount - */ diff --git a/src/modules/dex/controllers/DexCtrl.js b/src/modules/dex/controllers/DexCtrl.js index e2f56207a9..82ad6288cf 100644 --- a/src/modules/dex/controllers/DexCtrl.js +++ b/src/modules/dex/controllers/DexCtrl.js @@ -14,7 +14,6 @@ * @param {Waves} waves * @param {utils} utils * @param {ModalManager} modalManager - * @param {Matcher} matcher * @return {DexCtrl} */ const controller = function ( @@ -27,8 +26,7 @@ createPoll, waves, utils, - modalManager, - matcher) { + modalManager) { const analytics = require('@waves/event-sender'); @@ -124,7 +122,6 @@ return this._showModalAndRedirect(userAssetIdPair.amount, userAssetIdPair.price); } const pair = await this._getPair(); - matcher.getPairRestrictions(pair); $location.search('assetId2', pair.amountAsset.id); $location.search('assetId1', pair.priceAsset.id); } @@ -281,8 +278,7 @@ 'createPoll', 'waves', 'utils', - 'modalManager', - 'matcher' + 'modalManager' ]; angular.module('app.dex') diff --git a/src/modules/dex/directives/createOrder/CreateOrder.js b/src/modules/dex/directives/createOrder/CreateOrder.js index 974810b010..3e3d916763 100644 --- a/src/modules/dex/directives/createOrder/CreateOrder.js +++ b/src/modules/dex/directives/createOrder/CreateOrder.js @@ -16,11 +16,10 @@ * @param {ModalManager} modalManager * @param {BalanceWatcher} balanceWatcher * @param {Transactions} transactions - * @param {Matcher} matcher * @return {CreateOrder} */ const controller = function (Base, waves, user, utils, createPoll, $scope, $element, notification, - dexDataService, ease, $state, modalManager, balanceWatcher, transactions, matcher) { + dexDataService, ease, $state, modalManager, balanceWatcher, transactions) { const { without, keys, last } = require('ramda'); const { Money } = require('@waves/data-entities'); @@ -46,14 +45,7 @@ } get loaded() { - return !!(this.amountBalance && this.priceBalance && this.fee); - } - - /** - * @return {boolean} - */ - get loadedPairRestrictions() { - return Object.keys(this.pairRestrictions).length > 0; + return this.amountBalance && this.priceBalance && this.fee; } /** @@ -111,10 +103,6 @@ * @type {number} */ ERROR_DISPLAY_INTERVAL = 3; - /** - * @type {number} - */ - ERROR_CLICKABLE_DISPLAY_INTERVAL = 6; /** * @type {{amount: string, price: string}} * @private @@ -170,35 +158,21 @@ * @type {Poll} */ feePoll = null; - /** - * @type {boolean} - */ - isValidAmountPrecision = false; - /** - * @type {boolean} - */ - isValidPricePrecision = false; - /** - * @type {TPairRestrictions | {}} - */ - pairRestrictions = {}; + constructor() { super(); - this.observe(['type', 'amount', 'price', 'amountBalance', 'fee', 'pairRestrictions'], - this._currentMaxAmount); + this.observe(['type', 'amount', 'price', 'amountBalance', 'fee'], this._currentMaxAmount); this.receive(dexDataService.chooseOrderBook, ({ type, price, amount }) => { this.expand(type); - const roundedPrice = this._getRoundPriceByPrecision(new BigNumber(price)).getTokens().toString(); - const roundedAmount = this._getClosestValidAmount(new BigNumber(amount)).getTokens().toString(); switch (type) { case 'buy': - this._onClickBuyOrder(roundedPrice, roundedAmount); + this._onClickBuyOrder(price, amount); break; case 'sell': - this._onClickSellOrder(roundedPrice, roundedAmount); + this._onClickSellOrder(price, amount); break; default: throw new Error('Wrong order type!'); @@ -221,6 +195,9 @@ * @type {Poll} */ const spreadPoll = createPoll(this, this._getData, this._setData, 1000); + /** + * @type {Poll} + */ const onChangeBalanceWatcher = () => { this._updateBalances(); @@ -228,7 +205,6 @@ this._updateFeeList(); } }; - this.receive(balanceWatcher.change, onChangeBalanceWatcher, this); this._updateBalances(); @@ -252,9 +228,6 @@ } }); - this.isValidAmountPrecision = this._validateAmountPrecision(); - this.isValidPricePrecision = this._validatePricePrecision(); - this.observe(['amountBalance', 'type', 'fee', 'priceBalance'], this._updateMaxAmountOrPriceBalance); this.observe('_assetIdPair', () => { @@ -288,29 +261,13 @@ this.observe(['priceBalance', 'total', 'maxPriceBalance'], this._setIfCanBuyOrder); - this.observe('amount', () => { - this.isValidAmountPrecision = this._validateAmountPrecision(); - if (!this._silenceNow) { - this._updateField({ amount: this.amount }); - } - }); - - this.observe('price', () => { - this.isValidPricePrecision = this._validatePricePrecision(); - if (this._silenceNow) { - this._updateField({ price: this.price }); - } - }); - - $scope.$watch('$ctrl.order.price.$viewValue', () => { - this.isValidPricePrecision = this._validatePricePrecision(); - utils.safeApply(); - }); + this.observe('amount', () => ( + !this._silenceNow && this._updateField({ amount: this.amount }) + )); - $scope.$watch('$ctrl.order.amount.$viewValue', () => { - this.isValidAmountPrecision = this._validateAmountPrecision(); - utils.safeApply(); - }); + this.observe('price', () => ( + !this._silenceNow && this._updateField({ price: this.price }) + )); this.observe('total', () => ( !this._silenceNow && this._updateField({ total: this.total }) @@ -342,9 +299,6 @@ } $scope.$apply(); }); - - this.receive(utils.observe(matcher, 'pairRestrictions'), this._onChangeMatcherPairRestrictions, this); - this.observe(['maxAmountBalance'], this._onChangeMatcherPairRestrictions); } /** @@ -358,19 +312,14 @@ return false; } - return this.maxAmount.cloneWithTokens( - this._getRoundAmountByPrecision(this.maxAmount.getTokens().mul(factor)).getTokens() - ).eq(amount); + return this.maxAmount.cloneWithTokens(this.maxAmount.getTokens().mul(factor)).eq(amount); } /** * @param {number} factor - * @return {Promise} */ setAmountByBalance(factor) { - const amount = this._getClosestValidAmount( - this.maxAmount.getTokens().mul(factor) - ); + const amount = this.maxAmount.cloneWithTokens(this.maxAmount.getTokens().mul(factor)); this._updateField({ amount }); return Promise.resolve(); } @@ -428,35 +377,19 @@ } setMaxAmount() { - const amount = this._getClosestValidAmount(this.maxAmount.getTokens()); + const amount = this.maxAmount; this._updateField({ amount }); } setMaxPrice() { - const amount = this._getRoundAmountByPrecision(this.maxAmount.getTokens()); - const price = this._getClosestValidPrice(this.price.getTokens()); + const amount = this.maxAmount; const total = this.priceBalance.cloneWithTokens( - price.getTokens().mul(amount.getTokens()) + this.price.getTokens().mul(amount.getTokens()) ); + const price = this.price; this._updateField({ amount, total, price }); } - /** - * @param {BigNumber} value - */ - setPrice(value) { - const price = this.priceBalance.cloneWithTokens(value); - this._updateField({ price }); - } - - /** - * @param {BigNumber} value - */ - setAmount(value) { - const amount = this.amountBalance.cloneWithTokens(value); - this._updateField({ amount }); - } - setBidPrice() { const price = this.priceBalance.cloneWithTokens(String(this.bid.price)); this._updateField({ price }); @@ -542,88 +475,6 @@ }); } - /** - * @param {BigNumber} price - * @return {Money} - * @private - */ - _getRoundPriceByPrecision(price) { - if (!this.loadedPairRestrictions) { - return this.priceBalance.cloneWithTokens(price); - } - const { pricePrecision } = this.pairRestrictions; - const roundedPrice = price.roundTo(pricePrecision); - return this.priceBalance.cloneWithTokens(roundedPrice); - } - - /** - * @param {BigNumber} price - * @return {Money} - * @private - */ - _getClosestValidPrice(price) { - if (!this.loadedPairRestrictions) { - return this.priceBalance.cloneWithTokens(price); - } - - const { minPrice, maxPrice } = this.pairRestrictions; - const roundedPrice = this._getRoundPriceByPrecision(price).getTokens(); - - if (roundedPrice.lt(minPrice)) { - return this.priceBalance.cloneWithTokens(minPrice); - } - - if (roundedPrice.gt(maxPrice)) { - return this.priceBalance.cloneWithTokens(maxPrice); - } - - return this.priceBalance.cloneWithTokens(roundedPrice); - } - - /** - * @param {BigNumber} value - * @return {Money} - * @private - */ - _getRoundAmountByPrecision(value) { - if (!this.loadedPairRestrictions) { - return this.amountBalance.cloneWithTokens(value); - } - - const { amountPrecision } = this.pairRestrictions; - - const roundedAmount = value.roundTo(amountPrecision, 1); - return this.amountBalance.cloneWithTokens(roundedAmount); - } - - /** - * @param {BigNumber} amount - * @return {Money} - * @private - */ - _getClosestValidAmount(amount) { - if (!this.loadedPairRestrictions) { - return this.amountBalance.cloneWithTokens(amount); - } - - const { amountPrecision, minAmount, maxAmount } = this.pairRestrictions; - const roundedAmount = this._getRoundAmountByPrecision(amount).getTokens(); - - if (roundedAmount.lt(minAmount)) { - return this.amountBalance.cloneWithTokens( - minAmount.roundTo(amountPrecision) - ); - } - - if (roundedAmount.gt(maxAmount)) { - return this.amountBalance.cloneWithTokens( - maxAmount.roundTo(amountPrecision) - ); - } - - return this.amountBalance.cloneWithTokens(roundedAmount); - } - /** * @param data * @return {*|Promise} @@ -939,8 +790,9 @@ } const price = this._validPrice(); const amount = this._validAmount(); - const total = this.priceBalance.cloneWithTokens(price.mul(amount)); - this._setDirtyField('total', total); + this._setDirtyField('total', this.priceBalance.cloneWithTokens( + price.mul(amount) + )); this._silenceNow = true; } @@ -953,7 +805,7 @@ } const total = this._validTotal(); const amount = this._validAmount(); - this._setDirtyField('price', this._getClosestValidPrice( + this._setDirtyField('price', this.priceBalance.cloneWithTokens( total.div(amount) )); this._silenceNow = true; @@ -969,7 +821,7 @@ const total = this._validTotal(); const price = this._validPrice(); - this._setDirtyField('amount', this._getClosestValidAmount( + this._setDirtyField('amount', this.amountBalance.cloneWithTokens( total.div(price) )); this._silenceNow = true; @@ -1153,117 +1005,6 @@ return [...currentFee, ...otherFee]; } - /** - * @return {void} - * @private - */ - _onChangeMatcherPairRestrictions() { - this.pairRestrictions = {}; - const defaultPairRestriction = this._getDefaultPairRestriction(); - const matcherSettings = matcher.pairRestrictions; - - if (!matcherSettings) { - this.pairRestrictions = defaultPairRestriction; - return; - } - - const restrictions = matcherSettings.restrictions; - const matchingRules = matcherSettings.matchingRules; - - if (!restrictions && !matchingRules) { - this.pairRestrictions = defaultPairRestriction; - return; - } - - if (!restrictions && matchingRules && matchingRules.tickSize) { - this.pairRestrictions = { - ...defaultPairRestriction, - pricePrecision: new BigNumber(matchingRules.tickSize).getDecimalsCount() - }; - return; - } - - const { maxAmount, maxPrice, stepPrice, stepAmount, minPrice, minAmount } = restrictions; - const restMaxAmount = maxAmount ? new BigNumber(maxAmount) : defaultPairRestriction.maxAmount; - - const priceSizes = [defaultPairRestriction.pricePrecision]; - if (stepPrice) { - priceSizes.push(new BigNumber(stepPrice).getDecimalsCount()); - } - if (matchingRules && matchingRules.tickSize) { - priceSizes.push(new BigNumber(matchingRules.tickSize).getDecimalsCount()); - } - const pricePrecision = Math.min(...priceSizes); - - const amountPrecision = stepAmount ? - Math.min( - new BigNumber(stepAmount).getDecimalsCount(), defaultPairRestriction.amountPrecision - ) : - defaultPairRestriction.amountPrecision; - - this.pairRestrictions = { - maxPrice: maxPrice ? new BigNumber(maxPrice) : defaultPairRestriction.maxPrice, - maxAmount: this.maxAmountBalance ? - BigNumber.min(this.maxAmountBalance.getTokens(), restMaxAmount) : - restMaxAmount, - minPrice: minPrice ? - BigNumber.max(new BigNumber(minPrice), defaultPairRestriction.minPrice) : - defaultPairRestriction.minPrice, - minAmount: minAmount ? - BigNumber.max(new BigNumber(minAmount), defaultPairRestriction.minAmount) : - defaultPairRestriction.minAmount, - pricePrecision, - amountPrecision - }; - } - - /** - * @return {TPairRestrictions} - * @private - */ - _getDefaultPairRestriction() { - const pricePrecision = this.priceBalance.asset.precision; - const amountPrecision = this.amountBalance.asset.precision; - const maxPrice = new BigNumber(Infinity); - const maxAmount = this.maxAmountBalance ? - this.maxAmountBalance.getTokens() : - new BigNumber(Infinity); - return ({ - maxPrice, - maxAmount, - pricePrecision, - amountPrecision, - minPrice: (new BigNumber(10)).pow(-pricePrecision), - minAmount: (new BigNumber(10)).pow(-amountPrecision) - }); - } - - /** - * @return {boolean} - */ - _validateAmountPrecision() { - if (!this.loadedPairRestrictions) { - return true; - } - - const { amountPrecision } = this.pairRestrictions; - - return (new BigNumber(this.order.amount.$viewValue)).getDecimalsCount() <= amountPrecision; - } - - /** - * @return {boolean} - */ - _validatePricePrecision() { - if (!this.loadedPairRestrictions) { - return true; - } - - const { pricePrecision } = this.pairRestrictions; - - return (new BigNumber(this.order.price.$viewValue)).getDecimalsCount() <= pricePrecision; - } - static _animateNotification($element) { return utils.animate($element, { t: 100 }, { duration: 1200, @@ -1303,8 +1044,7 @@ '$state', 'modalManager', 'balanceWatcher', - 'transactions', - 'matcher' + 'transactions' ]; angular.module('app.dex').component('wCreateOrder', { @@ -1314,13 +1054,3 @@ controller }); })(); - -/** - * @typedef {object} TPairRestrictions - * @property {BigNumber} maxPrice - * @property {BigNumber} maxAmount - * @property {BigNumber} minPrice - * @property {BigNumber} minAmount - * @property {number} pricePrecision - * @property {number} amountPrecision - */ diff --git a/src/modules/dex/directives/createOrder/createOrder.html b/src/modules/dex/directives/createOrder/createOrder.html index 6cf24eba3f..dab60f5cd7 100644 --- a/src/modules/dex/directives/createOrder/createOrder.html +++ b/src/modules/dex/directives/createOrder/createOrder.html @@ -88,15 +88,13 @@
- {{$ctrl.priceDisplayName}}
- - - - {{$ctrl.pairRestrictions.maxPrice.toFormat()}} - + + - - - - {{$ctrl.pairRestrictions.minPrice.toFormat()}} - + + - - - -
@@ -146,15 +134,14 @@
-
- - - - {{$ctrl.pairRestrictions.minAmount.toFormat()}} - - - - - - - - {{$ctrl.pairRestrictions.maxAmount.toFormat()}} - - - - + + + + - + params="{precision: $ctrl.amountBalance.asset.precision}"> + + +
diff --git a/src/modules/dex/directives/createOrder/createOrder.less b/src/modules/dex/directives/createOrder/createOrder.less index 7b062c3197..fe3a9065a3 100644 --- a/src/modules/dex/directives/createOrder/createOrder.less +++ b/src/modules/dex/directives/createOrder/createOrder.less @@ -349,12 +349,6 @@ w-create-order { } } } - - .clickable-value { - text-decoration: underline; - font-weight: bold; - cursor: pointer; - } } } diff --git a/src/modules/dex/directives/orderBook/OrderBook.js b/src/modules/dex/directives/orderBook/OrderBook.js index 65000c6e4b..435dd0fcc5 100644 --- a/src/modules/dex/directives/orderBook/OrderBook.js +++ b/src/modules/dex/directives/orderBook/OrderBook.js @@ -13,7 +13,6 @@ * @param {app.i18n} i18n * @param {typeof OrderList} OrderList * @param {Transactions} transactions - * @param {Matcher} matcher * @return {OrderBook} */ const controller = function (Base, @@ -25,8 +24,7 @@ $scope, i18n, OrderList, - transactions, - matcher) { + transactions) { const SECTIONS = { ASKS: '.table__asks', @@ -108,10 +106,6 @@ * @public */ this.isScrolled = false; - /** - * @type {TRestrictions | null} - */ - this.pairRestrictions = null; this.receive(dexDataService.showSpread, () => { this._dom.$box.stop().animate({ scrollTop: this._getSpreadScrollPosition() }, 300); @@ -126,8 +120,6 @@ this._onChangeVisibleElements(); this._updateAssetData(); - - this.receive(utils.observe(matcher, 'pairRestrictions'), this._onChangeMatcherPairRestrictions, this); } $postLink() { @@ -200,7 +192,6 @@ this.priceAsset = priceAsset; this.amountAsset = amountAsset; this.pair = new AssetPair(amountAsset, priceAsset); - return this.pair; }); } @@ -289,8 +280,8 @@ }, Object.create(null)); const lastTrade = lastPrice; - const bids = OrderBook._sumAllOrders(dataBids, 'sell', this.pairRestrictions); - const asks = OrderBook._sumAllOrders(dataAsks, 'buy', this.pairRestrictions).reverse(); + const bids = OrderBook._sumAllOrders(dataBids, 'sell'); + const asks = OrderBook._sumAllOrders(dataAsks, 'buy').reverse(); const maxAmount = OrderBook._getMaxAmount(bids, asks, crop); @@ -342,17 +333,8 @@ }; const length = OrderList.ROWS_COUNT; - const stepPrecision = this.pairRestrictions ? - { - amount: (new BigNumber(this.pairRestrictions.stepAmount)).getDecimalsCount(), - price: (new BigNumber(this.pairRestrictions.stepPrice)).getDecimalsCount() - } : - null; - - this._asks.render( - toLength(data.asks, length), data.crop, data.priceHash, data.maxAmount, pair, stepPrecision - ); - this._bids.render(data.bids, data.crop, data.priceHash, data.maxAmount, pair, stepPrecision); + this._asks.render(toLength(data.asks, length), data.crop, data.priceHash, data.maxAmount, pair); + this._bids.render(data.bids, data.crop, data.priceHash, data.maxAmount, pair); if (this._showSpread) { this._showSpread = false; @@ -371,53 +353,23 @@ return info.offsetTop - box.offsetTop - box.clientHeight / 2 + info.clientHeight / 2; } - /** - * @private - */ - _onChangeMatcherPairRestrictions() { - const restrictions = matcher.pairRestrictions && matcher.pairRestrictions.restrictions; - const matchingRules = matcher.pairRestrictions && matcher.pairRestrictions.matchingRules; - if (restrictions && matchingRules) { - const stepPrice = (new BigNumber(matchingRules.tickSize)).gt(restrictions.stepPrice) ? - matchingRules.tickSize : - restrictions.stepPrice; - this.pairRestrictions = { - ...restrictions, - stepPrice - }; - } else if (matchingRules) { - this.pairRestrictions = { - stepPrice: matchingRules.tickSize - }; - } else { - this.pairRestrictions = null; - } - } - /** * @param {Array} list * @param {'buy'|'sell'} type - * @param {TRestrictions | null} restrictions * @return Array * @private */ - static _sumAllOrders(list, type, restrictions) { + static _sumAllOrders(list, type) { let total = new BigNumber(0); let amountTotal = new BigNumber(0); return list.map((item) => { total = total.add(item.total); amountTotal = amountTotal.add(item.amount); - const amount = this._roundToStep( - item.amount, restrictions && restrictions.stepAmount ? restrictions.stepAmount : undefined - ); - const price = this._roundToStep( - item.price, restrictions && restrictions.stepPrice ? restrictions.stepPrice : undefined - ); return { type, - amount, - price, + amount: new BigNumber(item.amount), + price: new BigNumber(item.price), total, totalAmount: amountTotal }; @@ -455,20 +407,6 @@ return list.filter((o) => o.price.gte(crop.min) && o.price.lte(crop.max)); } - /** - * @param {string | number} value - * @param {string | number} step? - * @private - */ - static _roundToStep(value, step) { - if (!step) { - return new BigNumber(value); - } - return new BigNumber(value).roundTo( - (new BigNumber(step).getDecimalsCount()) - ); - } - } return new OrderBook(); @@ -484,8 +422,7 @@ '$scope', 'i18n', 'OrderList', - 'transactions', - 'matcher' + 'transactions' ]; angular.module('app.dex').component('wDexOrderBook', { @@ -526,4 +463,3 @@ * @property {{price: Money, lastSide: string}} lastTrade * @property {BigNumber} spread */ - diff --git a/src/modules/dex/directives/orderBook/OrderList.js b/src/modules/dex/directives/orderBook/OrderList.js index ff0469913c..d234cbb5b8 100644 --- a/src/modules/dex/directives/orderBook/OrderList.js +++ b/src/modules/dex/directives/orderBook/OrderList.js @@ -54,15 +54,14 @@ * @param {OrderBook.ICrop} crop * @param {Record} priceHash * @param {BigNumber} maxAmount - * @param {TStepPrecision | null} stepPrecision * @param {AssetPair} pair */ - render(data, crop, priceHash, maxAmount, pair, stepPrecision) { + render(data, crop, priceHash, maxAmount, pair) { const widthList = []; this._rows.forEach((row, index) => { const item = data[index]; - row.render(item, crop, priceHash, pair, stepPrecision); + row.render(item, crop, priceHash, pair); widthList[index] = item && item.amount.div(maxAmount).mul(100).toFixed(2); }); diff --git a/src/modules/dex/directives/orderBook/OrderListItem.js b/src/modules/dex/directives/orderBook/OrderListItem.js index f031ce603b..0b627833be 100644 --- a/src/modules/dex/directives/orderBook/OrderListItem.js +++ b/src/modules/dex/directives/orderBook/OrderListItem.js @@ -82,17 +82,16 @@ * @param {OrderBook.IOrder} data * @param {OrderBook.ICrop} crop * @param {Record} priceHash - * @param {TStepPrecision | null} stepPrecision * @param {AssetPair} pair */ - render(data, crop, priceHash, pair, stepPrecision) { + render(data, crop, priceHash, pair) { if (OrderListItem._isEqual(this._data, data)) { return null; } this._pair = pair; this._data = data; - this._draw(crop, priceHash, pair, stepPrecision); + this._draw(crop, priceHash, pair); } /** @@ -106,25 +105,14 @@ * @param {OrderBook.ICrop} [crop] * @param {Record} [priceHash] * @param {AssetPair} [pair] - * @param {TStepPrecision | null} [stepPrecision] * @private */ - _draw(crop, priceHash, pair, stepPrecision) { + _draw(crop, priceHash, pair) { if (this._data) { - const amountPrecision = stepPrecision && stepPrecision.amount ? - Math.min(pair.amountAsset.precision, stepPrecision.amount) : - pair.amountAsset.precision; - - const pricePrecision = stepPrecision && stepPrecision.price ? - Math.min(pair.priceAsset.precision, stepPrecision.price) : - pair.priceAsset.precision; - - this._amountNode.innerHTML = utils.getNiceNumberTemplate( - this._data.amount, amountPrecision, true - ); - this._priceNode.innerHTML = utils.getNiceNumberTemplate( - this._data.price, pricePrecision, 100000 - ); + this._amountNode.innerHTML = + utils.getNiceNumberTemplate(this._data.amount, pair.amountAsset.precision, true); + this._priceNode.innerHTML = + utils.getNiceNumberTemplate(this._data.price, pair.priceAsset.precision, 100000); this._totalNode.innerHTML = utils.getNiceNumberTemplate(this._data.total, pair.priceAsset.precision, true); @@ -267,9 +255,3 @@ /** * @name OrderListItem */ - -/** - * @typedef {object} TStepPrecision - * @property {number} price - * @property {number} amount - */ diff --git a/src/modules/utils/directives/validators/ValidateService.js b/src/modules/utils/directives/validators/ValidateService.js index 98e57256b2..c3bc497c26 100644 --- a/src/modules/utils/directives/validators/ValidateService.js +++ b/src/modules/utils/directives/validators/ValidateService.js @@ -116,12 +116,12 @@ index: i, isAddress: this.address(item, value), isValidAlis: this.isValidAlias(item) - }; + } }); const aliases = data.filter(item => !item.isAddress || item.isValidAlis); return fetchAliases(aliases.map(item => item.alias)).then(result => { - aliases.forEach((item, index) => { + aliases.forEach((item , index) => { if (result[index] && result[index].address) { item.address = result[index].address; item.isValidAlis = true; @@ -156,7 +156,7 @@ isValidAlias(alias) { return waves.node.aliases.validate(alias || ''); } - + /** * @param {string} address * @param {'no-self'} [value] diff --git a/src/modules/utils/modals/sendAsset/components/massSend/MassSend.js b/src/modules/utils/modals/sendAsset/components/massSend/MassSend.js index ba60c32b68..501ca91449 100644 --- a/src/modules/utils/modals/sendAsset/components/massSend/MassSend.js +++ b/src/modules/utils/modals/sendAsset/components/massSend/MassSend.js @@ -337,7 +337,7 @@ this.errors = errors; $scope.$digest(); - }); + }) } /** @@ -437,7 +437,7 @@ } static _isValidRecipients(recipientList) { - return validateService.wavesAddresses(recipientList); + return validateService.wavesAddresses(recipientList) } /** From 14fde753211cfa72ec204c493455f7c57d15e850 Mon Sep 17 00:00:00 2001 From: vk Date: Tue, 29 Oct 2019 12:50:37 +0300 Subject: [PATCH 40/41] DEXW-2272: update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4a830c0d32..a49a487139 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "waves-client", - "version": "1.4.7", + "version": "1.4.8", "description": "The official client application for the Waves platform", "private": true, "repository": { From 8817a22edd32539d08c27f0f2b8f3ea506f99c61 Mon Sep 17 00:00:00 2001 From: vk Date: Tue, 29 Oct 2019 17:21:08 +0300 Subject: [PATCH 41/41] DEXW-2272: update locale files --- locale/de/app.dex.json | 4 ++++ locale/de/app.utils.json | 19 +++++++++++++++++-- locale/en/app.dex.json | 4 ++++ locale/en/app.utils.json | 19 +++++++++++++++++-- locale/es/app.dex.json | 4 ++++ locale/es/app.utils.json | 19 +++++++++++++++++-- locale/et_EE/app.dex.json | 4 ++++ locale/et_EE/app.utils.json | 19 +++++++++++++++++-- locale/fr/app.dex.json | 4 ++++ locale/fr/app.utils.json | 19 +++++++++++++++++-- locale/hi_IN/app.dex.json | 4 ++++ locale/hi_IN/app.utils.json | 19 +++++++++++++++++-- locale/id/app.dex.json | 4 ++++ locale/id/app.utils.json | 19 +++++++++++++++++-- locale/it/app.dex.json | 4 ++++ locale/it/app.utils.json | 19 +++++++++++++++++-- locale/ja/app.dex.json | 4 ++++ locale/ja/app.utils.json | 19 +++++++++++++++++-- locale/ko/app.dex.json | 4 ++++ locale/ko/app.utils.json | 19 +++++++++++++++++-- locale/nl_NL/app.dex.json | 4 ++++ locale/nl_NL/app.utils.json | 19 +++++++++++++++++-- locale/pl/app.dex.json | 4 ++++ locale/pl/app.utils.json | 19 +++++++++++++++++-- locale/pt_BR/app.dex.json | 4 ++++ locale/pt_BR/app.utils.json | 19 +++++++++++++++++-- locale/pt_PT/app.dex.json | 4 ++++ locale/pt_PT/app.utils.json | 19 +++++++++++++++++-- locale/ru/app.dex.json | 4 ++++ locale/ru/app.utils.json | 19 +++++++++++++++++-- locale/tr/app.dex.json | 4 ++++ locale/tr/app.utils.json | 19 +++++++++++++++++-- locale/zh_CN/app.dex.json | 4 ++++ locale/zh_CN/app.utils.json | 19 +++++++++++++++++-- 34 files changed, 357 insertions(+), 34 deletions(-) diff --git a/locale/de/app.dex.json b/locale/de/app.dex.json index c472a77326..14b69846ba 100644 --- a/locale/de/app.dex.json +++ b/locale/de/app.dex.json @@ -47,6 +47,7 @@ "last": "Letzte", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Gesamt" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Ein neues Konto erstellen", "or": "oder", diff --git a/locale/de/app.utils.json b/locale/de/app.utils.json index 259fff4e0f..5b31cf992d 100644 --- a/locale/de/app.utils.json +++ b/locale/de/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Geben Sie diese Adresse in Ihren BTC-Kunden oder Ihr Wallet ein.", "warningMinAmountText": "Wenn sie weniger als {{minAmount, BigNumber}} {{assetTicker}} senden, werden sie dieses Geld verlieren.", "warningMinAmountTitle": "Die Mindesteinzahlung beträgt {{minAmount, BigNumber}} {{assetTicker}}", "warningText": "Das Senden einer anderen Währung an diese Adresse kann zum Verlust ihrer Einzahlung führen.", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Überprüfen sie, ob ihre Wallet oder ihre Exchange Smart Contracts verwendet, um ETH zurückzuziehen. Wir akzeptieren solche Transaktionen nicht und können sie nicht zurückerstatten. Sie werden dieses Geld verlieren.", @@ -302,7 +306,15 @@ "helpDescrText": "Sobald die Transaktion bestätigt ist, verarbeitet das Gateway die Übertragung der VST Token zu einem Token in ihrem Waves Account.", "helpDescrTitle": "Geben Sie diese Adresse in Ihren VST-Kunden oder Ihr Wallet ein.", "warningMinAmountTitle": "Der Mindesteinzahlungsbetrag beträgt {{minAmount, BigNumber}} {{assetTicker}}, der Höchsteinzahlungsbetrag beträgt {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Sobald die Transaktion bestätigt ist, verarbeitet das Gateway die Übertragung der WEST Token zu einem Token in ihrem Waves Account.", + "helpDescrText_copy": "Sobald die Transaktion bestätigt ist, verarbeitet das Gateway die Übertragung der WEST Token zu einem Token in ihrem Waves Account.", + "helpDescrTitle": "Geben Sie diese Adresse in Ihren WEST-Kunden oder Ihr Wallet ein.", + "helpDescrTitle_copy": "Geben Sie diese Adresse in Ihren WEST-Kunden oder Ihr Wallet ein.", + "warningMinAmountTitle": "Der Mindesteinzahlungsbetrag beträgt {{minAmount, BigNumber}} {{assetTicker}}, der Höchsteinzahlungsbetrag beträgt {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Der Mindesteinzahlungsbetrag beträgt {{minAmount, BigNumber}} {{assetTicker}}, der Höchsteinzahlungsbetrag beträgt {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart Assets sind Assets, die ein Skript enthalten, in dem die Bedingungen für die Verbreitung des Tokens festgelegt sind.{div}[Wir empfehlen nicht, Vorgänge mit Smart Assets durchzuführen, wenn Sie ein unerfahrener Benutzer sind. Bevor Sie eine Transaktion tätigen, lesen Sie bitte die Informationen zum Asset und dessen Skript sorgfältig durch.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Der VST Service ist vorübergehend nicht verfügbar. Versuchen sie es später noch einmal." }, + "wavesEnterprise": { + "serverError_copy": "Der WEST Service ist vorübergehend nicht verfügbar. Versuchen sie es später noch einmal." + }, "wtry": { "info": "Bei Problemen mit der Zahlungsabwicklung wenden sie sich bitte an das Support-Team von Digilira - [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Verbesserte App-Navigation und Startseitenoberfläche.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. Das VST-Gateway wurde gestartet.] \n {span.line}[2. Verbesserte Benutzeroberfläche und zusätzliche kleinere Fehler wurden behoben.]", + "1_3_2": "{span.line}[1. Das WEST-Gateway wurde gestartet.] \n {span.line}[2. Verbesserte Benutzeroberfläche und zusätzliche kleinere Fehler wurden behoben.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/en/app.dex.json b/locale/en/app.dex.json index fdefb0cd25..9cad1ab1d8 100644 --- a/locale/en/app.dex.json +++ b/locale/en/app.dex.json @@ -47,6 +47,7 @@ "last": "Last", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Create a new account", "or": "or", diff --git a/locale/en/app.utils.json b/locale/en/app.utils.json index 6fc82e05a5..bac2dfd930 100644 --- a/locale/en/app.utils.json +++ b/locale/en/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your BTC client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Sending any other currency to this address may result in the loss of your deposit.", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw ETH. We do not accept such transactions and can’t refund them. You will lose that money.", @@ -302,7 +306,15 @@ "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrText_copy": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your WEST client or wallet", + "helpDescrTitle_copy": "Enter this address into your WEST client or wallet", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart assets are assets that include a script that sets the conditions for the circulation of the token.{div}[We do not recommend you perform operations with smart assets if you are an inexperienced user. Before making a transaction, please read the information about the asset and its script carefully.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST temporarily unavailable. Try again later." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST temporarily unavailable. Try again later." + }, "wtry": { "info": "In case of problems with payment processing, please contact the Digilira support team — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. WEST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/es/app.dex.json b/locale/es/app.dex.json index ea0e87ec4d..cdefbc120e 100644 --- a/locale/es/app.dex.json +++ b/locale/es/app.dex.json @@ -47,6 +47,7 @@ "last": "Última", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "cree una cuenta nueva", "or": "o", diff --git a/locale/es/app.utils.json b/locale/es/app.utils.json index 4b34e70fb3..5e05f7d18f 100644 --- a/locale/es/app.utils.json +++ b/locale/es/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Por favor, no deposite BNT desde contratos inteligentes! No deposite otros tokens ERC20! Sólo se permite Bancor." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Ingrese esta dirección en su cartera o cliente BTC", "warningMinAmountText": "Si mandas menos de {{minAmount, BigNumber}} {{assetTicker}} perderás tu dinero.", "warningMinAmountTitle": "La cantidad mínima a depositar es de {{minAmount, BigNumber}} {{assetTicker}}", "warningText": "Enviar otro tipo de moneda a esta dirección puede ocasionar la pérdida de tu depósito.", @@ -293,6 +295,8 @@ "warningTitle": "Enviar solo ERGO a esta dirección de depósito" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "Si mandas menos de {{minAmount, BigNumber}} {{assetTicker}} perderás tu dinero.", "warningMinAmountTitle": "La cantidad mínima de depósito es {{minAmount, BigNumber}} {{assetTicker}}, la cantidad máxima de depósito es {{maxAmount}} {{assetTicker}}", "warningText": "Comprueba si tu monedero o tu exchange utiliza Smart-contracts para retirar ETH. No aceptamos ese tipo de transacción y no podemos devolverlo. Perderás ese dinero.", @@ -302,7 +306,15 @@ "helpDescrText": "Una vez que se confirma la transacción, la puerta de enlace procesará la transferencia de VST en forma de token a su cuenta Waves.", "helpDescrTitle": "Ingrese esta dirección en su cartera o cliente VST", "warningMinAmountTitle": "La cantidad mínima de depósito es {{minAmount, BigNumber}} {{assetTicker}}, la cantidad máxima de depósito es {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Una vez que se confirma la transacción, la puerta de enlace procesará la transferencia de WEST en forma de token a su cuenta Waves.", + "helpDescrText_copy": "Una vez que se confirma la transacción, la puerta de enlace procesará la transferencia de WEST en forma de token a su cuenta Waves.", + "helpDescrTitle": "Ingrese esta dirección en su cartera o cliente WEST", + "helpDescrTitle_copy": "Ingrese esta dirección en su cartera o cliente WEST", + "warningMinAmountTitle": "La cantidad mínima de depósito es {{minAmount, BigNumber}} {{assetTicker}}, la cantidad máxima de depósito es {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "La cantidad mínima de depósito es {{minAmount, BigNumber}} {{assetTicker}}, la cantidad máxima de depósito es {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Los Smart Assets son activos que incluyen un script que establece las condiciones para la circulación del token.{div}[Le recomendamos que no realice operaciones con Smart Assets si es un usuario sin la experiencia suficiente. Antes de realizar una transacción, lea atentamente la información sobre el activo y su script.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Servicio VST temporalmente no disponible. Inténtalo de nuevo más tarde." }, + "wavesEnterprise": { + "serverError_copy": "Servicio WEST temporalmente no disponible. Inténtalo de nuevo más tarde." + }, "wtry": { "info": "Si tuvieras problemas con el proceso de pago, por favor, contacta con el equipo de soporte de Digilira - [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "\"span.line\" [1. Se ha mejorado la navegación de la aplicación y la interfaz de la página de inicio.]", "1_3_18": "{span.line} [1. Inicio de sesión agregado a la billetera con clave privada.] \n {span.line} [2. El cambio de precio de 24 horas de un token ahora está vinculado al par de tokens / WAVES.]", "1_3_19": "{span.line}[1. Se ha puesto en marcha la puerta de enlace Bancor.]\n{span.line}[2. Se ha corregido la interfaz de usuario y algunos errores menores.]", - "1_3_2": "\"span.line\" [1. Se ha puesto en marcha la puerta de enlace VST.]\n\"span.line\" [2. Se ha corregido la interfaz de usuario y algunos errores menores.]", + "1_3_2": "\"span.line\" [1. Se ha puesto en marcha la puerta de enlace WEST.]\n\"span.line\" [2. Se ha corregido la interfaz de usuario y algunos errores menores.]", "1_3_20": "{span.line} [1. Sistema mejorado para almacenar y restaurar cuentas desde el almacenamiento local (es necesario actualizar la [aplicación de escritorio] (https://wavesplatform.com/technology/wallet)).] \n {span.line} [2. Se corrigió el redondeo de precios en el libro de pedidos.]", "1_3_5": "\"span.line\" [1. Se ha añadido una pestaña con tokens de concurso [wsoc.io](https://wsoc.io).\n\"span.line\" [2. Se ha añadido compatibilidad con el idioma francés.]\n\"span.line\" [3. Se han corregido errores menores adicionales.]", "1_3_7": "\"span.line\" [1. Integración con [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Ahora puede calificar tokens directamente en la aplicación.]\n\"span.line\" [2. Se han corregido errores menores.]", diff --git a/locale/et_EE/app.dex.json b/locale/et_EE/app.dex.json index 70c674c7c9..5ae896089f 100644 --- a/locale/et_EE/app.dex.json +++ b/locale/et_EE/app.dex.json @@ -47,6 +47,7 @@ "last": "Viimane", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Kokku" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Loo uus konto", "or": "või", diff --git a/locale/et_EE/app.utils.json b/locale/et_EE/app.utils.json index 729a06d443..182e5f92e9 100644 --- a/locale/et_EE/app.utils.json +++ b/locale/et_EE/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your BTC client or wallet", "warningMinAmountText": "Kui saadate vähem kui {{minAmount, BigNumber}} {{assetTicker}}, kaotate selle raha.", "warningMinAmountTitle": "Minimaalne sissemakse summa on {{minAmount, BigNumber}} {{assetTicker}}", "warningText": "Muude valuutade saatmine sellele aadressile võib kaasa tuua teie deposiidi kadumise.", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Kontrollige, kas teie rahakott või börs kasutab ETH-i väljavõtmiseks smart-kontrakte. Me ei aktsepteeri selliseid tehinguid ja ei saa neid tagasi maksta. Te kaotate selle raha.", @@ -302,7 +306,15 @@ "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrText_copy": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your WEST client or wallet", + "helpDescrTitle_copy": "Enter this address into your WEST client or wallet", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart assets are assets that include a script that sets the conditions for the circulation of the token.{div}[We do not recommend you perform operations with smart assets if you are an inexperienced user. Before making a transaction, please read the information about the asset and its script carefully.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST temporarily unavailable. Try again later." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST temporarily unavailable. Try again later." + }, "wtry": { "info": "Makse töötlemisega seotud probleemide korral palun võtke ühendust Digilira tugimeeskonnaga — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. WEST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/fr/app.dex.json b/locale/fr/app.dex.json index b41e6268be..c5c759df89 100644 --- a/locale/fr/app.dex.json +++ b/locale/fr/app.dex.json @@ -47,6 +47,7 @@ "last": "Dernier", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Frais", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Créer un nouveau compte", "or": "ou", diff --git a/locale/fr/app.utils.json b/locale/fr/app.utils.json index 2f7cb56fa1..6305425936 100644 --- a/locale/fr/app.utils.json +++ b/locale/fr/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Veuillez ne pas déposer BNT depuis un smart-contract! Ne déposez pas d'autres jetons ERC20! Seul Bancor est autorisé." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Entrez cette adresse dans votre client ou portefeuille BTC", "warningMinAmountText": "Si vous envoyez moins de {{minAmount, BigNumber}} {{assetTicker}}, vous perdrez cet argent.", "warningMinAmountTitle": "Le montant minimum de dépôt est {{minAmount, BigNumber}} {{assetTicker}}", "warningText": "L'envoi de toute autre devise à cette adresse peut entraîner la perte de votre dépôt.", @@ -293,6 +295,8 @@ "warningTitle": "Envoyez uniquement de l'ERGO à cette adresse de dépôt" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "Si vous envoyez moins de {{minAmount, BigNumber}} {{assetTicker}}, vous perdrez cet argent.", "warningMinAmountTitle": "Le montant minimum du dépôt est de {{minAmount, BigNumber}} {{assetTicker}}, le montant maximum du dépôt est de {{maxAmount}} {{assetTicker}}", "warningText": "Vérifiez si votre portefeuille ou votre plateforme d'échange utilise des smart-contracts pour retirer ETH. Nous n'acceptons pas de telles transactions et ne pouvons pas les rembourser. Vous perdrez cet argent.", @@ -302,7 +306,15 @@ "helpDescrText": "Une fois la transaction confirmée, le portail traitera le transfert de VST vers un jeton dans votre compte Waves.", "helpDescrTitle": "Entrez cette adresse dans votre client ou portefeuille VST", "warningMinAmountTitle": "Le montant minimum du dépôt est de {{minAmount, BigNumber}} {{assetTicker}}, le montant maximum du dépôt est de {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Une fois la transaction confirmée, le portail traitera le transfert de WEST vers un jeton dans votre compte Waves.", + "helpDescrText_copy": "Une fois la transaction confirmée, le portail traitera le transfert de WEST vers un jeton dans votre compte Waves.", + "helpDescrTitle": "Entrez cette adresse dans votre client ou portefeuille WEST", + "helpDescrTitle_copy": "Entrez cette adresse dans votre client ou portefeuille WEST", + "warningMinAmountTitle": "Le montant minimum du dépôt est de {{minAmount, BigNumber}} {{assetTicker}}, le montant maximum du dépôt est de {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Le montant minimum du dépôt est de {{minAmount, BigNumber}} {{assetTicker}}, le montant maximum du dépôt est de {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Les actifs intelligents sont des actifs qui incluent un script qui définit les conditions de la circulation du jeton. {div}[Nous vous déconseillons d'effectuer des opérations avec des actifs intelligents si vous êtes un utilisateur inexpérimenté. Avant d'effectuer une transaction, veuillez lire attentivement les informations sur l'actif et son script.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST temporairement indisponible. Veuillez réessayez plus tard." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST temporairement indisponible. Veuillez réessayez plus tard." + }, "wtry": { "info": "En cas de problèmes avec le traitement des paiements, veuillez contacter l'équipe de support Digilira - [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Amélioration de la navigation dans l'application et de l'interface de la page de démarrage.]", "1_3_18": "{span.line}[1. Ajout de la connexion au portefeuille à l'aide d'une clé privée.] \n{span.line}[2. Le changement de prix d'un jeton sur 24 heures est désormais lié à la paire jeton/WAVES.]", "1_3_19": "{span.line}[1. Le portail Bancor a été lancé.] \n{span.line}[2. Interface utilisateur améliorée.]", - "1_3_2": "{span.line} [1. Le portail VST a été lancé.] \n{span.line} [2. Interface utilisateur améliorée et correction de bugs mineurs supplémentaires.]", + "1_3_2": "{span.line} [1. Le portail WEST a été lancé.] \n{span.line} [2. Interface utilisateur améliorée et correction de bugs mineurs supplémentaires.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. Un onglet avec les jetons du concours [wsoc.io] (https://wsoc.io) a été ajouté.] \n {span.line}[2. Prise en charge de la langue française ajoutée.] \n {span.line}[3. Des bugs mineurs supplémentaires ont été corrigés.]", "1_3_7": "{span.line}[1. Intégration avec [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Vous pouvez maintenant noter les jetons directement dans l'application.] \n {span.line}[2. Des bugs mineurs supplémentaires ont été corrigés.]", diff --git a/locale/hi_IN/app.dex.json b/locale/hi_IN/app.dex.json index 50c1326efa..9c08f782a3 100644 --- a/locale/hi_IN/app.dex.json +++ b/locale/hi_IN/app.dex.json @@ -47,6 +47,7 @@ "last": "अंतिम", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "कुल योग" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "एक नया खाता बनाएं", "or": "या", diff --git a/locale/hi_IN/app.utils.json b/locale/hi_IN/app.utils.json index 1026350fd8..4975ea0445 100644 --- a/locale/hi_IN/app.utils.json +++ b/locale/hi_IN/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your BTC client or wallet", "warningMinAmountText": "यदि आप {{minAmount, BigNumber}} {{assetTicker}} से कम राशि भेजेंगे तो आप उस धन को खो देंगे।", "warningMinAmountTitle": "न्यूनतम जमा राशि {{minAmount, BigNumber}} {{assetTicker}} है।", "warningText": "इस पते पर कोई और करेंसी भेजने से आपकी जमा राशि की हानि हो सकती है।", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "क करें किया क्या आपका वॉलेट या एक्सचेंज, ETH निकासी के लिए स्मार्ट-कॉन्ट्रैक्ट का उपयोग करता है। हम ऐसे लेनेदेन स्वीकार नहीं करते हैं और उनको रिफंड नहीं कर सकते हैं। आपको उस धन की हानि हो जाएगी।", @@ -302,7 +306,15 @@ "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrText_copy": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your WEST client or wallet", + "helpDescrTitle_copy": "Enter this address into your WEST client or wallet", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart assets are assets that include a script that sets the conditions for the circulation of the token.{div}[We do not recommend you perform operations with smart assets if you are an inexperienced user. Before making a transaction, please read the information about the asset and its script carefully.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST temporarily unavailable. Try again later." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST temporarily unavailable. Try again later." + }, "wtry": { "info": "भुगतान प्रोसेसिंग की समस्याओं की स्थिति में, कृपया Digilira सपोर्टिंग टीम से संपर्क करें — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. WEST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/id/app.dex.json b/locale/id/app.dex.json index 8decb82845..e820b8ccb4 100644 --- a/locale/id/app.dex.json +++ b/locale/id/app.dex.json @@ -47,6 +47,7 @@ "last": "Terakhir", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Biaya", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Buat akun baru", "or": "atau", diff --git a/locale/id/app.utils.json b/locale/id/app.utils.json index 60cf8f563c..cbb89751e9 100644 --- a/locale/id/app.utils.json +++ b/locale/id/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Tolong jangan setorkan BNT dari kontrak pintar! Jangan setorkan token ERC20 lainnya! Hanya Bancor yang diizinkan." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Masukkan alamat ini ke klien atau dompet BTC Anda", "warningMinAmountText": "Jika Anda akan mengirim kurang dari {{minAmount, BigNumber}} {{assetTicker}}, Anda akan kehilangan uang itu.", "warningMinAmountTitle": "Jumlah minimum setoran adalah {{minAmount, BigNumber}} {{assetTicker}} , jumlah setoran maksimum adalah {{maxAmount}} {{assetTicker}}", "warningText": "Mengirimkan mata uang lain ke alamat ini dapat menyebabkan hilangnya deposit Anda.", @@ -293,6 +295,8 @@ "warningTitle": "Kirim hanya ERGO ke alamat penyetoran ini" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "Jika Anda akan mengirim kurang dari {{minAmount, BigNumber}} {{assetTicker}} , Anda akan kehilangan uang itu.", "warningMinAmountTitle": "Jumlah minimum setoran adalah {{minAmount, BigNumber}} {{assetTicker}} , jumlah setoran maksimum adalah {{maxAmount}} {{assetTicker}}", "warningText": "Periksa apakah dompet atau pertukaran Anda menggunakan kontrak cerdas untuk menarik ETH. Kami tidak menerima transaksi semacam itu dan dapat mengembalikan uang mereka. Anda akan kehilangan uang itu.", @@ -302,7 +306,15 @@ "helpDescrText": "Setelah transaksi dikonfirmasi, gateway akan memproses transfer VST ke token di akun Waves Anda.", "helpDescrTitle": "Masukkan alamat ini ke klien atau dompet VST Anda", "warningMinAmountTitle": "Jumlah minimum deposit adalah {{minAmount, BigNumber}} {{assetTicker}}, jumlah deposit maksimum adalah {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Setelah transaksi dikonfirmasi, gateway akan memproses transfer WEST ke token di akun Waves Anda.", + "helpDescrText_copy": "Setelah transaksi dikonfirmasi, gateway akan memproses transfer WEST ke token di akun Waves Anda.", + "helpDescrTitle": "Masukkan alamat ini ke klien atau dompet WEST Anda", + "helpDescrTitle_copy": "Masukkan alamat ini ke klien atau dompet WEST Anda", + "warningMinAmountTitle": "Jumlah minimum deposit adalah {{minAmount, BigNumber}} {{assetTicker}}, jumlah deposit maksimum adalah {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Jumlah minimum deposit adalah {{minAmount, BigNumber}} {{assetTicker}}, jumlah deposit maksimum adalah {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Aset pintar adalah aset yang menyertakan skrip yang menetapkan kondisi untuk sirkulasi token. {div} [Kami tidak menyarankan Anda melakukan operasi dengan aset pintar jika Anda adalah pengguna yang tidak berpengalaman. Sebelum melakukan transaksi, harap baca informasi tentang aset dan skripnya dengan cermat.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Layanan VST sementara tidak tersedia. Coba lagi nanti." }, + "wavesEnterprise": { + "serverError_copy": "Layanan WEST sementara tidak tersedia. Coba lagi nanti." + }, "wtry": { "info": "Jika ada masalah dengan proses pembayaran, silakan hubungi tim dukungan Digilira — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line} [1. Navigasi aplikasi yang ditingkatkan dan antarmuka halaman mulai.]", "1_3_18": "{span.line} [1. Menambahkan login ke dompet menggunakan kunci pribadi.] \n{span.line} [2. Perubahan harga 24 jam dari token sekarang terikat ke pasangan token/WAVES.]", "1_3_19": "{span.line} [1. Gerbang Bancor telah diluncurkan.] \n {span.line} [2. Antarmuka menu pengguna telah ditingkatkan.]", - "1_3_2": "{span.line} [1. Gateway VST telah diluncurkan.] \n{span.line} [2. UI yang diperbaiki dan bug minor tambahan telah diperbaiki.]", + "1_3_2": "{span.line} [1. Gateway WEST telah diluncurkan.] \n{span.line} [2. UI yang diperbaiki dan bug minor tambahan telah diperbaiki.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line} [1. Tab dengan token kontes [wsoc.io] (https://wsoc.io) telah ditambahkan.] \n {span.line} [2. Dukungan bahasa Perancis ditambahkan.] \n {span.line} [3. Bug minor tambahan telah diperbaiki.]", "1_3_7": "{span.line}[1. Integrasi dengan [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Sekarang Anda dapat menilai token langsung di app.] \n {span.line}[2. Bug minor tambahan telah diperbaiki.]", diff --git a/locale/it/app.dex.json b/locale/it/app.dex.json index 11a7c87628..a46de99212 100644 --- a/locale/it/app.dex.json +++ b/locale/it/app.dex.json @@ -47,6 +47,7 @@ "last": "Ultimi", "limit": "Ordine limite", "market": "Ordine di mercato", + "marketPriceField": "Price", "matcherFee": "Spese", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "Si tratta di un ordine automatico di acquisto o di vendita ad un prezzo predeterminato.", "total": "Totale" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "crea un nuovo account", "or": "oppure", diff --git a/locale/it/app.utils.json b/locale/it/app.utils.json index c65c0971e4..694bb9be46 100644 --- a/locale/it/app.utils.json +++ b/locale/it/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Per favore, non inviare BNT da smart contracts! Non inviare token ERC20! Accettiamo esclusivamente Bancor." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Inserisci questo indirizzo nel tuo client BTC o nel tuo wallet", "warningMinAmountText": "Inviando meno di {{minAmount, BigNumber}} {{assetTicker}}, l'importo trasferito andrà perduto.", "warningMinAmountTitle": "Il deposito minimo è di {{minAmount, BigNumber}} {{assetTicker}}, il deposito massimo è di {{maxAmount}} {{assetTicker}}", "warningText": "Inviare qualunque altra valuta a questo indirizzo potrebbe risultare in una perdita di quanto inviato.", @@ -293,6 +295,8 @@ "warningTitle": "Invia esclusivamente ERGO a questo indirizzo" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "Inviando meno di {{minAmount, BigNumber}} {{assetTicker}}, l'importo trasferito andrà perduto.", "warningMinAmountTitle": "L'importo minimo di deposito è di {{minAmount, BigNumber}} {{assetTicker}}, l'importo massimo di deposito è di {{maxAmount}} {{assetTicker}}", "warningText": "Controlla se il tuo wallet o exchange utilizza smart contract per trasferire ETH. Non accettiamo questo tipo di transazioni e non ci sarà possibile rimborsarle. L'importo trasferito andrà perduto.", @@ -302,7 +306,15 @@ "helpDescrText": "Una volta che la transazione sarà confermata, il gateway processerà il trasferimento di VST in favore di un token nel tuo account Waves.", "helpDescrTitle": "Inserisci questo indirizzo nel tuo client VST o nel tuo wallet", "warningMinAmountTitle": "L'importo minimo di deposito è di {{minAmount, BigNumber}} {{assetTicker}}, l'importo massimo di deposito è di {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Una volta che la transazione sarà confermata, il gateway processerà il trasferimento di WEST in favore di un token nel tuo account Waves.", + "helpDescrText_copy": "Una volta che la transazione sarà confermata, il gateway processerà il trasferimento di WEST in favore di un token nel tuo account Waves.", + "helpDescrTitle": "Inserisci questo indirizzo nel tuo client WEST o nel tuo wallet", + "helpDescrTitle_copy": "Inserisci questo indirizzo nel tuo client WEST o nel tuo wallet", + "warningMinAmountTitle": "L'importo minimo di deposito è di {{minAmount, BigNumber}} {{assetTicker}}, l'importo massimo di deposito è di {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "L'importo minimo di deposito è di {{minAmount, BigNumber}} {{assetTicker}}, l'importo massimo di deposito è di {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Gli smart asset sono risorse che includono uno script in grado di definire le condizioni relative alla circolazione di un token.{div}[Si sconsiglia di eseguire operazioni con smart asset a meno di essere utenti esperti. Prima di effettuare una transazione, leggere attentamente le informazioni sull'asset e sul relativo script.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Servizio VST temporaneamente non disponibile. Riprova più tardi." }, + "wavesEnterprise": { + "serverError_copy": "Servizio WEST temporaneamente non disponibile. Riprova più tardi." + }, "wtry": { "info": "In caso di problema con la procedura di pagamento, per favore contattare il team di supporto di Digilira — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Miglioramento dell'interfaccia do navigazione della pagina iniziale.]", "1_3_18": "{span.line} [1. Aggiunto login al wallet utilizzando una chiave privata.]\n{span.line} [2. La modifica del prezzo di 24 ore di un token è ora associata alla coppia token/WAVES.]", "1_3_19": "{span.line} [1. Lancio del gateway Bancor.] \n{span.line} [2.Miglioramento dell'interfaccia del menu utente.]", - "1_3_2": "{span.line} [1. Lancio del gateway VST.] \n{span.line} [2. Miglioramento dell'interfaccia utente e risoluzione di altri bug minori.]", + "1_3_2": "{span.line} [1. Lancio del gateway WEST.] \n{span.line} [2. Miglioramento dell'interfaccia utente e risoluzione di altri bug minori.]", "1_3_20": "{span.line} [1. Miglioramento del sistema di archiviazione e ripristino di account da dispositivi di archiviazione locali (è necessario aggiornare [l'applicazione desktop](https://wavesplatform.com/technology/wallet)).] \n {span.line} [2. Risolto il problema relativo all'arrotondamento dei prezzi nel registro ordini.]", "1_3_5": "{span.line}[1. Aggiunto il tab al concorso [wsoc.io](https://wsoc.io) tokens.]\n{span.line}[2. Aggiunto il supporto alla lingua Francese.]\n{span.line}[3. Risoluzione di bug minori.]", "1_3_7": "{span.line} [1. Integrazione con [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Ora puoi valutare i token direttamente nell'app.] \n {span.line} [2. Sono stati corretti altri bug minori.]", diff --git a/locale/ja/app.dex.json b/locale/ja/app.dex.json index 14e23c5047..e320f27401 100644 --- a/locale/ja/app.dex.json +++ b/locale/ja/app.dex.json @@ -47,6 +47,7 @@ "last": "最終", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "手数料", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "合計" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "新しいアカウントを作成", "or": "または", diff --git a/locale/ja/app.utils.json b/locale/ja/app.utils.json index b0ea6ad10a..b950c2daa1 100644 --- a/locale/ja/app.utils.json +++ b/locale/ja/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "このアドレスをBTCクライアント、またはウォレットに入力してください", "warningMinAmountText": "{{minAmount, BigNumber}}以下の {{assetTicker}}を送金した場合、資産を紛失します。", "warningMinAmountTitle": "最小デポジットは {{minAmount, BigNumber}} {{assetTicker}}です", "warningText": "このアドレスに他の通貨を送信した場合、資産の消失につながる可能性があります。", @@ -293,6 +295,8 @@ "warningTitle": "このデポジットアドレスにはERGOのみ送信してください" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "あなたのウォレットと取引所がスマートコントラクトを用いて、ETHを引出していないか、確認してください。私たちはそのような形式のトランザクションを受け入れておらず、返金することもできません。あなたはあなたの資金を失います。", @@ -302,7 +306,15 @@ "helpDescrText": "トランザクションが承認されると、ゲートウェイはVSTの送信を進め、あなたのWavesアカウントにトークンが反映されます。", "helpDescrTitle": "このアドレスをVSTクライアント、またはウォレットに入力してください", "warningMinAmountTitle": "最小デポジット額は{{minAmount, BigNumber}} {{assetTicker}}、最大デポジット額は{{maxAmount}} {{assetTicker}}です" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "トランザクションが承認されると、ゲートウェイはWESTの送信を進め、あなたのWavesアカウントにトークンが反映されます。", + "helpDescrText_copy": "トランザクションが承認されると、ゲートウェイはWESTの送信を進め、あなたのWavesアカウントにトークンが反映されます。", + "helpDescrTitle": "このアドレスをWESTクライアント、またはウォレットに入力してください", + "helpDescrTitle_copy": "このアドレスをWESTクライアント、またはウォレットに入力してください", + "warningMinAmountTitle": "最小デポジット額は{{minAmount, BigNumber}} {{assetTicker}}、最大デポジット額は{{maxAmount}} {{assetTicker}}です" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "最小デポジット額は{{minAmount, BigNumber}} {{assetTicker}}、最大デポジット額は{{maxAmount}} {{assetTicker}}です" }, "dexScriptedPair": { "body": "スマートアセットはトークンの流通に対して条件を設定できるスクリプトを含むアセットです。{div}[もし、あなたが十分な知識を有していない場合、スマートアセットを利用することは推奨しません。トランザクションを作成する前に、アセットとスクリプトに関する情報を慎重に読んでください。]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "現在、一時的に、VSTのサービスがご利用いただけません。再度お試しください。" }, + "wavesEnterprise": { + "serverError_copy": "現在、一時的に、WESTのサービスがご利用いただけません。再度お試しください。" + }, "wtry": { "info": "送金処理に問題が生じた場合、Digiliraのサポートチームに連絡してください。— [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line} [1. アプリのナビゲーションとスタートページのインターフェースが改善されました。]", "1_3_18": "{span.line}[1. 秘密鍵によるログインが可能になりました。]{span.line}[2. 24時間以内のトークン価格の変化がトークン/WAVESペアに対応しました。]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line} [1. VSTのゲートウェイが追加されました。 \n{span.line} [2. UIの改善と、いくつかのマイナーなバグを修正しました。]", + "1_3_2": "{span.line} [1. WESTのゲートウェイが追加されました。 \n{span.line} [2. UIの改善と、いくつかのマイナーなバグを修正しました。]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. [wsoc.io](https://wsoc.io) コンテスト用のトークンタブが追加されました。]{span.line}[2. フランス語に対応しました。]{span.line}[3. 一部のマイナーバグを修正しました。]", "1_3_7": "{span.line}[1.[tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) に対応。アプリから直接トークンのレーティングが可能に。]{span.line}[2. 追加のマイナーバグを修正しました。]", diff --git a/locale/ko/app.dex.json b/locale/ko/app.dex.json index 2ed1a18269..acd7af6140 100644 --- a/locale/ko/app.dex.json +++ b/locale/ko/app.dex.json @@ -47,6 +47,7 @@ "last": "체결가", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "수수료", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "총금액" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "신규 계정을 생성하여", "or": "또는", diff --git a/locale/ko/app.utils.json b/locale/ko/app.utils.json index 185cb597a1..0accd6b266 100644 --- a/locale/ko/app.utils.json +++ b/locale/ko/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "이 주소를 BTC 클라이언트 또는 지갑에 입력하세요", "warningMinAmountText": "{{minAmount, BigNumber}} 미만의 {{assetTicker}}를 입금할 경우 귀하의 자산을 잃게 됩니다.", "warningMinAmountTitle": "최소 입금액은 {{minAmount, BigNumber}} {{assetTicker}} 입니다", "warningText": "이 주소로 다른 암호화폐를 전송할 경우 귀하의 자산을 잃게 됩니다.", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "ETH를 출금하려고 하는 지갑 또는 거래소가 Smart-Contracts를 사용하는지 확인하세요. 당사는 해당 트랜잭션을 수신하지 않으며 환불 또한 불가능합니다. 귀하의 자산을 잃게 됩니다.", @@ -302,7 +306,15 @@ "helpDescrText": "트랜잭션이 승인되면 게이트웨이가 귀하의 Waves 계정에서 VST를 토큰으로 전송하는 작업을 처리할 것입니다.", "helpDescrTitle": "이 주소를 VST 클라이언트 또는 지갑에 입력하세요", "warningMinAmountTitle": "최소 입금액은 {{minAmount, BigNumber}} {{assetTicker}} 이며 최대 입금액은 {{maxAmount}} {{assetTicker}} 입니다." - } + }, + "wavesGatewayWEST": { + "helpDescrText": "트랜잭션이 승인되면 게이트웨이가 귀하의 Waves 계정에서 WEST를 토큰으로 전송하는 작업을 처리할 것입니다.", + "helpDescrText_copy": "트랜잭션이 승인되면 게이트웨이가 귀하의 Waves 계정에서 WEST를 토큰으로 전송하는 작업을 처리할 것입니다.", + "helpDescrTitle": "이 주소를 WEST 클라이언트 또는 지갑에 입력하세요", + "helpDescrTitle_copy": "이 주소를 WEST 클라이언트 또는 지갑에 입력하세요", + "warningMinAmountTitle": "최소 입금액은 {{minAmount, BigNumber}} {{assetTicker}} 이며 최대 입금액은 {{maxAmount}} {{assetTicker}} 입니다." + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "최소 입금액은 {{minAmount, BigNumber}} {{assetTicker}} 이며 최대 입금액은 {{maxAmount}} {{assetTicker}} 입니다." }, "dexScriptedPair": { "body": "스마트 자산은 토큰의 순한을 위한 조건을 설정하는 스크립트가 포함된 자산입니다.{div}[숙련된 사용자가 아니라면 스마트 자산을 사용하는 작업을 수행하는 것을 권장하지 않습니다. 트랜잭션 전 해당 자산과 스크립트에 대한 정보를 반드시 확인하시기 바랍니다.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "VST 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요." }, + "wavesEnterprise": { + "serverError_copy": "WEST를 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요." + }, "wtry": { "info": "지불 처리와 관련된 문제가 있을 경우 Digilira 지원팀에 문의하세요 — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. 앱 네비게이션 및 시작 페이지 인터페이스 개선.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST 게이트웨이 런칭 완료.]\n{span.line}[2. UI 개선 및 기타 버그 픽스.]", + "1_3_2": "{span.line}[1. WEST 게이트웨이 런칭 완료.]\n{span.line}[2. UI 개선 및 기타 버그 픽스.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. [wsoc.io](https://wsoc.io) 컨테스트 토큰 탭 추가 완료.]\n{span.line}[2. 프랑스어 지원 추가.]\n{span.line}[3. 기타 버그 픽스.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com)과의 통합. 앱에서 토큰을 평가할 수 있습니다.]\n{span.line}[2. 기타 버그 픽스.]", diff --git a/locale/nl_NL/app.dex.json b/locale/nl_NL/app.dex.json index be711ca191..940dfacc29 100644 --- a/locale/nl_NL/app.dex.json +++ b/locale/nl_NL/app.dex.json @@ -47,6 +47,7 @@ "last": "Laatste", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Transactiekosten", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Totaal" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Maak een nieuw account aan", "or": "of", diff --git a/locale/nl_NL/app.utils.json b/locale/nl_NL/app.utils.json index 7774c78063..c5b1d401c0 100644 --- a/locale/nl_NL/app.utils.json +++ b/locale/nl_NL/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Stort BNT niet via smart contracts! Stort geen andere ERC20-tokens! Alleen Bancor is toegestaan." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Dit adres invoeren in uw BTC-client of wallet", "warningMinAmountText": "Als u minder dan {{minAmount, BigNumber}} {{assetTicker}} verstuurd raakt u dit geld kwijt.", "warningMinAmountTitle": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}", "warningText": "Het versturen van elke andere currency naar dit adres kan resulteren in het verlies van uw storting.", @@ -293,6 +295,8 @@ "warningTitle": "Stuur alleen ERGO naar dit stortingsadres" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "Als u minder dan {{minAmount, BigNumber}} {{assetTicker}} verstuurt, verliest u dat geld.", "warningMinAmountTitle": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}", "warningText": "Controleer of uw wallet of exchange smart-contracts gebruikt om ETH the withdrawen. Wij accepteren zulke transacties niet en kunnen dit niet terug betalen. U raakt op deze manier uw geld kwijt.", @@ -302,7 +306,15 @@ "helpDescrText": "Zodra de transactie bevestigd is zal de gateway de transactie behandelen en dit omzetten naar een VST token in uw Waves account.", "helpDescrTitle": "Dit adres invoeren in uw VST-client of wallet", "warningMinAmountTitle": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Zodra de transactie bevestigd is zal de gateway de transactie behandelen en dit omzetten naar een WEST token in uw Waves account.", + "helpDescrText_copy": "Zodra de transactie bevestigd is zal de gateway de transactie behandelen en dit omzetten naar een WEST token in uw Waves account.", + "helpDescrTitle": "Dit adres invoeren in uw WEST-client of wallet", + "helpDescrTitle_copy": "Dit adres invoeren in uw WEST-client of wallet", + "warningMinAmountTitle": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Het minimale stortingsbedrag is {{minAmount, BigNumber}} {{assetTicker}}, het maximale stortingsbedrag is {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart assets zijn assets die een script bevatten dat die voorwaarden van het token bepalen.{div}[We raden u niet aan om smart assets te gebruiken als u een onervaren gebruiker bent. Lees de informatie over het asset en het script zorgvuldig voordat u een transactie uitvoert.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST tijdelijk niet beschikbaar. Probeer het later opnieuw." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST tijdelijk niet beschikbaar. Probeer het later opnieuw." + }, "wtry": { "info": "Neem in geval van problemen met de betalingsverwerking contact op met het Digilira-ondersteuningsteam - [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Spam tokens and transactions have been hidden in client.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. WEST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/pl/app.dex.json b/locale/pl/app.dex.json index 0eac057692..437cb6f023 100644 --- a/locale/pl/app.dex.json +++ b/locale/pl/app.dex.json @@ -47,6 +47,7 @@ "last": "Ostatni", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Prowizja", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Ogółem" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "utwórz nowe konto", "or": "albo", diff --git a/locale/pl/app.utils.json b/locale/pl/app.utils.json index b3fcc63076..345e17dcf8 100644 --- a/locale/pl/app.utils.json +++ b/locale/pl/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Proszę nie deponować BNT z inteligentnych kontraktów (smart contracts)! Proszę nie deponować innych tokenów ERC20! Tylko Bancor dozwolony." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Wprowadź ten adres w swoim kliencie albo portfelu BTC", "warningMinAmountText": "Jeśli wyślesz mniej niż {{minAmount, BigNumber}} {{assetTicker}}, stracisz te pieniądze.", "warningMinAmountTitle": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}} , maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}", "warningText": "Przesłanie dowolnej innej waluty pod ten adres może spowodować utratę depozytu.", @@ -293,6 +295,8 @@ "warningTitle": "Wysyłaj tylko ERGO na ten adres depozytu" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "Jeśli wyślesz mniej niż {{minAmount, BigNumber}} {{assetTicker}} , stracisz te środki.", "warningMinAmountTitle": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}} , maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}", "warningText": "Sprawdź czy portfel lub giełda używają inteligentnych kontraktów (smart contracts) do wycofania ETH. Nie akceptujemy takich transakcji i nie możemy ich zwrócić. Stracisz te pieniądze.", @@ -302,7 +306,15 @@ "helpDescrText": "Jeżeli transakcja zostanie potwierdzona, system wymieni VST na tokeny w Twoim koncie Waves.", "helpDescrTitle": "Wprowadź ten adres w swoim kliencie albo portfelu VST", "warningMinAmountTitle": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}}, maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Jeżeli transakcja zostanie potwierdzona, system wymieni WEST na tokeny w Twoim koncie Waves.", + "helpDescrText_copy": "Jeżeli transakcja zostanie potwierdzona, system wymieni WEST na tokeny w Twoim koncie Waves.", + "helpDescrTitle": "Wprowadź ten adres w swoim kliencie albo portfelu WEST", + "helpDescrTitle_copy": "Wprowadź ten adres w swoim kliencie albo portfelu WEST", + "warningMinAmountTitle": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}}, maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Minimalna kwota depozytu to {{minAmount, BigNumber}} {{assetTicker}}, maksymalna kwota depozytu to {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart Assets (zasoby inteligentne) to aktywa, które zawierają skrypt określający warunki obiegu tokena. {div} [Nie zalecamy wykonywania operacji za pomocą inteligentnych zasobów, jeśli jesteś niedoświadczonym użytkownikiem. Przed dokonaniem transakcji przeczytaj uważnie informacje o takim aktywie i jego skrypcie.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Usługa VST jest tymczasowo niedostępna. Spróbuj ponownie później." }, + "wavesEnterprise": { + "serverError_copy": "Usługa WEST jest tymczasowo niedostępna. Spróbuj ponownie później." + }, "wtry": { "info": "Na wypadek problemów z procesem płatności, proszę kontaktować się z Digilira support team — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Ulepszona nawigacja aplikacji i interfejs strony startowej.]", "1_3_18": "{span.line} [1. Dodano login do portfela za pomocą klucza prywatnego.] \n {span.line} [2. 24-godzinna zmiana ceny tokena jest teraz powiązana z parą token / WAVES.]", "1_3_19": "{span.line} [1. Uruchomiono bramę Bancor.] \n {span.line} [2. Interfejs menu użytkownika został ulepszony.]", - "1_3_2": "{span.line} [1. Uruchomiono bramę (gateway) VST.] \n {span.line} [2. Poprawiony interfejs użytkownika i dodatkowo zostały naprawione drobne błędy.]", + "1_3_2": "{span.line} [1. Uruchomiono bramę (gateway) WEST.] \n {span.line} [2. Poprawiony interfejs użytkownika i dodatkowo zostały naprawione drobne błędy.]", "1_3_20": "{span.line} [1. Ulepszony system przechowywania i przywracania kont z lokalnego magazynu (potrzeba aktualizacji [aplikacji komputerowej] (https://wavesplatform.com/technology/wallet)).] \n {span.line} [2. Naprawiono zaokrąglanie cen w księdze zamówień.]", "1_3_5": "{span.line} [1. Dodano zakładkę z tokenami konkursowymi [wsoc.io] (https://wsoc.io).] \n {span.line} [2. Dodano obsługę języka francuskiego.] \n {span.line} [3. Dodatkowe drobne błędy zostały naprawione.]", "1_3_7": "{span.line} [1. Integracja z [tokenrating.wavesexplorer.com] (https://tokenrating.wavesexplorer.com) Teraz możesz oceniać tokeny bezpośrednio w aplikacji.] \n {span.line} [2. Dodatkowe drobne błędy zostały naprawione.]", diff --git a/locale/pt_BR/app.dex.json b/locale/pt_BR/app.dex.json index 7a483844c8..d84a65f322 100644 --- a/locale/pt_BR/app.dex.json +++ b/locale/pt_BR/app.dex.json @@ -47,6 +47,7 @@ "last": "Last", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Criar uma nova conta", "or": "ou", diff --git a/locale/pt_BR/app.utils.json b/locale/pt_BR/app.utils.json index ccb86c2b94..39a4f58e57 100644 --- a/locale/pt_BR/app.utils.json +++ b/locale/pt_BR/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your BTC client or wallet", "warningMinAmountText": "Se você enviar menos de {{minAmount, BigNumber}} {{assetTicker}}, você perderá esse dinheiro.", "warningMinAmountTitle": "O depósito mínimo é {{minAmount, BigNumber}} {{assetTicker}}", "warningText": "Se enviar qualquer outra moeda para este endereço, poderá resultar na perda do seu depósito.", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Verifique se a sua carteira ou exchange usa smart contracts para transferir ETH. Nós não aceitamos essas transações e você perderá esse dinheiro, pois não podemos reembolsar.", @@ -302,7 +306,15 @@ "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrText_copy": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your WEST client or wallet", + "helpDescrTitle_copy": "Enter this address into your WEST client or wallet", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart assets are assets that include a script that sets the conditions for the circulation of the token.{div}[We do not recommend you perform operations with smart assets if you are an inexperienced user. Before making a transaction, please read the information about the asset and its script carefully.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST temporarily unavailable. Try again later." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST temporarily unavailable. Try again later." + }, "wtry": { "info": "Em caso de problemas com o processamento de pagamentos, entre em contato com a equipe de suporte da Digilira — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. WEST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/pt_PT/app.dex.json b/locale/pt_PT/app.dex.json index fdefb0cd25..9cad1ab1d8 100644 --- a/locale/pt_PT/app.dex.json +++ b/locale/pt_PT/app.dex.json @@ -47,6 +47,7 @@ "last": "Last", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Fee", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Total" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Create a new account", "or": "or", diff --git a/locale/pt_PT/app.utils.json b/locale/pt_PT/app.utils.json index e97420476b..803d6ce37c 100644 --- a/locale/pt_PT/app.utils.json +++ b/locale/pt_PT/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your BTC client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Sending any other currency to this address may result in the loss of your deposit.", @@ -293,6 +295,8 @@ "warningTitle": "Send only ERGO to this deposit address" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Check if your wallet or exchange uses smart-contracts to withdraw ETH. We do not accept such transactions and can’t refund them. You will lose that money.", @@ -302,7 +306,15 @@ "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of VST to a token in your Waves account.", "helpDescrTitle": "Enter this address into your VST client or wallet", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrText_copy": "Once the transaction is confirmed, the gateway will process the transfer of WEST to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your WEST client or wallet", + "helpDescrTitle_copy": "Enter this address into your WEST client or wallet", + "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Smart assets are assets that include a script that sets the conditions for the circulation of the token.{div}[We do not recommend you perform operations with smart assets if you are an inexperienced user. Before making a transaction, please read the information about the asset and its script carefully.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Service VST temporarily unavailable. Try again later." }, + "wavesEnterprise": { + "serverError_copy": "Service WEST temporarily unavailable. Try again later." + }, "wtry": { "info": "In case of problems with payment processing, please contact the Digilira support team — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Improved app navigation and start page interface.]", "1_3_18": "{span.line}[1. Added login to wallet using a private key.]\n{span.line}[2. The 24 hours price change of a token is now bound to token/WAVES pair.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", + "1_3_2": "{span.line}[1. WEST gateway has been launched.]\n{span.line}[2. Improved UI and additional minor bugs have been fixed.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. A tab with [wsoc.io](https://wsoc.io) contest tokens has been added.]\n{span.line}[2. French language support added.]\n{span.line}[3. Additional minor bugs have been fixed.]", "1_3_7": "{span.line}[1. Integration with [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Now you can rate tokens directly in the app.]\n{span.line}[2. Additional minor bugs have been fixed.]", diff --git a/locale/ru/app.dex.json b/locale/ru/app.dex.json index 84a038b7f7..8c74dc219e 100644 --- a/locale/ru/app.dex.json +++ b/locale/ru/app.dex.json @@ -47,6 +47,7 @@ "last": "Last", "limit": "Лимит Ордер", "market": "Маркет Ордер", + "marketPriceField": "Цена", "matcherFee": "Комис.", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "Это автоматически действующий ордер на покупку или продажу по заранее установленной цене", "total": "Сумма" }, + "createorder": { + "yourBalance": "Ваш баланс" + }, "demo": { "createAccount": "создайте новый аккаунт", "or": "или", diff --git a/locale/ru/app.utils.json b/locale/ru/app.utils.json index 4c81f964e6..c1be377ad9 100644 --- a/locale/ru/app.utils.json +++ b/locale/ru/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Не отправляйте BNT со смарт-контрактов! Не отправляйте другие ERC20-токены! Только Bancor." }, "wavesGatewayBTC": { + "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит BTC-токен на ваш аккаунт Waves.", + "helpDescrTitle": "Введите этот адрес в ваш BTC клиент или кошелёк.", "warningMinAmountText": "Если вы отправите меньше чем {{minAmount, BigNumber}} {{assetTicker}}, вы потеряете деньги.", "warningMinAmountTitle": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}", "warningText": "Отправка любой другой валюты на этот адрес может повлечь за собой потерю средств.", @@ -293,6 +295,8 @@ "warningTitle": "Отправляйте только ERGO на этот адрес" }, "wavesGatewayETH": { + "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит ETH-токен на ваш аккаунт Waves.", + "helpDescrTitle": "Введите этот адрес в ваш ETH клиент или кошелёк.", "warningMinAmountText": "Если вы отправите меньше чем {{minAmount, BigNumber}} {{assetTicker}}, вы потеряете деньги.", "warningMinAmountTitle": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}", "warningText": "Проверьте, не использует ли ваш кошелёк или биржа смарт-контракты для отправки ETH. Мы не принимаем такие переводы и не можем возместить их. Вы потеряете эти деньги.", @@ -302,7 +306,15 @@ "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит VST-токен на ваш аккаунт Waves.", "helpDescrTitle": "Введите этот адрес в ваш VST клиент или кошелёк.", "warningMinAmountTitle": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "Как только транзакция будет подтверждена, шлюз отправит WEST-токен на ваш аккаунт Waves.", + "helpDescrText_copy": "Как только транзакция будет подтверждена, шлюз отправит WEST-токен на ваш аккаунт Waves.", + "helpDescrTitle": "Введите этот адрес в ваш WEST клиент или кошелёк.", + "helpDescrTitle_copy": "Введите этот адрес в ваш WEST клиент или кошелёк.", + "warningMinAmountTitle": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Минимальная сумма депозита {{minAmount, BigNumber}} {{assetTicker}}, максимальная сумма депозита {{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "Смарт-ассеты — это ассеты со скриптом, который устанавливает условия обращения данного токена.{div}[Мы не рекомендуем совершать операции со смарт-ассетами, если вы неопытный пользователь. Перед совершением транзакции изучите информацию об ассете и его скрипт.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "Сервис VST временно недоступен. Попробуйте, пожалуйста, позже." }, + "wavesEnterprise": { + "serverError_copy": "Сервис WEST временно недоступен. Попробуйте, пожалуйста, позже." + }, "wtry": { "info": "Если у вас возникнут проблемы с процессингом, пожалуйста, обратитесь в службу поддержки Digilira — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Улучшена навигация приложения и интерфейс стартовых страниц.]", "1_3_18": "{span.line}[1. Добавлен импорт из приватного ключа.]\n{span.line}[2. Изменение цены токена теперь считается по паре с WAVES.]", "1_3_19": "{span.line}[1. Запущен шлюз Bancor]\n{span.line}[2. Улучшен интерфейс меню пользователя.]", - "1_3_2": "{span.line}[1. Запущен шлюз VST.]\n{span.line}[2. Улучшен UI и исправлено несколько багов.]", + "1_3_2": "{span.line}[1. Запущен шлюз WEST.]\n{span.line}[2. Улучшен UI и исправлено несколько багов.]", "1_3_20": "{span.line}[1. Улучшена система хранения и восстановления аккаунтов из локального хранилища (Необходимо обновить [desktop-приложение](https://wavesplatform.com/technology/wallet))]\n{span.line}[2. Исправлено округление цен в ордербуке]", "1_3_5": "{span.line}[1. Добавлена вкладка с токенами конкурса [wsoc.io](https://wsoc.io)]\n{span.line}[2. Добавлена поддержка франзуского языка]\n{span.line}[3. Исправлены мелкие ошибки]", "1_3_7": "{span.line}[1. Интеграция с [tokenrating.wavesexplorer.com](https://tokenrating.wavesexplorer.com) Теперь вы можете голосовать за токены прямо в приложении]\n{span.line}[2. Исправлены мелкие ошибки]", diff --git a/locale/tr/app.dex.json b/locale/tr/app.dex.json index e66eb72851..a0a235523c 100644 --- a/locale/tr/app.dex.json +++ b/locale/tr/app.dex.json @@ -47,6 +47,7 @@ "last": "Son", "limit": "Limit Order", "market": "Market Order", + "marketPriceField": "Price", "matcherFee": "Komisyon", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "This is an automatic buy or sell order at a predetermined price", "total": "Toplam" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "Yeni bir hesap oluştur", "or": "veya", diff --git a/locale/tr/app.utils.json b/locale/tr/app.utils.json index 0ad3da5bf3..3410146407 100644 --- a/locale/tr/app.utils.json +++ b/locale/tr/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "Please do not deposit BNT from smart contracts! Do not deposit other ERC20 tokens! Only Bancor is allowed." }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "Bu adresi BTC cüzdanına ya da uygulamasına giriniz.", "warningMinAmountText": "{{minAmount, BigNumber}} {{assetTicker}}'nin altında gönderim yaparsanız paranızı kaybedersiniz.", "warningMinAmountTitle": "Minimum yatırma tutarı {{minAmount, BigNumber}} {{assetTicker}}'dir", "warningText": "Bu adrese başka bir kripto para gönderilmesi kayıplara yol açabilir.", @@ -293,6 +295,8 @@ "warningTitle": "Bu adrese ERGO dışında bir kripto para göndermeyin" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "If you will send less than {{minAmount, BigNumber}} {{assetTicker}}, you will lose that money.", "warningMinAmountTitle": "The minimum amount of deposit is {{minAmount, BigNumber}} {{assetTicker}}, the maximum amount of deposit is {{maxAmount}} {{assetTicker}}", "warningText": "Cüzdanınızın veya Kripto para borsasının ETH çekimlerinde akıllı kontrat kullanıp kullanmadığını kontrol edin. Akıllı kontratlar tarafından gelen transferleri kabul edemiyoruz. Paranızı kaybedersiniz.", @@ -302,7 +306,15 @@ "helpDescrText": "İşlem onaylandıktan sonra VSTlar Waves adresinize geçit tarafından gönderilir.", "helpDescrTitle": "Bu adresi VST cüzdanına ya da uygulamasına giriniz.", "warningMinAmountTitle": "Minimum yatırma tutarı {{minAmount, BigNumber}} {{assetTicker}}'dir. Maksimum yatırma tutarı ise {{maxAmount}} {{assetTicker}}'dir." - } + }, + "wavesGatewayWEST": { + "helpDescrText": "İşlem onaylandıktan sonra WESTlar Waves adresinize geçit tarafından gönderilir.", + "helpDescrText_copy": "İşlem onaylandıktan sonra WESTlar Waves adresinize geçit tarafından gönderilir.", + "helpDescrTitle": "Bu adresi WEST cüzdanına ya da uygulamasına giriniz.", + "helpDescrTitle_copy": "Bu adresi WEST cüzdanına ya da uygulamasına giriniz.", + "warningMinAmountTitle": "Minimum yatırma tutarı {{minAmount, BigNumber}} {{assetTicker}}'dir. Maksimum yatırma tutarı ise {{maxAmount}} {{assetTicker}}'dir." + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "Minimum yatırma tutarı {{minAmount, BigNumber}} {{assetTicker}}'dir. Maksimum yatırma tutarı ise {{maxAmount}} {{assetTicker}}'dir." }, "dexScriptedPair": { "body": "Akıllı kripto paralar, kripto paraların dolaşım standartlarını belirleryen scriptlerden oluşur. {div}[Deneyimsiz bir kullanıcı iseniz akıllı kripto paralar ile işlem yapmanızı önermiyoruz. Bir işlem yapmadan önce akıllı kripto paralar ve Script'ler ile ilgili bilgileri dikkatlice okuyunuz.]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "VST geçici olarak hizmet dışıdır. Daha sonra tekrar deneyiniz." }, + "wavesEnterprise": { + "serverError_copy": "WEST geçici olarak hizmet dışıdır. Daha sonra tekrar deneyiniz." + }, "wtry": { "info": "Ödemeler konusunda herhangi bir problem yaşarsanız — [destek@digilira.com](mailto:destek@digilira.com) 'a e-posta gönderebilirsiniz." }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1. Açılış sayfası güncellendi ve sayfalar arası dolaşım geliştirildi.]", "1_3_18": "{span.line}[1. Özel anahtar ile giriş eklendi]\n{span.line}[2. Bir token'in 24 saatlik değişimi token/WAVES olarak ayarlandı.]", "1_3_19": "{span.line}[1. Bancor gateway has been launched.]\n{span.line}[2. User menu interface has been improved.]", - "1_3_2": "{span.line}[1. VST geçidi faaliyete alındı.]\n{span.line}[2. Görsel tasarım geliştirildi ve ufak hatalar giderildi.]", + "1_3_2": "{span.line}[1. WEST geçidi faaliyete alındı.]\n{span.line}[2. Görsel tasarım geliştirildi ve ufak hatalar giderildi.]", "1_3_20": "{span.line}[1. Improved system for storing and restoring accounts from local storage (Need to update the [desktop application](https://wavesplatform.com/technology/wallet)).]\n{span.line}[2. Fixed rounding of prices in the orderbook.]", "1_3_5": "{span.line}[1. [wsoc.io](https://wsoc.io) Yarışma kripto paraları eklendi.]\n{span.line}[2. Fransızca desteği eklendi.]\n{span.line}[3. Ufak hatalar giderildi.]", "1_3_7": "{span.line}[1. [tokenrating.wavesexplorer.com] entegrasyonu (https://tokenrating.wavesexplorer.com) Artık uygulamadan kripto paralar için derecelendirme puanı verebilirsiniz.]\n{span.line}[2. Ufak hatalar giderildi.]", diff --git a/locale/zh_CN/app.dex.json b/locale/zh_CN/app.dex.json index f8e6fe28e7..3e7bddf2f2 100644 --- a/locale/zh_CN/app.dex.json +++ b/locale/zh_CN/app.dex.json @@ -47,6 +47,7 @@ "last": "最新交易价", "limit": "限价单", "market": "市场订单", + "marketPriceField": "Price", "matcherFee": "费用", "notifications": { "error": { @@ -74,6 +75,9 @@ "stopPriceHelp": "这是一个以预定价格自动买卖的订单", "total": "总额" }, + "createorder": { + "yourBalance": "Your balance" + }, "demo": { "createAccount": "创建新账户", "or": "或", diff --git a/locale/zh_CN/app.utils.json b/locale/zh_CN/app.utils.json index 4fdf0cbff9..16cf503a86 100644 --- a/locale/zh_CN/app.utils.json +++ b/locale/zh_CN/app.utils.json @@ -279,6 +279,8 @@ "warningTitle": "请不要从智能合约中存入BNT!不要存入其他ERC20代币!只允许Bancor。" }, "wavesGatewayBTC": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of BTC to a token in your Waves account.", + "helpDescrTitle": "在您的BTC客户端或钱包中输入此地址", "warningMinAmountText": "如果您发送的费用低于{{minAmount, BigNumber}} {{assetTicker}},您将失去这笔钱。", "warningMinAmountTitle": "最低存款金额为{{minAmount,BigNumber}} {{assetTicker}} ,最高存款金额为{{maxAmount}} {{assetTicker}}", "warningText": "如通过该地址发送任何其他代币,您的代币将失去。", @@ -293,6 +295,8 @@ "warningTitle": "仅将ERGO发送至此存款地址" }, "wavesGatewayETH": { + "helpDescrText": "Once the transaction is confirmed, the gateway will process the transfer of ETH to a token in your Waves account.", + "helpDescrTitle": "Enter this address into your ETH client or wallet", "warningMinAmountText": "如果你发送少于{{minAmount, BigNumber}} {{assetTicker}},你将失去这笔钱。", "warningMinAmountTitle": "最低存款金额为{{minAmount,BigNumber}} {{assetTicker}} ,最高存款金额为{{maxAmount}} {{assetTicker}}", "warningText": "检查您的钱包或交易所是否为收回ETH使用智能合约。我们不接受这种交易,也不能退款。您将会失去这笔钱。", @@ -302,7 +306,15 @@ "helpDescrText": "确认交易后,网关将处理将VST转移到Waves帐户中的代币。", "helpDescrTitle": "在您的VST客户端或钱包中输入此地址", "warningMinAmountTitle": "最低存款金额为{{minAmount, BigNumber}} {{assetTicker}},最高存款金额为{{maxAmount}} {{assetTicker}}" - } + }, + "wavesGatewayWEST": { + "helpDescrText": "确认交易后,网关将处理将WEST转移到Waves帐户中的代币。", + "helpDescrText_copy": "确认交易后,网关将处理将WEST转移到Waves帐户中的代币。", + "helpDescrTitle": "在您的WEST客户端或钱包中输入此地址", + "helpDescrTitle_copy": "在您的WEST客户端或钱包中输入此地址", + "warningMinAmountTitle": "最低存款金额为{{minAmount, BigNumber}} {{assetTicker}},最高存款金额为{{maxAmount}} {{assetTicker}}" + }, + "wavesGatewayWEST:warningMinAmountTitle_copy": "最低存款金额为{{minAmount, BigNumber}} {{assetTicker}},最高存款金额为{{maxAmount}} {{assetTicker}}" }, "dexScriptedPair": { "body": "智能资产是包含脚本的资产,该脚本设置令牌流通的条件。 {div}[如果您是没有经验的用户,我们不建议您使用智能资产执行操作。在进行交易之前,请仔细阅读有关资产及其脚本的信息。]", @@ -483,6 +495,9 @@ "vostok": { "serverError": "VST服务暂时无法使用。稍后再试。" }, + "wavesEnterprise": { + "serverError_copy": "WEST服务暂时无法使用。稍后再试。" + }, "wtry": { "info": "如果付款处理出了问题,请联系Digilira支持团队 — [support@digilira.com](mailto:support@digilira.com)" }, @@ -969,7 +984,7 @@ "1_3_0": "{span.line}[1。改进了应用程序导航和起始页面界面。]", "1_3_18": "{span.line} [1。使用私钥添加了对钱包的登录。] \n {span.line} [2。令牌的24小时价格变化现在绑定到代币/ WAVES对。]", "1_3_19": "{span.line} [1。 Bancor网关已经推出。] \n {span.line} [2。用户菜单界面已得到改进。]", - "1_3_2": "{span.line} [1。 VST网关已经推出。] \n {span.line} [2。改进的用户界面和其他小错误已得到修复。]", + "1_3_2": "{span.line} [1。 WEST网关已经推出。] \n {span.line} [2。改进的用户界面和其他小错误已得到修复。]", "1_3_20": "{span.line} [1。改进了从本地存储中存储和恢复帐户的系统(需要更新[桌面应用程序](https://wavesplatform.com/technology/wallet))。 \n {span.line} [2。修正了订单中价格的四舍五入。]", "1_3_5": "{span.line} [1。已添加包含[wsoc.io](https://wsoc.io)竞赛代币的标签。 \n {span.line} [2。增加了法语支持。] \n {span.line} [3。其他小错误已得到修复。]", "1_3_7": "{span.line} [1。与[tokenrating.wavesexplorer.com]集成(https://tokenrating.wavesexplorer.com)现在您可以直接在应用程序中对令牌进行评分。 \n {span.line} [2。其他小错误已得到修复。]",