diff --git a/src/external/bot-skeleton/scratch/utils/index.js b/src/external/bot-skeleton/scratch/utils/index.js index 4458dc16..47fe159c 100644 --- a/src/external/bot-skeleton/scratch/utils/index.js +++ b/src/external/bot-skeleton/scratch/utils/index.js @@ -404,11 +404,20 @@ const getMissingBlocks = (workspace, required_block_types) => { }; const getDisabledBlocks = required_blocks_check => { - return required_blocks_check.filter(block => { - const hasDisabledChild = - block.childBlocks_ && block.childBlocks_.some(childBlock => childBlock.disabled === true); - return block.disabled === true || hasDisabledChild; - }); + const workspace = window.Blockly.derivWorkspace; + const required_block_types = [getSelectedTradeType(workspace), ...config().mandatoryMainBlocks]; + const disabled_blocks = Object.fromEntries( + workspace + .getAllBlocks() + .filter(block => required_block_types.includes(block.type)) + .map(block => [block.type, block.disabled]) + ); + const mandatory_blocks = ['before_purchase', 'purchase', 'trade_definition', 'trade_definition_tradeoptions']; + const has_disabled_blocks = mandatory_blocks.some(type => disabled_blocks[type]); + + return has_disabled_blocks + ? required_blocks_check.filter(block => block.disabled || block.childBlocks_?.some(child => child.disabled)) + : []; }; const throwNewErrorMessage = (error_blocks, key) => {