}).done(async function (_response, _textStatus, jqXHR) { let jsData: any; try { jsData = await parseXml(jqXHR.responseText); } catch (err) { log.error(`Error parsing update feed xml: ${err}`); return; } const updateInfo = transformAtomFeed(jsData); if (!dontCache) { lastInfoURLFetchTime = (new Date()).getTime(); PreferencesManager.setViewState("lastInfoURLFetchTime", lastInfoURLFetchTime); PreferencesManager.setViewState("updateInfo", updateInfo); } result.resolve(updateInfo); }).fail(function (jqXHR, status, error) {
.done(function (allUpdates: UpdateFeedInfo = []) { const semver = node.require("semver"); const currentVersion = node.require("./package.json").version; // Get all available updates const availableUpdates = allUpdates.filter((x) => semver.gt(x.versionString, currentVersion)); // When running directly from GitHub source (as opposed to // an installed build), _buildNumber is 0. In this case, if the // test is not forced, don't show the update notification icon or // dialog. if (_buildNumber === 0 && !force) { result.resolve(); return; } if (availableUpdates && availableUpdates.length > 0) { // Always show the "update available" icon if any updates are available const $updateNotification = $("#update-notification"); $updateNotification.css("display", "block"); $updateNotification.on("click", function () { // Block the click until the Notification Dialog opens if (!_addedClickHandler) { _addedClickHandler = true; checkForUpdate(true); } }); // Only show the update dialog if force = true, or if the user hasn't been // alerted of this update if (force || availableUpdates[0].buildNumber > lastNotifiedBuildNumber) { _showUpdateNotificationDialog(availableUpdates); // Update prefs with the last notified build number lastNotifiedBuildNumber = availableUpdates[0].buildNumber; // Don't save prefs is we have overridden values if (!usingOverrides) { PreferencesManager.setViewState("lastNotifiedBuildNumber", lastNotifiedBuildNumber); } } } else if (force) { // No updates are available. If force == true, let the user know. Dialogs.showModalDialog( DefaultDialogs.DIALOG_ID_ERROR, Strings.NO_UPDATE_TITLE, Strings.NO_UPDATE_MESSAGE ); } if (oldValues) { if (oldValues.hasOwnProperty("_buildNumber")) { _buildNumber = oldValues._buildNumber; } if (oldValues.hasOwnProperty("lastNotifiedBuildNumber")) { lastNotifiedBuildNumber = oldValues.lastNotifiedBuildNumber; } } result.resolve(); })
/** * Calculate state of notification everytime registries are downloaded - no matter who triggered the download */ function _onRegistryDownloaded() { const availableUpdates = ExtensionManager.getAvailableUpdates(); PreferencesManager.setViewState("extensionUpdateInfo", availableUpdates); PreferencesManager.setViewState("lastExtensionRegistryCheckTime", (new Date()).getTime()); $("#toolbar-extension-manager").toggleClass("updatesAvailable", availableUpdates.length > 0); }