Skip to content

Commit 8038c00

Browse files
committed
Code refactoring, deangularisation, migrate to Promise
1 parent 093bedc commit 8038c00

13 files changed

Lines changed: 78 additions & 112 deletions

File tree

src/legacy/core_plugins/kibana/public/dashboard/saved_dashboard/saved_dashboards.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ savedObjectManagementRegistry.register({
3535
});
3636

3737
// This is the only thing that gets injected into controllers
38-
module.service('savedDashboards', function (Private, SavedDashboard, kbnUrl, chrome) {
38+
module.service('savedDashboards', function (Private, SavedDashboard) {
3939
const savedObjectClient = Private(SavedObjectsClientProvider);
40-
return new SavedObjectLoader(SavedDashboard, kbnUrl, chrome, savedObjectClient);
40+
return new SavedObjectLoader(SavedDashboard, savedObjectClient);
4141
});

src/legacy/core_plugins/kibana/public/discover/saved_searches/saved_searches.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ savedObjectManagementRegistry.register({
3131
title: 'searches'
3232
});
3333

34-
module.service('savedSearches', function (Private, SavedSearch, kbnUrl, chrome) {
34+
module.service('savedSearches', function (Private, SavedSearch) {
3535
const savedObjectClient = Private(SavedObjectsClientProvider);
36-
const savedSearchLoader = new SavedObjectLoader(SavedSearch, kbnUrl, chrome, savedObjectClient);
36+
const savedSearchLoader = new SavedObjectLoader(SavedSearch, savedObjectClient);
3737
// Customize loader properties since adding an 's' on type doesn't work for type 'search' .
3838
savedSearchLoader.loaderProperties = {
3939
name: 'searches',
@@ -42,7 +42,7 @@ module.service('savedSearches', function (Private, SavedSearch, kbnUrl, chrome)
4242
};
4343

4444
savedSearchLoader.urlFor = function (id) {
45-
return kbnUrl.eval('#/discover/{{id}}', { id: id });
45+
return `/discover/${encodeURIComponent(id)}`;
4646
};
4747

4848
return savedSearchLoader;

src/legacy/core_plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,11 @@ savedObjectManagementRegistry.register({
3434
title: 'visualizations',
3535
});
3636

37-
app.service('savedVisualizations', function (SavedVis, Private, kbnUrl, chrome) {
37+
app.service('savedVisualizations', function (SavedVis, Private, kbnUrl) {
3838
const visTypes = visualizations.types;
3939
const savedObjectClient = Private(SavedObjectsClientProvider);
4040
const saveVisualizationLoader = new SavedObjectLoader(
4141
SavedVis,
42-
kbnUrl,
43-
chrome,
4442
savedObjectClient
4543
);
4644

src/legacy/core_plugins/timelion/public/services/saved_sheets.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ savedObjectManagementRegistry.register({
3232
});
3333

3434
// This is the only thing that gets injected into controllers
35-
module.service('savedSheets', function (Private, SavedSheet, kbnUrl, chrome) {
35+
module.service('savedSheets', function (Private, SavedSheet, kbnUrl) {
3636
const savedObjectClient = Private(SavedObjectsClientProvider);
37-
const savedSheetLoader = new SavedObjectLoader(SavedSheet, kbnUrl, chrome, savedObjectClient);
37+
const savedSheetLoader = new SavedObjectLoader(SavedSheet, savedObjectClient);
3838
savedSheetLoader.urlFor = function (id) {
3939
return kbnUrl.eval('#/{{id}}', { id: id });
4040
};

src/legacy/ui/public/saved_objects/helpers/apply_es_resp.ts

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
* under the License.
1818
*/
1919
import _ from 'lodash';
20-
import { PromiseService } from 'ui/promises';
2120
import { EsResponse, SavedObject, SavedObjectConfig } from 'ui/saved_objects/types';
2221
import { parseSearchSource } from 'ui/saved_objects/helpers/parse_search_source';
2322
import { expandShorthand, SavedObjectNotFound } from '../../../../../plugins/kibana_utils/public';
@@ -26,8 +25,7 @@ import { IndexPattern } from '../../../../core_plugins/data/public';
2625
export async function applyEsResp(
2726
resp: EsResponse,
2827
savedObject: SavedObject,
29-
config: SavedObjectConfig,
30-
AngularPromise: PromiseService
28+
config: SavedObjectConfig
3129
) {
3230
const mapping = expandShorthand(config.mapping);
3331
const esType = config.type || '';
@@ -64,17 +62,15 @@ export async function applyEsResp(
6462
_.assign(savedObject, savedObject._source);
6563
savedObject.lastSavedTitle = savedObject.title;
6664

67-
return AngularPromise.try(() => {
68-
parseSearchSource(savedObject, esType, meta.searchSourceJSON, resp.references);
69-
return hydrateIndexPattern();
70-
})
71-
.then(() => {
72-
if (injectReferences && resp.references && resp.references.length > 0) {
73-
injectReferences(savedObject, resp.references);
74-
}
75-
return savedObject;
76-
})
77-
.then(() => {
78-
return AngularPromise.cast(afterESResp.call(savedObject));
79-
});
65+
try {
66+
await parseSearchSource(savedObject, esType, meta.searchSourceJSON, resp.references);
67+
await hydrateIndexPattern();
68+
if (injectReferences && resp.references && resp.references.length > 0) {
69+
injectReferences(savedObject, resp.references);
70+
}
71+
await afterESResp.call(savedObject);
72+
return savedObject;
73+
} catch (e) {
74+
throw e;
75+
}
8076
}

src/legacy/ui/public/saved_objects/helpers/build_saved_object.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
* under the License.
1818
*/
1919
import _ from 'lodash';
20-
import { PromiseService } from 'ui/promises';
2120
import { SearchSource } from 'ui/courier';
2221
import { hydrateIndexPattern } from 'ui/saved_objects/helpers/hydrate_index_pattern';
2322
import { intializeSavedObject } from 'ui/saved_objects/helpers/initialize_saved_object';
@@ -39,8 +38,7 @@ export function buildSavedObject(
3938
config: SavedObjectConfig = {},
4039
indexPatterns: IndexPatterns,
4140
savedObjectsClient: SavedObjectsClient,
42-
confirmModalPromise: ConfirmModalPromise,
43-
AngularPromise: PromiseService
41+
confirmModalPromise: ConfirmModalPromise
4442
) {
4543
// type name for this object, used as the ES-type
4644
const esType = config.type || '';
@@ -83,12 +81,9 @@ export function buildSavedObject(
8381
* @return {Promise}
8482
* @resolved {SavedObject}
8583
*/
86-
savedObject.init = _.once(() =>
87-
AngularPromise.resolve(intializeSavedObject(savedObject, savedObjectsClient, config))
88-
);
84+
savedObject.init = _.once(() => intializeSavedObject(savedObject, savedObjectsClient, config));
8985

90-
savedObject.applyESResp = (resp: EsResponse) =>
91-
applyEsResp(resp, savedObject, config, AngularPromise);
86+
savedObject.applyESResp = (resp: EsResponse) => applyEsResp(resp, savedObject, config);
9287

9388
/**
9489
* Serialize this object
@@ -118,23 +113,23 @@ export function buildSavedObject(
118113
opts,
119114
confirmModalPromise
120115
);
121-
return AngularPromise.resolve(result);
116+
return Promise.resolve(result);
122117
} catch (e) {
123-
return AngularPromise.reject(e);
118+
return Promise.reject(e);
124119
}
125120
};
126121

127122
savedObject.destroy = () => {};
128123

129-
savedObject.getFullPath = () => config.path + '/' + config.id;
124+
// savedObject.getFullPath = () => config.path + '/' + config.id;
130125

131126
/**
132127
* Delete this object from Elasticsearch
133128
* @return {promise}
134129
*/
135130
savedObject.delete = () => {
136131
if (!savedObject.id) {
137-
return AngularPromise.reject(new Error('Deleting a saved Object requires type and id'));
132+
return Promise.reject(new Error('Deleting a saved Object requires type and id'));
138133
}
139134
return savedObjectsClient.delete(esType, savedObject.id);
140135
};

src/legacy/ui/public/saved_objects/helpers/hydrate_index_pattern.ts

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
* under the License.
1818
*/
1919
import { SavedObject, SavedObjectConfig } from 'ui/saved_objects/types';
20-
import { IIndexPattern } from '../../../../../plugins/data/common/index_patterns';
2120
import { IndexPatterns } from '../../../../core_plugins/data/public/index_patterns/index_patterns';
2221

2322
/**
@@ -26,7 +25,7 @@ import { IndexPatterns } from '../../../../core_plugins/data/public/index_patter
2625
*
2726
* @return {Promise<IndexPattern | null>}
2827
*/
29-
export function hydrateIndexPattern(
28+
export async function hydrateIndexPattern(
3029
id: string,
3130
savedObject: SavedObject,
3231
indexPatterns: IndexPatterns,
@@ -36,28 +35,25 @@ export function hydrateIndexPattern(
3635
const indexPattern = config.indexPattern;
3736

3837
if (!savedObject.searchSource) {
39-
return Promise.resolve(null);
38+
return null;
4039
}
4140

4241
if (clearSavedIndexPattern) {
43-
savedObject.searchSource!.setField('index', null);
44-
return Promise.resolve(null);
42+
savedObject.searchSource!.setField('index', undefined);
43+
return null;
4544
}
4645

47-
let index = id || indexPattern || savedObject.searchSource!.getOwnField('index');
46+
const index = id || indexPattern || savedObject.searchSource!.getOwnField('index');
4847

49-
if (!index) {
50-
return Promise.resolve(null);
48+
if (typeof index !== 'string' || !index) {
49+
return null;
5150
}
5251

53-
// If index is not an IndexPattern object at savedObject point, then it's a string id of an index.
54-
if (typeof index === 'string') {
55-
index = indexPatterns.get(index);
52+
try {
53+
const indexObj = await indexPatterns.get(index);
54+
savedObject.searchSource!.setField('index', indexObj);
55+
} catch (e) {
56+
throw e;
5657
}
57-
58-
// At savedObject point index will either be an IndexPattern, if cached, or a promise that
59-
// will return an IndexPattern, if not cached.
60-
return Promise.resolve(index).then((ip: IIndexPattern) => {
61-
savedObject.searchSource!.setField('index', ip);
62-
});
58+
// If index is not an IndexPattern object at savedObject point, then it's a string id of an index.
6359
}

src/legacy/ui/public/saved_objects/helpers/initialize_saved_object.ts

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { SavedObjectsClient } from 'kibana/public';
2424
/**
2525
* Initialize saved object
2626
*/
27-
export function intializeSavedObject(
27+
export async function intializeSavedObject(
2828
savedObject: SavedObject,
2929
savedObjectsClient: SavedObjectsClient,
3030
config: SavedObjectConfig
@@ -35,33 +35,27 @@ export function intializeSavedObject(
3535
const customInit = config.init || _.noop;
3636
const afterESResp = config.afterESResp || _.noop;
3737

38-
return Promise.resolve()
39-
.then(() => {
40-
// If there is not id, then there is no document to fetch from elasticsearch
41-
if (!savedObject.id) {
42-
// just assign the defaults and be done
43-
_.assign(savedObject, savedObject.defaults);
44-
return savedObject.hydrateIndexPattern!().then(() => {
45-
return afterESResp.call(savedObject);
46-
});
47-
}
38+
if (!savedObject.id) {
39+
// just assign the defaults and be done
40+
_.assign(savedObject, savedObject.defaults);
41+
await savedObject.hydrateIndexPattern!();
42+
afterESResp.call(savedObject);
43+
return savedObject;
44+
}
4845

49-
// fetch the object from ES
50-
return savedObjectsClient
51-
.get(esType, savedObject.id)
52-
.then(resp => {
53-
// temporary compatability for savedObjectsClient
54-
return {
55-
_id: resp.id,
56-
_type: resp.type,
57-
_source: _.cloneDeep(resp.attributes),
58-
references: resp.references,
59-
found: !!resp._version,
60-
};
61-
})
62-
.then(savedObject.applyESResp)
63-
.catch(savedObject.applyEsResp);
64-
})
65-
.then(() => customInit.call(savedObject))
66-
.then(() => savedObject);
46+
try {
47+
const resp = await savedObjectsClient.get(esType, savedObject.id);
48+
const respMapped = {
49+
_id: resp.id,
50+
_type: resp.type,
51+
_source: _.cloneDeep(resp.attributes),
52+
references: resp.references,
53+
found: !!resp._version,
54+
};
55+
await savedObject.applyESResp(respMapped);
56+
} catch (e) {
57+
await savedObject.applyEsResp();
58+
}
59+
await customInit.call(savedObject);
60+
return savedObject;
6761
}

src/legacy/ui/public/saved_objects/helpers/save_saved_object.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ import {
2222
SavedObjectConfig,
2323
SaveOptions,
2424
} from 'ui/saved_objects/types';
25-
import { npStart } from 'ui/new_platform';
2625
import { SavedObjectsClient } from 'kibana/public';
2726
import { OVERWRITE_REJECTED, SAVE_DUPLICATE_REJECTED } from 'ui/saved_objects/constants';
2827

2928
import { createSource } from 'ui/saved_objects/helpers/create_source';
3029
import { checkForDuplicateTitle } from 'ui/saved_objects/helpers/check_for_duplicate_title';
30+
import { npStart } from 'ui/new_platform';
3131

3232
/**
3333
* @param error {Error} the error

src/legacy/ui/public/saved_objects/saved_object.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import { SavedObjectsClient } from 'kibana/public';
3131
import { IPrivate } from 'ui/private';
3232
import { SavedObjectConfig, SaveOptions } from 'ui/saved_objects/types';
33-
import { PromiseService } from 'ui/promises';
3433
import { buildSavedObject } from 'ui/saved_objects/helpers/build_saved_object';
3534
import { SavedObjectsClientProvider } from './saved_objects_client_provider';
3635
import { IndexPatterns } from '../../../core_plugins/data/public/index_patterns/index_patterns';
@@ -45,7 +44,6 @@ export interface SavedObject {
4544
}
4645

4746
export function SavedObjectProvider(
48-
Promise: PromiseService,
4947
Private: IPrivate,
5048
confirmModalPromise: ConfirmModalPromise,
5149
indexPatterns: IndexPatterns
@@ -68,8 +66,7 @@ export function SavedObjectProvider(
6866
config,
6967
indexPatterns,
7068
savedObjectsClient as SavedObjectsClient,
71-
confirmModalPromise,
72-
Promise
69+
confirmModalPromise
7370
);
7471
}
7572

0 commit comments

Comments
 (0)