Skip to content

Commit acbbd71

Browse files
committed
Move upgrade details of mrc_class_method into the block
1 parent 522f74a commit acbbd71

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

src/blocks/mrc_class_method_def.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const BLOCK_NAME = 'mrc_class_method_def';
3939

4040
export const FIELD_METHOD_NAME = 'NAME';
4141

42-
export type Parameter = {
42+
type Parameter = {
4343
name: string,
4444
type?: string,
4545
};
@@ -322,6 +322,14 @@ const CLASS_METHOD_DEF = {
322322
this.mrcMethodId = oldIdToNewId[this.mrcMethodId];
323323
}
324324
},
325+
upgrade_002_to_003: function(this: ClassMethodDefBlock) {
326+
if (this.getFieldValue('NAME') === 'init') {
327+
// Remove robot parameter from init method
328+
const methodBlock = this as ClassMethodDefBlock;
329+
let filteredParams: Parameter[] = methodBlock.mrcParameters.filter(param => param.name !== 'robot');
330+
methodBlock.mrcParameters = filteredParams;
331+
}
332+
},
325333
};
326334

327335
/**

src/storage/upgrade_project.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import * as storageModule from './module';
2828
import * as storageModuleContent from './module_content';
2929
import * as storageNames from './names';
3030
import * as storageProject from './project';
31-
import { ClassMethodDefBlock, Parameter, BLOCK_NAME as MRC_CLASS_METHOD_DEF_BLOCK_NAME } from '../blocks/mrc_class_method_def';
31+
import { ClassMethodDefBlock, BLOCK_NAME as MRC_CLASS_METHOD_DEF_BLOCK_NAME } from '../blocks/mrc_class_method_def';
3232

3333
export const NO_VERSION = '0.0.0';
3434
export const CURRENT_VERSION = '0.0.3';
@@ -121,17 +121,10 @@ async function upgradeFrom_002_to_003(
121121
try {
122122
Blockly.serialization.workspaces.load(blocks, headlessWorkspace);
123123

124-
// Find and modify init method blocks to remove robot parameter
125-
const allBlocks = headlessWorkspace.getAllBlocks();
126-
for (const block of allBlocks) {
127-
if (block.type === MRC_CLASS_METHOD_DEF_BLOCK_NAME &&
128-
block.getFieldValue('NAME') === 'init') {
129-
// Remove robot parameter from init method
130-
const methodBlock = block as ClassMethodDefBlock;
131-
let filteredParams: Parameter[] = methodBlock.mrcParameters.filter(param => param.name !== 'robot');
132-
methodBlock.mrcParameters = filteredParams;
133-
}
134-
}
124+
// Method blocks need to be upgraded
125+
headlessWorkspace.getBlocksByType(MRC_CLASS_METHOD_DEF_BLOCK_NAME, false).forEach(block => {
126+
(block as ClassMethodDefBlock).upgrade_002_to_003();
127+
});
135128
blocks = Blockly.serialization.workspaces.save(headlessWorkspace);
136129
} finally {
137130
headlessWorkspace.dispose();

0 commit comments

Comments
 (0)