Skip to content

Commit 8b188cf

Browse files
authored
Properly handle errors when previewing XML as UDL (intersystems-community#907)
1 parent 1b8e0bf commit 8b188cf

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/providers/XmlContentProvider.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as vscode from "vscode";
22
import { AtelierAPI } from "../api";
3+
import { outputChannel } from "../utils";
34

45
export class XmlContentProvider implements vscode.TextDocumentContentProvider {
56
private _api: AtelierAPI;
@@ -10,12 +11,23 @@ export class XmlContentProvider implements vscode.TextDocumentContentProvider {
1011
}
1112

1213
public provideTextDocumentContent(uri: vscode.Uri, token: vscode.CancellationToken): vscode.ProviderResult<string> {
13-
// uri.query.
1414
return vscode.workspace
1515
.openTextDocument(vscode.Uri.file(uri.fragment))
1616
.then((document) => document.getText())
17-
.then((text) => this._api.cvtXmlUdl(text))
18-
.then((data) => data.result.content[0].content.join("\n"));
17+
.then((text) => {
18+
return this._api
19+
.cvtXmlUdl(text)
20+
.then((data) => data.result.content[0].content.join("\n"))
21+
.catch((error) => {
22+
let message = `Failed to convert XML of '${uri.path.slice(1)}' to UDL.`;
23+
if (error.errorText && error.errorText !== "") {
24+
outputChannel.appendLine("\n" + error.errorText);
25+
outputChannel.show(true);
26+
message += " Check 'ObjectScript' Output channel for details.";
27+
}
28+
vscode.window.showErrorMessage(message, "Dismiss");
29+
});
30+
});
1931
}
2032

2133
public get onDidChange(): vscode.Event<vscode.Uri> {

0 commit comments

Comments
 (0)