Skip to content
This repository was archived by the owner on Aug 31, 2023. It is now read-only.

Commit 91cb184

Browse files
committed
Schedule pipeline status icons update task
1 parent 2064ddd commit 91cb184

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

js/content.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,7 @@
201201
fetchMergeRequestsDetailsThenUpdateUI(mergeRequestIds) {
202202
let self = this;
203203

204-
this.apiClient.getProjectMergeRequests(
205-
this.currentProjectId,
206-
mergeRequestIds
207-
).then(function(responseData) {
204+
this.fetchMergeRequestsDetails(mergeRequestIds).then(function(responseData) {
208205
if (self.preferences.display_source_and_target_branches) {
209206
self.removeExistingTargetBranchNodes();
210207
}
@@ -224,13 +221,22 @@
224221
}
225222

226223
if (self.preferences.automatically_update_pipeline_status_icons) {
227-
setTimeout(function() {
228-
// TODO Set timeout to call Gitlab API again and update icons
229-
}, 10000);
224+
self.schedulePipelineStatusIconsUpdate();
230225
}
231226
});
232227
}
233228

229+
/**
230+
* Performs an HTTP GET request to the GitLab API to retrieve details about Merge Requests that are
231+
* currently displayed.
232+
*/
233+
fetchMergeRequestsDetails(mergeRequestIds) {
234+
return this.apiClient.getProjectMergeRequests(
235+
this.currentProjectId,
236+
mergeRequestIds
237+
);
238+
}
239+
234240
/**
235241
* Removes all branches that may have been already displayed by GitLab.
236242
*/
@@ -572,6 +578,30 @@
572578
return placeholders[placeholder];
573579
}).trim();
574580
}
581+
582+
/*
583+
* Schedule a pipeline status icons update to be performed in 10 seconds.
584+
*/
585+
schedulePipelineStatusIconsUpdate() {
586+
let self = this;
587+
588+
setTimeout(function() {
589+
self.updatePipelineStatusIcons();
590+
}, 10000);
591+
}
592+
593+
/**
594+
* Actually update pipeline status icons by invoking the GitLab API.
595+
*/
596+
updatePipelineStatusIcons() {
597+
let self = this;
598+
599+
this.fetchMergeRequestsDetails(mergeRequestIds).then(function(responseData) {
600+
// TODO actually update icons
601+
602+
self.schedulePipelineStatusIconsUpdate();
603+
});
604+
}
575605
}
576606

577607
let cs = new ContentScript();

0 commit comments

Comments
 (0)