mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
broke _setup out of _wrap* so that it caould be swapped out in testing
This commit is contained in:
parent
08ce7446bf
commit
c72436b49c
2 changed files with 45 additions and 39 deletions
41
src/kibana/utils/routes/_setup.js
Normal file
41
src/kibana/utils/routes/_setup.js
Normal file
|
@ -0,0 +1,41 @@
|
|||
define(function (require) {
|
||||
return function routeSetup(Promise, kbnSetup, config, $route, indexPatterns, Notifier) {
|
||||
|
||||
var errors = require('errors');
|
||||
var NoDefaultIndexPattern = errors.NoDefaultIndexPattern;
|
||||
var NoDefinedIndexPatterns = errors.NoDefinedIndexPatterns;
|
||||
|
||||
return {
|
||||
routeSetupWork: function () {
|
||||
return Promise.all([
|
||||
kbnSetup(),
|
||||
config.init(),
|
||||
])
|
||||
.then(function () {
|
||||
if (!$route.current.$$route.originalPath.match(/settings\/indices/)) {
|
||||
return indexPatterns.getIds()
|
||||
.then(function (patterns) {
|
||||
if (!patterns || patterns.length === 0) {
|
||||
throw new errors.NoDefinedIndexPatterns();
|
||||
}
|
||||
|
||||
if (!config.get('defaultIndex')) {
|
||||
throw new NoDefaultIndexPattern();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
handleKnownError: function (err) {
|
||||
if (err instanceof NoDefaultIndexPattern || err instanceof NoDefinedIndexPatterns) {
|
||||
// .change short circuits the routes by calling $route.refresh(). We can safely swallow this error
|
||||
// after reporting it to the user
|
||||
$route.change('/settings/indices');
|
||||
(new Notifier()).error(err);
|
||||
} else {
|
||||
return Promise.reject(err);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
});
|
|
@ -2,24 +2,8 @@ define(function (require) {
|
|||
var angular = require('angular');
|
||||
var _ = require('lodash');
|
||||
|
||||
var errors = require('errors');
|
||||
var NoDefaultIndexPattern = errors.NoDefaultIndexPattern;
|
||||
var NoDefinedIndexPatterns = errors.NoDefinedIndexPatterns;
|
||||
|
||||
var WorkQueue = require('utils/routes/_work_queue');
|
||||
|
||||
var oneTimeSetup = function ($q, kbnSetup, config) {
|
||||
var prom = $q.all([
|
||||
kbnSetup(),
|
||||
config.init(),
|
||||
]);
|
||||
|
||||
// override setup to only return the promise
|
||||
oneTimeSetup = function () { return prom; };
|
||||
|
||||
return prom;
|
||||
};
|
||||
|
||||
return function (route) {
|
||||
if (!route.resolve && route.redirectTo) {
|
||||
return;
|
||||
|
@ -30,23 +14,10 @@ define(function (require) {
|
|||
userWork.limit = _.keys(route.resolve).length;
|
||||
|
||||
var resolve = {
|
||||
__prep__: function (Promise, $injector, config, $route, Notifier, indexPatterns) {
|
||||
return $injector.invoke(oneTimeSetup)
|
||||
.then(function () {
|
||||
if (!$route.current.$$route.originalPath.match(/settings\/indices/)) {
|
||||
// always check for existing ids first
|
||||
return indexPatterns.getIds()
|
||||
.then(function (patterns) {
|
||||
if (!patterns || patterns.length === 0) {
|
||||
throw new errors.NoDefinedIndexPatterns();
|
||||
}
|
||||
__prep__: function (Promise, Private, config, kbnSetup) {
|
||||
var setup = Private(require('utils/routes/_setup'));
|
||||
|
||||
if (!config.get('defaultIndex')) {
|
||||
throw new NoDefaultIndexPattern();
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
return setup.routeSetupWork()
|
||||
.then(function () {
|
||||
// wait for the queue to fill up, then do all the work
|
||||
var defer = Promise.defer();
|
||||
|
@ -61,13 +32,7 @@ define(function (require) {
|
|||
.catch(function (err) {
|
||||
// discard any remaining user work
|
||||
userWork.empty();
|
||||
|
||||
if (err instanceof NoDefaultIndexPattern || err instanceof NoDefinedIndexPatterns) {
|
||||
$route.change('/settings/indices');
|
||||
(new Notifier()).error(err);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
return setup.handleKnownError(err);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue