From 2bd96d05d7fcb26bc98143e01f863671124a92b5 Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Wed, 18 Dec 2024 13:27:23 +0800 Subject: [PATCH 01/10] fix: added default values to currency block --- .../trade_definition_tradeoptions.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index ff8b00c1..f96aaa01 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -242,12 +242,18 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { const { currency, landing_company_shortcode } = DBotStore.instance.client; if (isAuthorizing$.getValue()) return; account_limits.getStakePayoutLimits(currency, landing_company_shortcode, this.selected_market).then(limits => { - if (!this.getField('AMOUNT_LIMITS')) { + const restricted_trade_types = ['multiplier', 'accumulator']; + const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); + const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); + if (restricted_trade_types.includes(this.selected_trade_type)) { + return; + } + if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) { return; } this.amount_limits = limits; const { max_payout, min_stake } = limits; - if (max_payout && min_stake && this.selected_trade_type !== 'multiplier') { + if (max_payout && min_stake) { runIrreversibleEvents(() => { this.setFieldValue( localize('(min: {{min_stake}} - max: {{max_payout}})', { @@ -257,6 +263,9 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { 'AMOUNT_LIMITS' ); }); + if (CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) { + CURRENCY_CHILD_BLOCK.setValue(this.amount_limits?.min_stake); + } } }); }, From fe295b1f19473aa57d83df9603aaea2b1a4a08ad Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Wed, 18 Dec 2024 16:11:22 +0800 Subject: [PATCH 02/10] fix: added default values to currency block --- .../Binary/Trade Definition/trade_definition_tradeoptions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index f96aaa01..dd66b03f 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -243,11 +243,11 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { if (isAuthorizing$.getValue()) return; account_limits.getStakePayoutLimits(currency, landing_company_shortcode, this.selected_market).then(limits => { const restricted_trade_types = ['multiplier', 'accumulator']; - const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); - const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); if (restricted_trade_types.includes(this.selected_trade_type)) { return; } + const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); + const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) { return; } From 50662cbdf81faf316c02f6e6e709f13a2291f5fb Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Wed, 18 Dec 2024 16:11:43 +0800 Subject: [PATCH 03/10] fix: added default values to currency block --- .../Trade Definition/trade_definition_tradeoptions.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index dd66b03f..0d1bb2db 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -243,14 +243,10 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { if (isAuthorizing$.getValue()) return; account_limits.getStakePayoutLimits(currency, landing_company_shortcode, this.selected_market).then(limits => { const restricted_trade_types = ['multiplier', 'accumulator']; - if (restricted_trade_types.includes(this.selected_trade_type)) { - return; - } + if (restricted_trade_types.includes(this.selected_trade_type)) return; const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); - if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) { - return; - } + if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) return; this.amount_limits = limits; const { max_payout, min_stake } = limits; if (max_payout && min_stake) { From 631f3430d812e7a643c87a41e95c128c09cef63d Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Wed, 18 Dec 2024 16:13:25 +0800 Subject: [PATCH 04/10] fix: added default values to currency block --- .../Binary/Trade Definition/trade_definition_tradeoptions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index 0d1bb2db..ab1cc007 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -242,8 +242,8 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { const { currency, landing_company_shortcode } = DBotStore.instance.client; if (isAuthorizing$.getValue()) return; account_limits.getStakePayoutLimits(currency, landing_company_shortcode, this.selected_market).then(limits => { - const restricted_trade_types = ['multiplier', 'accumulator']; - if (restricted_trade_types.includes(this.selected_trade_type)) return; + const not_required_trade_types = ['multiplier', 'accumulator']; + if (not_required_trade_types.includes(this.selected_trade_type)) return; const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) return; From e4a923f27648de1b9ca0052e4d696219c8381dd1 Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Wed, 18 Dec 2024 16:14:29 +0800 Subject: [PATCH 05/10] fix: added default values to currency block --- .../Binary/Trade Definition/trade_definition_tradeoptions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index ab1cc007..323b7a68 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -242,8 +242,8 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { const { currency, landing_company_shortcode } = DBotStore.instance.client; if (isAuthorizing$.getValue()) return; account_limits.getStakePayoutLimits(currency, landing_company_shortcode, this.selected_market).then(limits => { - const not_required_trade_types = ['multiplier', 'accumulator']; - if (not_required_trade_types.includes(this.selected_trade_type)) return; + const unsupported_trade_types = ['multiplier', 'accumulator']; + if (unsupported_trade_types.includes(this.selected_trade_type)) return; const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) return; From f758b6ffc9351a2e1f20661613e53488376acf66 Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Thu, 19 Dec 2024 10:32:55 +0800 Subject: [PATCH 06/10] fix: added default values to currency block --- .../Trade Definition/trade_definition_tradeoptions.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index 323b7a68..cbb6b60a 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -244,9 +244,9 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { account_limits.getStakePayoutLimits(currency, landing_company_shortcode, this.selected_market).then(limits => { const unsupported_trade_types = ['multiplier', 'accumulator']; if (unsupported_trade_types.includes(this.selected_trade_type)) return; - const CURRENCY_BLOCK = this.getField('CURRENCY_LIST')?.getSourceBlock(); - const CURRENCY_CHILD_BLOCK = CURRENCY_BLOCK?.getChildren()[1]?.getField('NUM'); - if (!this.getField('AMOUNT_LIMITS') && CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) return; + const currency_block = this.getField('CURRENCY_LIST')?.getSourceBlock(); + const currency_child_block = currency_block?.getChildren()[1]?.getField('NUM'); + if (!this.getField('AMOUNT_LIMITS') && currency_block && currency_child_block) return; this.amount_limits = limits; const { max_payout, min_stake } = limits; if (max_payout && min_stake) { @@ -259,8 +259,8 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { 'AMOUNT_LIMITS' ); }); - if (CURRENCY_BLOCK && CURRENCY_CHILD_BLOCK) { - CURRENCY_CHILD_BLOCK.setValue(this.amount_limits?.min_stake); + if (currency_block && currency_child_block) { + currency_child_block.setValue(this.amount_limits?.min_stake); } } }); From 210d172d72977f42c2a4c755ce560ab28f1ceec3 Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Thu, 19 Dec 2024 10:58:15 +0800 Subject: [PATCH 07/10] fix: added default values to currency block --- .../Binary/Trade Definition/trade_definition_tradeoptions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index cbb6b60a..283527e1 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -245,7 +245,7 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { const unsupported_trade_types = ['multiplier', 'accumulator']; if (unsupported_trade_types.includes(this.selected_trade_type)) return; const currency_block = this.getField('CURRENCY_LIST')?.getSourceBlock(); - const currency_child_block = currency_block?.getChildren()[1]?.getField('NUM'); + const currency_child_block = currency_block?.getChildren()?.[1]?.getField('NUM'); if (!this.getField('AMOUNT_LIMITS') && currency_block && currency_child_block) return; this.amount_limits = limits; const { max_payout, min_stake } = limits; From 8a9e5b2d8c4790ddfa536205aab2ba93c6d1a77b Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Thu, 19 Dec 2024 14:28:32 +0800 Subject: [PATCH 08/10] fix: null check --- .../Binary/Trade Definition/trade_definition_tradeoptions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index 283527e1..eb201a9e 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -246,7 +246,7 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { if (unsupported_trade_types.includes(this.selected_trade_type)) return; const currency_block = this.getField('CURRENCY_LIST')?.getSourceBlock(); const currency_child_block = currency_block?.getChildren()?.[1]?.getField('NUM'); - if (!this.getField('AMOUNT_LIMITS') && currency_block && currency_child_block) return; + if (!this.getField('AMOUNT_LIMITS') && !currency_block && !currency_child_block) return; this.amount_limits = limits; const { max_payout, min_stake } = limits; if (max_payout && min_stake) { From 4e9ce9f47a98faaa097b43f458d174de0830bfec Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Fri, 20 Dec 2024 14:29:08 +0800 Subject: [PATCH 09/10] fix: validation on blocks --- .../trade_definition_tradeoptions.js | 127 +++++++++++------- 1 file changed, 80 insertions(+), 47 deletions(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index eb201a9e..ef00769d 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -84,6 +84,11 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { const new_value = value.includes('.') ? parseFloat(`${value}`) : parseInt(`${value}`); input_target.setFieldValue(new_value.toString(), 'NUM'); } + if (input.name === 'AMOUNT') { + this.validateAmount(value); + } else if (input.name === 'DURATION') { + this.validateDuration(value); + } }); } @@ -535,57 +540,85 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { return container; }, restricted_parents: ['trade_definition'], - getRequiredValueInputs() { - return { - AMOUNT: input => { - const input_number = Number(input); - const max_payout = this.amount_limits?.max_payout; - const min_stake = this.amount_limits?.min_stake; - if (min_stake && input_number < min_stake) { - this.error_message = localize("Please enter a stake amount that's at least {{min_stake}}.", { - min_stake, - }); - return input_number < min_stake; - } - if (max_payout && input_number > max_payout) { - this.error_message = localize("Please enter a payout amount that's lower than {{max_payout}}.", { - max_payout, - }); - return input_number > max_payout; - } - this.error_message = localize('Amount must be a positive number.'); - return !isNaN(input_number) && input_number <= 0; - }, - DURATION: input => { - const input_number = Number(input); + validateAmount(input) { + const input_number = Number(input); + const max_payout = this.amount_limits?.max_payout; + const min_stake = this.amount_limits?.min_stake; + const highlight_class = 'block--error-highlighted'; + if (min_stake && input_number < min_stake) { + if (!this.error_message) { + this.error_message = localize("Please enter a stake amount that's at least {{min_stake}}.", { + min_stake, + }); + this.svgGroup_?.classList?.add(highlight_class); + } else { + this.error_message = ''; + this.svgGroup_?.classList?.remove(highlight_class); + } + return input_number < min_stake; + } + if (input_number > max_payout) { + if (!this.error_message) { + this.error_message = localize("Please enter a payout amount that's lower than {{max_payout}}.", { + max_payout, + }); + this.svgGroup_?.classList?.add(highlight_class); + } else { + this.error_message = ''; + this.svgGroup_?.classList?.remove(highlight_class); + } + return input_number > max_payout; + } + this.error_message = localize('Amount must be a positive number.'); + return !isNaN(input_number) && input_number <= 0; + }, + validateDuration(input) { + const input_number = Number(input); + if (isNaN(input_number) || !this.durations.length) { + return false; + } - if (isNaN(input_number) || !this.durations.length) { - return false; + const duration = this.durations.find(d => d.unit === this.selected_duration); + const highlight_class = 'block--error-highlighted'; + if (duration) { + const { min, max } = duration; + const is_valid_duration = input_number >= min && input_number <= max; + if (min === max) { + if (!this.error_message) { + this.error_message = localize( + 'Duration value is not allowed. To run the bot, please enter {{min}}.', + { min } + ); + this.svgGroup_?.classList?.add(highlight_class); + } else { + this.error_message = ''; + this.svgGroup_?.classList?.remove(highlight_class); } - - const duration = this.durations.find(d => d.unit === this.selected_duration); - - if (duration) { - const { min, max } = duration; - const is_valid_duration = input_number >= min && input_number <= max; - - if (min === max) { - this.error_message = localize( - 'Duration value is not allowed. To run the bot, please enter {{min}}.', - { min } - ); - } else { - this.error_message = localize( - 'Duration value is not allowed. To run the bot, please enter a value between {{min}} to {{max}}.', - { min, max } - ); - } - - return !is_valid_duration; + } else if (input_number < min || input_number > max) { + if (!this.error_message) { + this.error_message = localize( + 'Duration value is not allowed. To run the bot, please enter a value between {{min}} to {{max}}.', + { min, max } + ); + this.svgGroup_?.classList?.add(highlight_class); + } else { + this.error_message = ''; + this.svgGroup_.classList?.remove(highlight_class); } + } else { + this.error_message = ''; + this.svgGroup_?.classList?.remove(highlight_class); + } - return false; - }, + return !is_valid_duration; + } + + return false; + }, + getRequiredValueInputs() { + return { + AMOUNT: input => this.validateAmount(input), + DURATION: input => this.validateDuration(input), }; }, }; From 48c2c7027f4eb5d4cd8086269a3821e666acc082 Mon Sep 17 00:00:00 2001 From: Rupato Braganza Date: Fri, 20 Dec 2024 14:55:02 +0800 Subject: [PATCH 10/10] fix: validation on blocks --- .../Binary/Trade Definition/trade_definition_tradeoptions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js index ef00769d..143aa4d4 100755 --- a/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js +++ b/src/external/bot-skeleton/scratch/blocks/Binary/Trade Definition/trade_definition_tradeoptions.js @@ -603,7 +603,7 @@ window.Blockly.Blocks.trade_definition_tradeoptions = { this.svgGroup_?.classList?.add(highlight_class); } else { this.error_message = ''; - this.svgGroup_.classList?.remove(highlight_class); + this.svgGroup_?.classList?.remove(highlight_class); } } else { this.error_message = '';