Skip to content

Commit ce28108

Browse files
authored
Merge pull request #14 from badsyntax/background-refresh
Fix for refreshing tasks
2 parents 4711f34 + 24fc31e commit ce28108

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

src/extension.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,27 @@ function registerExplorer(
8080
): GradleTasksTreeDataProvider | undefined {
8181
if (workspace.workspaceFolders) {
8282
const treeDataProvider = new GradleTasksTreeDataProvider(context);
83-
const view = window.createTreeView('gradle', {
84-
treeDataProvider: treeDataProvider,
85-
showCollapseAll: true
86-
});
87-
context.subscriptions.push(view);
83+
treeDataProvider.refresh();
84+
context.subscriptions.push(
85+
window.createTreeView('gradle', {
86+
treeDataProvider: treeDataProvider,
87+
showCollapseAll: true
88+
})
89+
);
90+
context.subscriptions.push(
91+
commands.registerCommand(
92+
'gradle.runTask',
93+
treeDataProvider.runTask,
94+
treeDataProvider
95+
)
96+
);
97+
context.subscriptions.push(
98+
commands.registerCommand(
99+
'gradle.refresh',
100+
treeDataProvider.refresh,
101+
treeDataProvider
102+
)
103+
);
88104
return treeDataProvider;
89105
}
90106
return undefined;

src/gradleView.ts

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,38 +131,31 @@ class NoTasksTreeItem extends TreeItem {
131131
}
132132

133133
export class GradleTasksTreeDataProvider implements TreeDataProvider<TreeItem> {
134+
private taskItemsPromise: Thenable<Task[]> | undefined = undefined;
134135
private taskTree:
135136
| Folder[]
136137
| GradleTreeItem[]
137138
| NoTasksTreeItem[]
138139
| null = null;
139-
private extensionContext: ExtensionContext;
140140
private _onDidChangeTreeData: EventEmitter<TreeItem | null> = new EventEmitter<TreeItem | null>();
141141
readonly onDidChangeTreeData: Event<TreeItem | null> = this
142142
._onDidChangeTreeData.event;
143143

144-
constructor(context: ExtensionContext) {
145-
this.extensionContext = context;
146-
const subscriptions = context.subscriptions;
147-
subscriptions.push(
148-
commands.registerCommand('gradle.runTask', this.runTask, this)
149-
);
150-
subscriptions.push(
151-
commands.registerCommand('gradle.refresh', this.refresh, this)
152-
);
153-
}
144+
constructor(private readonly extensionContext: ExtensionContext) {}
154145

155-
private async runTask(taskItem: GradleTaskItem) {
146+
runTask(taskItem: GradleTaskItem) {
156147
if (taskItem && taskItem.task) {
157148
tasks.executeTask(taskItem.task);
158149
}
159150
}
160151

161-
public refresh() {
152+
refresh() {
162153
invalidateTasksCache();
163154
enableTaskDetection();
164155
this.taskTree = null;
156+
this.taskItemsPromise = tasks.fetchTasks({ type: 'gradle' });
165157
this._onDidChangeTreeData.fire();
158+
return this.taskItemsPromise;
166159
}
167160

168161
getTreeItem(element: TreeItem): TreeItem {
@@ -187,7 +180,7 @@ export class GradleTasksTreeDataProvider implements TreeDataProvider<TreeItem> {
187180

188181
async getChildren(element?: TreeItem): Promise<TreeItem[]> {
189182
if (!this.taskTree) {
190-
const taskItems = await tasks.fetchTasks({ type: 'gradle' });
183+
const taskItems = await this.taskItemsPromise;
191184
if (taskItems) {
192185
this.taskTree = this.buildTaskTree(taskItems);
193186
if (this.taskTree.length === 0) {

0 commit comments

Comments
 (0)