in packages/vscode-extension-web-ide/src/thirdPartyExtensions/index.ts [4:28]
export function setupExtension<T>(
extensionId: string,
setupFn: (extension?: vscode.Extension<T>) => void,
): vscode.Disposable[] {
const disposables: vscode.Disposable[] = [];
let currentExtension = vscode.extensions.getExtension(extensionId);
if (currentExtension) {
setupFn(currentExtension);
}
const disposeOnChange = vscode.extensions.onDidChange(() => {
const nextExtension = vscode.extensions.getExtension(extensionId);
const hasBeenInstalled = Boolean(nextExtension && !currentExtension);
currentExtension = nextExtension;
if (hasBeenInstalled) {
setupFn(currentExtension);
}
});
disposables.push(disposeOnChange);
return disposables;
}