Skip to content

Commit 20f50b8

Browse files
Modernize algoliasearch code
1 parent dbe4100 commit 20f50b8

File tree

4 files changed

+160
-124
lines changed

4 files changed

+160
-124
lines changed

app/services/algolia.js

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,36 @@
11
import Service from '@ember/service';
2-
import algoliasearch from 'algoliasearch/dist/algoliasearchLite';
2+
import algoliaSearch from 'algoliasearch/lite';
33
import config from 'ember-api-docs/config/environment';
4-
import { denodeify } from 'rsvp';
54

6-
export default Service.extend({
7-
_search(query, params, callback) {
8-
if (!callback) {
9-
callback = params;
10-
params = undefined;
5+
export default class AlgoliaService extends Service {
6+
constructor() {
7+
super(...arguments);
8+
this.indexes = {};
9+
this.client = algoliaSearch(config.algolia.algoliaId, config.algolia.algoliaKey);
10+
}
11+
12+
search(query, params = undefined) {
13+
if (!query) {
14+
return Promise.reject(`Could not search algolia for query "${query}"`);
1115
}
12-
if (query) {
13-
if (Array.isArray(query) && !params) {
14-
// if multiple indices
15-
this._client.search(query, callback);
16-
} else if (!params) {
17-
// if no params
18-
this.accessIndex(query.indexName).search(query.query, callback);
19-
} else {
20-
// if params and callback
21-
this.accessIndex(query.indexName).search(query.query, params, callback);
22-
}
23-
} else {
24-
callback(new Error(`Could not search algolia for query "${query}"`));
16+
17+
if (Array.isArray(query) && !params) {
18+
// if multiple indices
19+
return this.client.search(query);
2520
}
26-
},
2721

28-
accessIndex(IndexName) {
29-
if (!this._indices[IndexName]) {
30-
this._indices[IndexName] = this._client.initIndex(IndexName);
22+
if (!params) {
23+
return this.accessIndex(query.indexName).search(query.query);
24+
}
25+
26+
return this.accessIndex(query.indexName).search(query.query, params);
27+
}
28+
29+
accessIndex(indexName) {
30+
if (!this.indexes[indexName]) {
31+
this.indexes[indexName] = this.client.initIndex(indexName);
3132
}
32-
return this._indices[IndexName];
33-
},
3433

35-
init() {
36-
this._super(...arguments);
37-
this._client = algoliasearch(config.algolia.algoliaId, config.algolia.algoliaKey);
38-
this._indices = {};
39-
this.search = denodeify(this._search.bind(this));
34+
return this.indexes[indexName];
4035
}
41-
});
36+
}

app/services/search.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,12 @@ export default Service.extend({
1212

1313
results: emberArray(),
1414

15-
search: task(function * (query) {
15+
search: task(function*(query) {
1616
const projectVersion = this._projectVersion;
1717

1818
const params = {
1919
hitsPerPage: 15,
20-
restrictSearchableAttributes: [
21-
'hierarchy.lvl0',
22-
'hierarchy.lvl1',
23-
'hierarchy.lvl2'
24-
],
20+
restrictSearchableAttributes: ['hierarchy.lvl0', 'hierarchy.lvl1', 'hierarchy.lvl2'],
2521
tagFilters: [`version:${projectVersion}`],
2622
facetFilters: ['access:-private']
2723
};
@@ -31,11 +27,11 @@ export default Service.extend({
3127
query
3228
};
3329

34-
return set(this, 'results', (yield this.doSearch(searchObj, params)));
30+
const results = yield this.doSearch(searchObj, params);
31+
return set(this, 'results', results);
3532
}).restartable(),
3633

3734
doSearch(searchObj, params) {
38-
return this._algoliaService.search(searchObj, params)
39-
.then(results => get(results, 'hits'));
35+
return this._algoliaService.search(searchObj, params).then(results => get(results, 'hits'));
4036
}
4137
});

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"test": "node run-tests.js"
2222
},
2323
"dependencies": {
24+
"algoliasearch": "^4.0.3",
2425
"bourbon": "5.1.0",
2526
"ember-cli-browserstack": "^1.0.1",
2627
"ember-rfc176-data": "^0.3.12",
@@ -38,7 +39,6 @@
3839
"devDependencies": {
3940
"@ember/jquery": "^0.5.2",
4041
"@ember/optional-features": "^0.6.3",
41-
"algoliasearch": "^3.32.1",
4242
"broccoli-asset-rev": "^3.0.0",
4343
"ember-a11y-testing": "^0.5.4",
4444
"ember-anchor": "^1.0.3",

0 commit comments

Comments
 (0)