chore: clean up leftover procedure-related things in core (#6797)

* chore: remove triggering updates

* chore: export isObservable

* chore: move the observable procedure model out of its own directory
This commit is contained in:
Beka Westberg
2023-01-26 09:54:49 -08:00
committed by GitHub
parent 5bbb39972a
commit 75963ea58e
7 changed files with 36 additions and 79 deletions

View File

@@ -98,6 +98,7 @@ import {IFlyout} from './interfaces/i_flyout.js';
import {IKeyboardAccessible} from './interfaces/i_keyboard_accessible.js';
import {IMetricsManager} from './interfaces/i_metrics_manager.js';
import {IMovable} from './interfaces/i_movable.js';
import {IObservable, isObservable} from './interfaces/i_observable.js';
import {IPositionable} from './interfaces/i_positionable.js';
import {IRegistrable} from './interfaces/i_registrable.js';
import {ISelectable} from './interfaces/i_selectable.js';
@@ -690,6 +691,7 @@ export {IMetricsManager};
export {IMovable};
export {Input};
export {InsertionMarkerManager};
export {IObservable, isObservable};
export {IPositionable};
export {IRegistrable};
export {ISelectable};

View File

@@ -4,17 +4,15 @@
* SPDX-License-Identifier: Apache-2.0
*/
import * as eventUtils from '../events/utils.js';
import {IProcedureMap} from '../interfaces/i_procedure_map.js';
import type {IProcedureModel} from '../interfaces/i_procedure_model.js';
import {isObservable} from '../interfaces/i_observable.js';
import {triggerProceduresUpdate} from './update_procedures.js';
import type {Workspace} from '../workspace.js';
import {IProcedureMap} from './interfaces/i_procedure_map.js';
import type {IProcedureModel} from './interfaces/i_procedure_model.js';
import {isObservable} from './interfaces/i_observable.js';
export class ObservableProcedureMap extends
Map<string, IProcedureModel> implements IProcedureMap {
constructor(private readonly workspace: Workspace) {
/** @internal */
constructor() {
super();
}
@@ -36,7 +34,6 @@ export class ObservableProcedureMap extends
const proc = this.get(id);
const existed = super.delete(id);
if (!existed) return existed;
triggerProceduresUpdate(this.workspace);
if (isObservable(proc)) proc.stopPublishing();
return existed;
}
@@ -47,10 +44,8 @@ export class ObservableProcedureMap extends
override clear() {
if (!this.size) return;
for (const id of this.keys()) {
const proc = this.get(id);
super.delete(id);
this.delete(id);
}
triggerProceduresUpdate(this.workspace);
}
/**
@@ -58,7 +53,6 @@ export class ObservableProcedureMap extends
* blocks can find it.
*/
add(proc: IProcedureModel): this {
// TODO(#6526): See if this method is actually useful.
return this.set(proc.getId(), proc);
}

View File

@@ -29,8 +29,7 @@ import {IParameterModel} from './interfaces/i_parameter_model.js';
import {IProcedureMap} from './interfaces/i_procedure_map.js';
import {IProcedureModel} from './interfaces/i_procedure_model.js';
import {IProcedureBlock, isProcedureBlock} from './interfaces/i_procedure_block.js';
import {ObservableProcedureMap} from './procedures/observable_procedure_map.js';
import {triggerProceduresUpdate} from './procedures/update_procedures.js';
import {ObservableProcedureMap} from './observable_procedure_map.js';
import * as utilsXml from './utils/xml.js';
import * as Variables from './variables.js';
import type {Workspace} from './workspace.js';
@@ -500,7 +499,6 @@ export function getDefinition(name: string, workspace: Workspace): Block|null {
export {
ObservableProcedureMap,
triggerProceduresUpdate,
IParameterModel,
IProcedureBlock,
isProcedureBlock,

View File

@@ -1,26 +0,0 @@
/**
* @license
* Copyright 2022 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import * as goog from '../../closure/goog/goog.js';
import {isProcedureBlock} from '../interfaces/i_procedure_block.js';
import {Workspace} from '../workspace.js';
goog.declareModuleId('Blockly.procedures.updateProcedures');
/**
* Calls the `doProcedureUpdate` method on all blocks which implement it.
*
* @internal
*/
export function triggerProceduresUpdate(workspace: Workspace) {
if (workspace.isClearing) return;
for (const block of workspace.getAllBlocks(false)) {
if (isProcedureBlock(block)) {
block.doProcedureUpdate();
}
}
}

View File

@@ -33,7 +33,7 @@ import {VariableMap} from './variable_map.js';
import type {VariableModel} from './variable_model.js';
import type {WorkspaceComment} from './workspace_comment.js';
import {IProcedureMap} from './interfaces/i_procedure_map.js';
import {ObservableProcedureMap} from './procedures.js';
import {ObservableProcedureMap} from './observable_procedure_map.js';
/**
@@ -112,7 +112,7 @@ export class Workspace implements IASTNodeLocation {
private readonly blockDB = new Map<string, Block>();
private readonly typedBlocksDB = new Map<string, Block[]>();
private variableMap: VariableMap;
private procedureMap: IProcedureMap = new ObservableProcedureMap(this);
private procedureMap: IProcedureMap = new ObservableProcedureMap();
/**
* Blocks in the flyout can refer to variables that don't exist in the main