1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-14 20:10:13 +03:00
betaflight-configurator/src/js/release_checker.js
Mark Haslinghuis b51a7b288a Fix MSP_BOARD_INFO && Storage Quota
Cleanup LocalStorage
2022-05-30 23:19:51 +02:00

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();
}
};