mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Fix refreshing nodes in Azure view (#9215)
* Fix refreshing nodes in Azure view * refactor * Remove refreshNode from shim * Add missing await
This commit is contained in:
@@ -698,26 +698,28 @@ class TreeDataSource implements IAsyncDataSource<ITreeItem, ITreeItem> {
|
|||||||
return this.treeView.dataProvider && node.collapsibleState !== TreeItemCollapsibleState.None;
|
return this.treeView.dataProvider && node.collapsibleState !== TreeItemCollapsibleState.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
getChildren(node: ITreeItem): Promise<any[]> {
|
async getChildren(node: ITreeItem): Promise<any[]> {
|
||||||
if (node.childProvider) {
|
if (node.childProvider) {
|
||||||
return this.withProgress(this.objectExplorerService.getChildren(node, this.id)).catch(e => {
|
try {
|
||||||
|
return await this.withProgress(this.objectExplorerService.getChildren(node, this.id));
|
||||||
|
} catch (err) {
|
||||||
// if some error is caused we assume something tangently happened
|
// if some error is caused we assume something tangently happened
|
||||||
// i.e the user could retry if they wanted.
|
// i.e the user could retry if they wanted.
|
||||||
// So in order to enable this we need to tell the tree to refresh this node so it will ask us for the data again
|
// So in order to enable this we need to tell the tree to refresh this node so it will ask us for the data again
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.treeView.collapse(node);
|
this.treeView.collapse(node);
|
||||||
if (e instanceof UserCancelledConnectionError) {
|
if (err instanceof UserCancelledConnectionError) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.treeView.refresh([node]);
|
this.treeView.refresh([node]);
|
||||||
});
|
});
|
||||||
return [];
|
return [];
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
if (this.treeView.dataProvider) {
|
if (this.treeView.dataProvider) {
|
||||||
return this.withProgress(this.treeView.dataProvider.getChildren(node));
|
return await this.withProgress(this.treeView.dataProvider.getChildren(node));
|
||||||
}
|
}
|
||||||
return Promise.resolve([]);
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -130,19 +130,19 @@ export class OEShimService extends Disposable implements IOEShimService {
|
|||||||
|
|
||||||
public async getChildren(node: ITreeItem, viewId: string): Promise<ITreeItem[]> {
|
public async getChildren(node: ITreeItem, viewId: string): Promise<ITreeItem[]> {
|
||||||
if (node.payload) {
|
if (node.payload) {
|
||||||
let sessionId = await this.getOrCreateSession(viewId, node);
|
const sessionId = await this.getOrCreateSession(viewId, node);
|
||||||
let requestHandle = this.nodeHandleMap.get(generateNodeMapKey(viewId, node)) || node.handle;
|
const requestHandle = this.nodeHandleMap.get(generateNodeMapKey(viewId, node)) || node.handle;
|
||||||
let treeNode = new TreeNode(undefined, undefined, undefined, requestHandle, undefined, undefined, undefined, undefined, undefined, undefined);
|
const treeNode = new TreeNode(undefined, undefined, undefined, requestHandle, undefined, undefined, undefined, undefined, undefined, undefined);
|
||||||
treeNode.connection = new ConnectionProfile(this.capabilities, node.payload);
|
treeNode.connection = new ConnectionProfile(this.capabilities, node.payload);
|
||||||
return this.oe.resolveTreeNodeChildren({
|
const childrenNodes = await this.oe.refreshTreeNode({
|
||||||
success: undefined,
|
success: undefined,
|
||||||
sessionId,
|
sessionId,
|
||||||
rootNode: undefined,
|
rootNode: undefined,
|
||||||
errorMessage: undefined
|
errorMessage: undefined
|
||||||
}, treeNode).then(e => e.map(n => this.treeNodeToITreeItem(viewId, n, node)));
|
}, treeNode);
|
||||||
} else {
|
return childrenNodes.map(n => this.treeNodeToITreeItem(viewId, n, node));
|
||||||
return Promise.resolve([]);
|
|
||||||
}
|
}
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
private treeNodeToITreeItem(viewId: string, node: TreeNode, parentNode: ITreeItem): ITreeItem {
|
private treeNodeToITreeItem(viewId: string, node: TreeNode, parentNode: ITreeItem): ITreeItem {
|
||||||
|
|||||||
Reference in New Issue
Block a user