123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- define(['../../lib/@waca/upgrades/lib/UpgradeRunner', '../../lib/@waca/core-client/js/core-client/utils/ClassFactory', '../../app/nls/StringResources'], function (UpgradeRunner, ClassFactory, StringResources) {
- var UpgradeService = function () {
-
- function UpgradeService() {
- _classCallCheck(this, UpgradeService);
-
- this._latestDashboardSpecVersion = 0;
- }
- UpgradeService.prototype.getLatestDashboardSpecVersion = function getLatestDashboardSpecVersion() {
- return parseInt(this._latestDashboardSpecVersion);
- };
- UpgradeService.prototype.initialize = function initialize(glassContext) {
- var _this = this;
- return glassContext.getCoreSvc('.Perspective').getModel('dashboard').then(function (model) {
- var upgradesPath = model.content.options.config.upgrades;
- if (!upgradesPath) {
- return Promise.resolve();
- }
- return ClassFactory.loadModule(upgradesPath).then(function (upgrades) {
- var upgradeVersions = Object.keys(upgrades);
- if (_this._isValidUpgrade(upgradeVersions)) {
- _this._latestDashboardSpecVersion = upgradeVersions[upgradeVersions.length - 1];
- _this.upgradeRunner = new UpgradeRunner({
- migrations: upgrades
- });
- }
- }).catch(function (error) {
- _this._logger = glassContext.getCoreSvc('.Logger');
- _this._logger.error(error);
- });
- });
- };
-
- UpgradeService.prototype._isValidUpgrade = function _isValidUpgrade(upgradeVersions) {
- if (!upgradeVersions.length) {
- return false;
- }
- var latestUpgradeVersion = upgradeVersions[upgradeVersions.length - 1];
- if (!latestUpgradeVersion || isNaN(latestUpgradeVersion)) {
- return false;
- }
- return Number.isInteger(Number(latestUpgradeVersion));
- };
-
- UpgradeService.prototype.needsUpgrade = function needsUpgrade(spec, requestedVersion) {
- if (this.upgradeRunner) {
- return this.upgradeRunner.needsUpgrade(spec, requestedVersion);
- }
- return false;
- };
-
- UpgradeService.prototype.upgrade = function upgrade(spec, requestedVersion, data) {
- if (this.upgradeRunner) {
- return this.upgradeRunner.upgrade(spec, requestedVersion, data).then(function (result) {
- if (result) {
-
-
- if (result.upgradePerformed && data.hasWrite && result.obj.queriedForUpgrade) {
- delete result.obj.queriedForUpgrade;
- if (!data.noToast) {
- data.dashboardApi.showToast(StringResources.get('toastUpgradeDone'), {
- type: 'info'
- });
- }
- }
- return result.obj;
- } else {
-
-
- return spec;
- }
- });
- } else {
- if (requestedVersion && spec.version !== requestedVersion) {
- return Promise.reject(new Error('The requested spec upgrade version is not available'));
- } else {
- return Promise.resolve(spec);
- }
- }
- };
- UpgradeService.prototype.destroy = function destroy() {
- this.upgradeRunner = null;
- };
- return UpgradeService;
- }();
- return UpgradeService;
- });
|