From f7b74453ab2794b882454dbfebc4c9b2b78fcb51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 20 Oct 2016 11:30:29 -0200 Subject: [PATCH] bugfix. Closes #122 --- .../providers/algolia/implementation.js | 40 +++++++++---------- src/reducers/entries.js | 4 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/integrations/providers/algolia/implementation.js b/src/integrations/providers/algolia/implementation.js index 0fd7f517..4eb90d2c 100644 --- a/src/integrations/providers/algolia/implementation.js +++ b/src/integrations/providers/algolia/implementation.js @@ -16,12 +16,12 @@ export default class Algolia { this.applicationID = config.get('applicationID'); this.apiKey = config.get('apiKey'); - this.searchURL = `https://${this.applicationID}-dsn.algolia.net/1`; + this.searchURL = `https://${ this.applicationID }-dsn.algolia.net/1`; this.entriesCache = { collection: null, page: null, - entries: [] + entries: [], }; } @@ -30,7 +30,7 @@ export default class Algolia { 'X-Algolia-API-Key': this.apiKey, 'X-Algolia-Application-Id': this.applicationID, 'Content-Type': 'application/json', - ...headers + ...headers, }; } @@ -48,11 +48,11 @@ export default class Algolia { const params = []; if (options.params) { for (const key in options.params) { - params.push(`${key}=${encodeURIComponent(options.params[key])}`); + params.push(`${ key }=${ encodeURIComponent(options.params[key]) }`); } } if (params.length) { - path += `?${params.join('&')}`; + path += `?${ params.join('&') }`; } return path; } @@ -60,7 +60,7 @@ export default class Algolia { request(path, options = {}) { const headers = this.requestHeaders(options.headers || {}); const url = this.urlFor(path, options); - return fetch(url, { ...options, headers: headers }).then((response) => { + return fetch(url, { ...options, headers }).then((response) => { const contentType = response.headers.get('Content-Type'); if (contentType && contentType.match(/json/)) { return this.parseJsonResponse(response); @@ -72,14 +72,14 @@ export default class Algolia { search(collections, searchTerm, page) { const searchCollections = collections.map(collection => ( - { indexName: collection, params: `query=${searchTerm}&page=${page}` } + { indexName: collection, params: `query=${ searchTerm }&page=${ page }` } )); - return this.request(`${this.searchURL}/indexes/*/queries`, { + return this.request(`${ this.searchURL }/indexes/*/queries`, { method: 'POST', - body: JSON.stringify({ requests: searchCollections }) - }).then(response => { - const entries = response.results.map((result, index) => result.hits.map(hit => { + body: JSON.stringify({ requests: searchCollections }), + }).then((response) => { + const entries = response.results.map((result, index) => result.hits.map((hit) => { const slug = hit.slug || getSlug(hit.path); return createEntry(collections[index], slug, hit.path, { data: hit.data, partial: true }); })); @@ -89,11 +89,11 @@ export default class Algolia { } searchBy(field, collection, query) { - return this.request(`${this.searchURL}/indexes/${collection}`, { + return this.request(`${ this.searchURL }/indexes/${ collection }`, { params: { restrictSearchableAttributes: field, - query - } + query, + }, }); } @@ -101,14 +101,14 @@ export default class Algolia { if (this.entriesCache.collection === collection && this.entriesCache.page === page) { return Promise.resolve({ page: this.entriesCache.page, entries: this.entriesCache.entries }); } else { - return this.request(`${this.searchURL}/indexes/${collection.get('name')}`, { - params: { page } - }).then(response => { - const entries = response.hits.map(hit => { + return this.request(`${ this.searchURL }/indexes/${ collection.get('name') }`, { + params: { page }, + }).then((response) => { + const entries = response.hits.map((hit) => { const slug = hit.slug || getSlug(hit.path); return createEntry(collection.get('name'), slug, hit.path, { data: hit.data, partial: true }); }); - this.entriesCache = { collection, page, entries }; + this.entriesCache = { collection, pagination: response.page, entries }; return { entries, pagination: response.page }; }); } @@ -116,7 +116,7 @@ export default class Algolia { getEntry(collection, slug) { return this.searchBy('slug', collection.get('name'), slug).then((response) => { - const entry = response.hits.filter((hit) => hit.slug === slug)[0]; + const entry = response.hits.filter(hit => hit.slug === slug)[0]; return createEntry(collection.get('name'), slug, entry.path, { data: entry.data, partial: true }); }); } diff --git a/src/reducers/entries.js b/src/reducers/entries.js index c1971af4..8e5b36ca 100644 --- a/src/reducers/entries.js +++ b/src/reducers/entries.js @@ -31,16 +31,16 @@ const entries = (state = Map({ entities: Map(), pages: Map() }), action) => { collection = action.payload.collection; loadedEntries = action.payload.entries; page = action.payload.page; + return state.withMutations((map) => { loadedEntries.forEach(entry => ( map.setIn(['entities', `${ collection }.${ entry.slug }`], fromJS(entry).set('isFetching', false)) )); const ids = List(loadedEntries.map(entry => entry.slug)); - map.setIn(['pages', collection], Map({ page, - ids: page === 0 ? ids : map.getIn(['pages', collection, 'ids'], List()).concat(ids), + ids: (!page || page === 0) ? ids : map.getIn(['pages', collection, 'ids'], List()).concat(ids), })); });