mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-14 20:10:13 +03:00
56 lines
2 KiB
JavaScript
56 lines
2 KiB
JavaScript
'use strict';
|
|
|
|
const ReleaseChecker = function (releaseName, releaseUrl) {
|
|
const self = this;
|
|
|
|
self._releaseName = releaseName;
|
|
self._releaseDataTag = `${self._releaseName}ReleaseData`;
|
|
self._releaseLastUpdateTag = `${self._releaseName}ReleaseLastUpdate`;
|
|
self._releaseUrl = releaseUrl;
|
|
};
|
|
|
|
ReleaseChecker.prototype.loadReleaseData = function (processFunction) {
|
|
const self = this;
|
|
const result = SessionStorage.get([self._releaseLastUpdateTag, self._releaseDataTag]);
|
|
const releaseDataTimestamp = $.now();
|
|
const cacheReleaseData = result[self._releaseDataTag];
|
|
const cachedReleaseLastUpdate = result[self._releaseLastUpdateTag];
|
|
|
|
if (!cacheReleaseData || !cachedReleaseLastUpdate || releaseDataTimestamp - cachedReleaseLastUpdate > 3600 * 1000) {
|
|
$.get(self._releaseUrl, function (releaseData) {
|
|
GUI.log(i18n.getMessage('releaseCheckLoaded',[self._releaseName]));
|
|
|
|
const data = {};
|
|
data[self._releaseDataTag] = releaseData;
|
|
data[self._releaseLastUpdateTag] = releaseDataTimestamp;
|
|
SessionStorage.set(data);
|
|
|
|
self._processReleaseData(releaseData, processFunction);
|
|
}).fail(function (data) {
|
|
let message = '';
|
|
if (data['responseJSON']) {
|
|
message = data['responseJSON'].message;
|
|
}
|
|
GUI.log(i18n.getMessage('releaseCheckFailed',[self._releaseName,message]));
|
|
|
|
self._processReleaseData(cacheReleaseData, processFunction);
|
|
});
|
|
} else {
|
|
if (cacheReleaseData) {
|
|
GUI.log(i18n.getMessage('releaseCheckCached',[self._releaseName]));
|
|
}
|
|
|
|
self._processReleaseData(cacheReleaseData, processFunction);
|
|
}
|
|
};
|
|
|
|
|
|
ReleaseChecker.prototype._processReleaseData = function (releaseData, processFunction) {
|
|
if (releaseData) {
|
|
processFunction(releaseData);
|
|
} else {
|
|
GUI.log(i18n.getMessage('releaseCheckNoInfo',[self._releaseName]));
|
|
|
|
processFunction();
|
|
}
|
|
};
|