Skip to content

Commit ce6cfe6

Browse files
committed
Add playground item
1 parent e35d85f commit ce6cfe6

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

src/treeview/index.ts

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ export class AssessmentsSidebarProvider
3333
}
3434

3535
getChildren(element?: BaseTreeItem): Thenable<BaseTreeItem[]> {
36+
// Synthetic root item that launches the Source Academy panel.
37+
const launchItem = new PlaygroundItem();
38+
3639
// @ts-ignore
3740
const assessmentOverviews: VscAssessmentOverview[] =
3841
this.context.globalState.get("assessmentOverviews");
@@ -44,14 +47,18 @@ export class AssessmentsSidebarProvider
4447
const assessmentTypes = [
4548
...new Set(assessmentOverviews.map((ao) => ao.type)),
4649
];
47-
return Promise.resolve(
48-
assessmentTypes.map((at) => new AssessmentFolder(at)),
49-
);
50+
const folders = assessmentTypes.map((at) => new AssessmentFolder(at));
51+
52+
return Promise.resolve([launchItem, ...folders]);
5053
}
5154

5255
if (element && element.type === "AssessmentFolder") {
5356
const elem = element as AssessmentFolder;
5457

58+
if (!assessmentOverviews) {
59+
return Promise.resolve([]);
60+
}
61+
5562
return Promise.resolve(
5663
assessmentOverviews
5764
.filter((ao) => ao.type == elem.assessmentType)
@@ -84,6 +91,21 @@ class BaseTreeItem extends vscode.TreeItem {
8491
};
8592
}
8693

94+
/**
95+
* Synthetic tree item that always appears at the top-level of the view.
96+
*/
97+
class PlaygroundItem extends BaseTreeItem {
98+
constructor() {
99+
super("Playground", vscode.TreeItemCollapsibleState.None);
100+
this.type = "LaunchItem";
101+
this.command = {
102+
title: "Playground",
103+
command: "source-academy.navigate",
104+
arguments: ["/playground"],
105+
};
106+
}
107+
}
108+
87109
class AssessmentFolder extends BaseTreeItem {
88110
constructor(public readonly assessmentType: string) {
89111
super(assessmentType, vscode.TreeItemCollapsibleState.Collapsed);

0 commit comments

Comments
 (0)