Skip to content

Commit 97cb288

Browse files
authored
Merge pull request #191 from shafin-deriv/shafin/BOT-2608/fix-context-menu-issue
fix: context menu issues
2 parents b002f99 + bb05e22 commit 97cb288

File tree

4 files changed

+35
-58
lines changed

4 files changed

+35
-58
lines changed

Diff for: src/external/bot-skeleton/scratch/dbot.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -402,22 +402,20 @@ class DBot {
402402
* Disable blocks outside of any main or independent blocks.
403403
*/
404404
disableStrayBlocks() {
405-
const isMainBlock = block_type => config().mainBlocks.indexOf(block_type) >= 0;
406405
const top_blocks = this.workspace.getTopBlocks();
407-
408406
top_blocks.forEach(block => {
409-
if (!isMainBlock() && !block.isIndependentBlock()) {
407+
if (!block.isMainBlock() && !block.isIndependentBlock()) {
410408
this.disableBlocksRecursively(block);
411409
}
412410
});
413-
414411
return true;
415412
}
416413

417414
/**
418415
* Disable blocks and their optional children.
419416
*/
420417
disableBlocksRecursively(block) {
418+
block.setDisabled(true);
421419
if (block.nextConnection?.targetConnection) {
422420
this.disableBlocksRecursively(block.nextConnection.targetConnection.sourceBlock_);
423421
}

Diff for: src/external/bot-skeleton/scratch/utils/index.js

+15-15
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const validateErrorOnBlockDelete = () => {
8484
blockX >= translate_X - translate_offset &&
8585
blockX <= translate_X + translate_offset
8686
) {
87-
globalObserver.emit('ui.log.error', error_message_map[window.Blockly?.getSelected()?.type]?.default);
87+
globalObserver.emit('ui.log.error', error_message_map?.()?.[window.Blockly?.getSelected()?.type]?.default);
8888
}
8989
}
9090
};
@@ -412,17 +412,18 @@ const getDisabledBlocks = required_blocks_check => {
412412

413413
const throwNewErrorMessage = (error_blocks, key) => {
414414
return error_blocks.forEach(block => {
415-
if (key === 'misplaced' && block) globalObserver.emit('ui.log.error', error_message_map[block?.type]?.[key]);
416-
else if (key === 'missing' && block) globalObserver.emit('ui.log.error', error_message_map[block]?.[key]);
415+
if (key === 'misplaced' && block)
416+
globalObserver.emit('ui.log.error', error_message_map?.()?.[block?.type]?.[key]);
417+
else if (key === 'missing' && block) globalObserver.emit('ui.log.error', error_message_map?.()?.[block]?.[key]);
417418
else if (key === 'disabled' && block) {
418419
let parent_block_error = false;
419-
const parent_error_message = error_message_map[block.type]?.[key];
420+
const parent_error_message = error_message_map?.()?.[block.type]?.[key];
420421
if (block.disabled && parent_error_message) {
421422
globalObserver.emit('ui.log.error', parent_error_message);
422423
parent_block_error = true;
423424
} else if (!parent_block_error && block.childBlocks_) {
424425
block.childBlocks_.forEach(childBlock => {
425-
const child_error_message = error_message_map[childBlock.type]?.[key];
426+
const child_error_message = error_message_map?.()?.[childBlock.type]?.[key];
426427
if (child_error_message) globalObserver.emit('ui.log.error', child_error_message);
427428
});
428429
}
@@ -624,11 +625,11 @@ const downloadBlock = () => {
624625
saveAs({ data: xml_text, type: 'text/xml;charset=utf-8', filename: 'block.xml' });
625626
};
626627

627-
const download_option = {
628+
const download_option = () => ({
628629
text: localize('Download Block'),
629630
enabled: true,
630631
callback: downloadBlock,
631-
};
632+
});
632633

633634
export const excludeOptionFromContextMenu = (menu, exclude_items) => {
634635
for (let i = 0; i <= menu.length - 1; i++) {
@@ -641,9 +642,7 @@ export const excludeOptionFromContextMenu = (menu, exclude_items) => {
641642
}
642643
};
643644

644-
const common_included_items = [download_option];
645-
646-
const all_context_menu_options = [
645+
const all_context_menu_options = () => [
647646
localize('Duplicate'),
648647
localize('Add Comment'),
649648
localize('Remove Comment'),
@@ -654,10 +653,11 @@ const all_context_menu_options = [
654653
localize('Download Block'),
655654
];
656655

657-
const deleteBlocksLocaleText = localize('Delete Block');
658-
const deleteAllBlocksLocaleText = localize('Delete All Blocks');
656+
const deleteBlocksLocaleText = () => localize('Delete Block');
657+
const deleteAllBlocksLocaleText = () => localize('Delete All Blocks');
659658

660659
export const modifyContextMenu = (menu, add_new_items = []) => {
660+
const common_included_items = [download_option()];
661661
const include_items = [...common_included_items, ...add_new_items];
662662
include_items.forEach(item => {
663663
menu.push({
@@ -671,13 +671,13 @@ export const modifyContextMenu = (menu, add_new_items = []) => {
671671
const menu_text = menu[i]?.text?.toLowerCase();
672672
if (menu_text?.includes('delete')) {
673673
if (menu_text.includes('block') && !menu_text.includes('blocks')) {
674-
menu[i].text = deleteBlocksLocaleText;
674+
menu[i].text = deleteBlocksLocaleText();
675675
} else {
676-
menu[i].text = deleteAllBlocksLocaleText;
676+
menu[i].text = deleteAllBlocksLocaleText();
677677
}
678678
} else {
679679
const localized_text = localize(menu[i].text);
680-
if (all_context_menu_options.includes(localized_text)) {
680+
if (all_context_menu_options().includes(localized_text)) {
681681
menu[i].text = localized_text;
682682
}
683683
}

Diff for: src/external/bot-skeleton/utils/error-config.js

+16-37
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,24 @@
1-
import { Localize } from '@deriv-com/translations';
1+
import { localize } from '@deriv-com/translations';
22

33
const generateErrorMessage = (block_type, missing_space = 'workspace') => {
44
return {
5-
missing: (
6-
<Localize
7-
i18n_default_text={`The {{block_type}} block is missing.`}
8-
values={{
9-
block_type,
10-
}}
11-
/>
12-
),
13-
misplaced: (
14-
<Localize
15-
i18n_default_text={`The {{block_type}} block is misplaced from {{missing_space}}.`}
16-
values={{
17-
block_type,
18-
missing_space,
19-
}}
20-
/>
21-
),
22-
23-
disabled: (
24-
<Localize
25-
i18n_default_text={`The {{block_type}} block is mandatory and cannot be deleted/disabled.`}
26-
values={{
27-
block_type,
28-
}}
29-
/>
30-
),
31-
default: (
32-
<Localize
33-
i18n_default_text={`The {{block_type}} block is mandatory and cannot be deleted/disabled.`}
34-
values={{
35-
block_type,
36-
}}
37-
/>
38-
),
5+
missing: localize('The {{block_type}} block is mandatory and cannot be deleted/disabled.', {
6+
block_type,
7+
}),
8+
misplaced: localize('The {{block_type}} block is misplaced from {{missing_space}}.', {
9+
block_type,
10+
missing_space,
11+
}),
12+
disabled: localize('The {{block_type}} block is mandatory and cannot be deleted/disabled.', {
13+
block_type,
14+
}),
15+
default: localize('The {{block_type}} block is mandatory and cannot be deleted/disabled.', {
16+
block_type,
17+
}),
3918
};
4019
};
4120

42-
export const error_message_map = {
21+
export const error_message_map = () => ({
4322
trade_definition: generateErrorMessage('Trade parameters'),
4423
trade_parameters: generateErrorMessage('Trade parameters'),
4524
before_purchase: generateErrorMessage('Purchase conditions'),
@@ -48,4 +27,4 @@ export const error_message_map = {
4827
trade_definition_tradeoptions: generateErrorMessage('Trade options', 'trade parameters'),
4928
trade_definition_multiplier: generateErrorMessage('Trade options multipliers', 'trade parameters'),
5029
trade_definition_accumulator: generateErrorMessage('Trade options accumulators', 'trade parameters'),
51-
};
30+
});

Diff for: src/external/bot-skeleton/utils/error-handling.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ export const initErrorHandlingListener = (type = 'keydown') => {
2020
export const handleError = (errorCode, observer) => {
2121
switch (errorCode) {
2222
case 'BLOCK_DELETION':
23-
if (error_message_map[window.Blockly.getSelected().type]) {
24-
observer.emit('ui.log.error', error_message_map[window.Blockly.getSelected().type]?.default);
23+
if (error_message_map?.()?.[window.Blockly.getSelected().type]) {
24+
observer.emit('ui.log.error', error_message_map?.()?.[window.Blockly.getSelected().type]?.default);
2525
}
2626
break;
2727
default:

0 commit comments

Comments
 (0)