Skip to content
This repository has been archived by the owner on Jul 16, 2023. It is now read-only.

Commit

Permalink
fix(search): 🐛 disable localsearch plugin was not added when algolia …
Browse files Browse the repository at this point in the history
…used without keys
  • Loading branch information
filipowm committed Aug 10, 2020
1 parent bb85c17 commit 62a6ffa
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 42 deletions.
39 changes: 3 additions & 36 deletions gatsby-config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// 08:46
require('dotenv').config();
const { algolia, localsearch } = require('./src/utils/search');
const { getSearchPlugins } = require('./src/utils/search');
const configManager = require('./src/utils/config');
const path = require('path');
const emoji = require('./src/utils/emoji');
Expand Down Expand Up @@ -237,41 +237,8 @@ if (config.features.rss && config.features.rss.enabled) {
});
}

if (config.features.search && config.features.search.enabled === true) {
if (
config.features.search.algoliaAppId &&
config.features.search.algoliaAdminKey &&
config.features.search.engine.toLowerCase() === 'algolia'
) {
plugins.push({
resolve: `gatsby-plugin-algolia`,
options: {
appId: config.features.search.algoliaAppId, // algolia application id
apiKey: config.features.search.algoliaAdminKey, // algolia admin key to index
queries: algolia(config.features.search.indexName, config.features.search.excerptSize),
chunkSize: 10000, // default: 1000
},
});
plugins.push( {
resolve: require.resolve(`./plugins/gatsby-plugin-disable-localsearch`),
options: {
name: 'Boogi',
},
})
} else if (config.features.search.engine.toLowerCase() === 'localsearch') {
const conf = localsearch(config.features.search.excerptSize);
plugins.push({
resolve: 'gatsby-plugin-local-search',
options: {
engine: 'flexsearch',
engineOptions: config.features.search.localSearchEngine,
...conf,
},
});
} else {
console.warn(`Unknown search engine: ${config.features.search.engine}`);
}
}
const searchPlugins = getSearchPlugins(config.features.search);
searchPlugins.forEach(plugin => plugins.push(plugin));

// check and add pwa functionality
if (config.pwa && config.pwa.enabled && config.pwa.manifest) {
Expand Down
67 changes: 61 additions & 6 deletions src/utils/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,65 @@ module.exports.algolia = (indexName, excerptSize) => {
};

module.exports.localsearch = (excerptSize) => ({
query: query(excerptSize),
normalizer: transformer,
query: query(excerptSize),
normalizer: transformer,
name: 'Boogi',
ref: 'objectID',
index: ['title', 'description', 'excerpt'],
store: ['slug', 'title', 'excerpt'],
});

const disableLocalSearchPlugin = {
resolve: require.resolve(`../../plugins/gatsby-plugin-disable-localsearch`),
options: {
name: 'Boogi',
ref: 'objectID',
index: ['title', 'description', 'excerpt'],
store: ['slug', 'title', 'excerpt']
})
},
};

const buildAlgoliaPluginConfig = (searchConfig) => {
if (searchConfig.algoliaAppId && searchConfig.algoliaAdminKey) {
return [
{
resolve: `gatsby-plugin-algolia`,
options: {
appId: searchConfig.algoliaAppId, // algolia application id
apiKey: searchConfig.algoliaAdminKey, // algolia admin key to index
queries: algolia(searchConfig.indexName, searchConfig.excerptSize),
chunkSize: 10000, // default: 1000
},
},
disableLocalSearchPlugin,
];
}
console.warn('Algolia App ID or Admin Key are not set!');
return [disableLocalSearchPlugin];
};

const buildLocalsearchPluginConfig = (searchConfig) => {
const conf = localsearch(searchConfig.excerptSize);
return [
{
resolve: 'gatsby-plugin-local-search',
options: {
engine: 'flexsearch',
engineOptions: searchConfig.localSearchEngine,
...conf,
},
},
];
};

module.exports.getSearchPlugins = (searchConfig) => {
if (!searchConfig || searchConfig.enabled !== true) {
return [disableLocalSearchPlugin];
}
switch (searchConfig.engine.toLowerCase()) {
case 'localsearch':
return buildLocalsearchPluginConfig(searchConfig);
case 'algolia':
return buildAlgoliaPluginConfig(searchConfig);
default:
console.warn(`Unsupported search engine: ${searchConfig.engine}`);
}
return [disableLocalSearchPlugin];
};

0 comments on commit 62a6ffa

Please sign in to comment.