summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-plugin-search/src
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-10-03 00:59:26 +0200
committerSamy Pesse <samypesse@gmail.com>2016-10-03 00:59:26 +0200
commit3ae72bb47c146212d40fc74d857880fa0616ae57 (patch)
tree28986218bb512580272f9709fbdee01f6ede52dd /packages/gitbook-plugin-search/src
parentcd2d5e5101edb466b13ada19b09ea42ef726ad96 (diff)
downloadgitbook-3ae72bb47c146212d40fc74d857880fa0616ae57.zip
gitbook-3ae72bb47c146212d40fc74d857880fa0616ae57.tar.gz
gitbook-3ae72bb47c146212d40fc74d857880fa0616ae57.tar.bz2
Sync search with querystring
Diffstat (limited to 'packages/gitbook-plugin-search/src')
-rw-r--r--packages/gitbook-plugin-search/src/actions/search.js15
-rw-r--r--packages/gitbook-plugin-search/src/index.js13
2 files changed, 25 insertions, 3 deletions
diff --git a/packages/gitbook-plugin-search/src/actions/search.js b/packages/gitbook-plugin-search/src/actions/search.js
index 7d42917..b4f811e 100644
--- a/packages/gitbook-plugin-search/src/actions/search.js
+++ b/packages/gitbook-plugin-search/src/actions/search.js
@@ -8,14 +8,24 @@ const TYPES = require('./types');
* @return {Action}
*/
function query(q) {
+ return (dispatch, getState, { Navigation }) => {
+ dispatch(Navigation.updateQuery({ q }));
+ };
+}
+
+
+/**
+ * Update results for a query
+ * @param {String} q
+ * @return {Action}
+ */
+function handleQuery(q) {
if (!q) {
return clear();
}
return (dispatch, getState, { Navigation }) => {
const { handlers } = getState().search;
-
- dispatch(Navigation.updateQuery({ q }));
dispatch({ type: TYPES.START, query: q });
return Promise.reduce(
@@ -64,6 +74,7 @@ function unregisterHandler(name) {
module.exports = {
clear,
query,
+ handleQuery,
registerHandler,
unregisterHandler
};
diff --git a/packages/gitbook-plugin-search/src/index.js b/packages/gitbook-plugin-search/src/index.js
index f08d5d6..05c2056 100644
--- a/packages/gitbook-plugin-search/src/index.js
+++ b/packages/gitbook-plugin-search/src/index.js
@@ -5,8 +5,19 @@ const SearchResults = require('./components/Results');
const reducers = require('./reducers');
const Search = require('./actions/search');
+const onLocationChange = (location, dispatch) => {
+ const { query } = location;
+ const q = query.get('q');
+
+ dispatch(Search.handleQuery(q));
+};
+
module.exports = GitBook.createPlugin({
- init: (dispatch, getState, { Components }) => {
+ init: (dispatch, getState, { Navigation, Components }) => {
+ // Register the navigation handler
+ dispatch(Navigation.listen(onLocationChange));
+
+ // Register components
dispatch(Components.registerComponent(SearchInput, { role: 'search:input' }));
dispatch(Components.registerComponent(SearchResults, { role: 'search:results' }));
},