Merge branch 'defer' of https://github.com/nreese/kibana into nreese-defer

This commit is contained in:
Stacey Gammon 2017-01-26 08:44:55 -05:00
commit 96af3ea647
3 changed files with 12 additions and 5 deletions

View file

@ -10,6 +10,7 @@ export function loadSavedObject(loaders, panel) {
if (!loader) {
throw new Error(`No loader for object of type ${panel.type}`);
}
return loader.get(panel.id)
const isDefered = true;
return loader.get(panel.id, isDefered)
.then(savedObj => ({ savedObj, editUrl: loader.urlFor(panel.id) }));
}

View file

@ -127,7 +127,7 @@ export default function SavedObjectFactory(esAdmin, kbnIndex, Promise, Private,
* @return {Promise}
* @resolved {SavedObject}
*/
this.init = _.once(() => {
this.init = _.once((isDefered) => {
// ensure that the type is defined
if (!type) throw new Error('You must define a type name to use SavedObject objects.');
@ -166,7 +166,13 @@ export default function SavedObjectFactory(esAdmin, kbnIndex, Promise, Private,
}
// fetch the object from ES
return docSource.fetch().then(this.applyESResp);
if (isDefered) {
const defer = Promise.defer();
docSource._createRequest(defer);
return defer.promise.then(this.applyESResp);
} else {
return docSource.fetch().then(this.applyESResp);
}
})
.then(() => {
return customInit.call(this);

View file

@ -29,8 +29,8 @@ export class SavedObjectLoader {
* @param id
* @returns {Promise<SavedObject>}
*/
get(id) {
return (new this.Class(id)).init();
get(id, isDefered) {
return (new this.Class(id)).init(isDefered);
}
urlFor(id) {