Skip to content

Commit

Permalink
Fix: Workspace file display (#5029)
Browse files Browse the repository at this point in the history
  • Loading branch information
ElinorW authored Jul 29, 2024
1 parent c6d2789 commit 72e3f8b
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 28 deletions.
4 changes: 4 additions & 0 deletions vscode/microsoft-kiota/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,10 @@
{
"command": "kiota.regenerate",
"title": "%kiota.openApiExplorer.regenerateButton.title%"
},
{
"command": "kiota.workspace.refresh",
"title": "%kiota.openApiExplorer.refresh.title%"
}
],
"languages": [
Expand Down
3 changes: 2 additions & 1 deletion vscode/microsoft-kiota/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
"kiota.openApiExplorer.openFile.title": "Open file",
"kiota.workspace.name": "My Workspace",
"kiota.openApiExplorer.regenerateButton.title": "Re-generate",
"kiota.openApiExplorer.editPaths.title": "Edit paths"
"kiota.openApiExplorer.editPaths.title": "Edit paths",
"kiota.openApiExplorer.refresh.title": "Refresh"
}
1 change: 1 addition & 0 deletions vscode/microsoft-kiota/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,7 @@ export async function activate(
openApiTreeProvider.setSelectionChanged(false);
const workspaceJsonPath = getWorkspaceJsonPath();
await loadLockFile({fsPath: workspaceJsonPath}, openApiTreeProvider, clientNameOrPluginName );
await vscode.commands.executeCommand('kiota.workspace.refresh');
await updateTreeViewIcons(treeViewId, false, true);
}
async function regenerateClient(clientKey: string, clientObject:any, settings: ExtensionSettings, selectedPaths?: string[]): Promise<void> {
Expand Down
1 change: 1 addition & 0 deletions vscode/microsoft-kiota/src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export function getWorkspaceJsonDirectory(clientNameOrPluginName?: string): stri
return workspaceFolder;
}

//used to store output in the App Package directory in the case where the workspace is a Teams Toolkit Project
export function findAppPackageDirectory(directory: string): string | null {
if (!fs.existsSync(directory)) {
return null;
Expand Down
67 changes: 40 additions & 27 deletions vscode/microsoft-kiota/src/workspaceTreeProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,42 +6,54 @@ import { getWorkspaceJsonPath } from './util';


export class WorkspaceTreeProvider implements vscode.TreeDataProvider<vscode.TreeItem> {
constructor(public isWSPresent: boolean) {
}
async getChildren(element?: vscode.TreeItem): Promise<vscode.TreeItem[]> {
if (!this.isWSPresent) {
return [];
}
if (!element) {
return [new vscode.TreeItem(KIOTA_WORKSPACE_FILE, vscode.TreeItemCollapsibleState.None)];
}
public isWSPresent: boolean;
private _onDidChangeTreeData: vscode.EventEmitter<vscode.TreeItem | undefined | null | void> = new vscode.EventEmitter<vscode.TreeItem | undefined | null | void>();
readonly onDidChangeTreeData: vscode.Event<vscode.TreeItem | undefined | null | void> = this._onDidChangeTreeData.event;
constructor( isWSPresent: boolean) {
this.isWSPresent = isWSPresent;
}

async refreshView(): Promise<void> {
this._onDidChangeTreeData.fire();
}

async getChildren(element?: vscode.TreeItem): Promise<vscode.TreeItem[]> {
if (!this.isWSPresent) {
return [];
}

getTreeItem(element: vscode.TreeItem): vscode.TreeItem {
if (element) {
element.command = {
command: 'kiota.workspace.openWorkspaceFile',
title: vscode.l10n.t("Open File"),
arguments: [vscode.Uri.file(getWorkspaceJsonPath())]
};
element.contextValue = 'file';
}
return element;
if (!element) {
return [new vscode.TreeItem(KIOTA_WORKSPACE_FILE, vscode.TreeItemCollapsibleState.None)];
}
return [];
}

getTreeItem(element: vscode.TreeItem): vscode.TreeItem {
if (element) {
element.command = {
command: 'kiota.workspace.openWorkspaceFile',
title: vscode.l10n.t("Open File"),
arguments: [vscode.Uri.file(getWorkspaceJsonPath())]
};
element.contextValue = 'file';
}
return element;
}
}

async function openResource(resource: vscode.Uri): Promise<void> {
await vscode.window.showTextDocument(resource);
}
async function isKiotaWorkspaceFilePresent(): Promise<boolean> {
const workspaceFileDir = path.resolve(getWorkspaceJsonPath());
try {
await fs.promises.access(workspaceFileDir);
} catch (error) {
return false;
}
return true;
if(!vscode.workspace.workspaceFolders || vscode.workspace.workspaceFolders.length === 0){
return false;
}
const workspaceFileDir = path.resolve(getWorkspaceJsonPath());
try {
await fs.promises.access(workspaceFileDir);
} catch (error) {
return false;
}
return true;
}

export async function loadTreeView(context: vscode.ExtensionContext): Promise<void> {
Expand All @@ -54,5 +66,6 @@ export async function loadTreeView(context: vscode.ExtensionContext): Promise<vo
context.subscriptions.push(vscode.commands.registerCommand('kiota.workspace.openWorkspaceFile', openResource));
context.subscriptions.push(vscode.commands.registerCommand('kiota.workspace.refresh', async () => {
treeDataProvider.isWSPresent = await isKiotaWorkspaceFilePresent();
await treeDataProvider.refreshView();
}));
}

0 comments on commit 72e3f8b

Please sign in to comment.