From b3ca039b9a0bc7d8fd50de6a8c2e03ee33fae936 Mon Sep 17 00:00:00 2001 From: Andrey Mironov Date: Tue, 7 Aug 2018 11:21:08 +0300 Subject: [PATCH] Allowed using cached CI info after timeout when GET fails --- src/js/jenkins_loader.js | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/js/jenkins_loader.js b/src/js/jenkins_loader.js index 67497b7a..209fb642 100644 --- a/src/js/jenkins_loader.js +++ b/src/js/jenkins_loader.js @@ -26,6 +26,14 @@ JenkinsLoader.prototype.loadJobs = function (viewName, callback) { var cachedJobsData = result[jobsDataTag]; var cachedJobsLastUpdate = result[cacheLastUpdateTag]; + var cachedCallback = () => { + if (cachedJobsData) { + GUI.log(i18n.getMessage('buildServerUsingCached', ['jobs'])); + } + + wrappedCallback(cachedJobsData ? cachedJobsData : []); + }; + if (!cachedJobsData || !cachedJobsLastUpdate || jobsDataTimestamp - cachedJobsLastUpdate > self._cacheExpirationPeriod) { var url = `${viewUrl}${self._jobsRequest}`; @@ -46,13 +54,9 @@ JenkinsLoader.prototype.loadJobs = function (viewName, callback) { wrappedCallback(jobs); }).error(xhr => { GUI.log(i18n.getMessage('buildServerLoadFailed', ['jobs', `HTTP ${xhr.status}`])); - }).fail(() => wrappedCallback([])); + }).fail(cachedCallback); } else { - if (cachedJobsData) { - GUI.log(i18n.getMessage('buildServerUsingCached', ['jobs'])); - } - - wrappedCallback(cachedJobsData); + cachedCallback(); } }); } @@ -69,6 +73,14 @@ JenkinsLoader.prototype.loadBuilds = function (jobName, callback) { var cachedBuildsData = result[buildsDataTag]; var cachedBuildsLastUpdate = result[cacheLastUpdateTag]; + var cachedCallback = () => { + if (cachedBuildsData) { + GUI.log(i18n.getMessage('buildServerUsingCached', [jobName])); + } + + self._parseBuilds(jobUrl, jobName, cachedBuildsData ? cachedBuildsData : [], callback); + }; + if (!cachedBuildsData || !cachedBuildsLastUpdate || buildsDataTimestamp - cachedBuildsLastUpdate > self._cacheExpirationPeriod) { var url = `${jobUrl}${self._buildsRequest}`; @@ -93,15 +105,9 @@ JenkinsLoader.prototype.loadBuilds = function (jobName, callback) { self._parseBuilds(jobUrl, jobName, builds, callback); }).error(xhr => { GUI.log(i18n.getMessage('buildServerLoadFailed', [jobName, `HTTP ${xhr.status}`])); - }).fail(() => { - self._parseBuilds(jobUrl, jobName, [], callback); - }); + }).fail(cachedCallback); } else { - if (cachedBuildsData) { - GUI.log(i18n.getMessage('buildServerUsingCached', [jobName])); - } - - self._parseBuilds(jobUrl, jobName, cachedBuildsData, callback); + cachedCallback(); } }); }