import * as vscode from 'vscode'; import { ItemModel } from './items/item_model'; export class DataProvider implements vscode.TreeDataProvider { private eventEmitter = new vscode.EventEmitter(); private children: ItemModel[] = []; onDidChangeTreeData = this.eventEmitter.event; // constructor() { // extensionState.onDidChangeValid(this.refresh, this); // } async getChildren(el: ItemModel | undefined): Promise { if (el) return el.getChildren(); this.children.forEach(ch => ch.dispose()); this.children = []; return this.children; } // eslint-disable-next-line class-methods-use-this getParent(): null { return null; } // eslint-disable-next-line class-methods-use-this getTreeItem(item: vscode.TreeItem | ItemModel) { if (item instanceof ItemModel) return item.getTreeItem(); return item; } refresh(): void { this.eventEmitter.fire(); } }