diff options
-rw-r--r-- | packages/gitbook-core/src/actions/navigation.js | 39 | ||||
-rw-r--r-- | packages/gitbook-plugin-search/src/actions/search.js | 10 |
2 files changed, 19 insertions, 30 deletions
diff --git a/packages/gitbook-core/src/actions/navigation.js b/packages/gitbook-core/src/actions/navigation.js index f90f5a2..bb58595 100644 --- a/packages/gitbook-core/src/actions/navigation.js +++ b/packages/gitbook-core/src/actions/navigation.js @@ -39,7 +39,7 @@ function deactivate() { * @param {String|Location} location * @return {Action} action */ -function pushURI(location) { +function push(location) { return (dispatch, getState) => { const { history } = getState().navigation; location = Location.fromNative(location); @@ -57,7 +57,7 @@ function pushURI(location) { * @param {String|Location} location * @return {Action} action */ -function replaceURI(location) { +function replace(location) { return (dispatch, getState) => { const { history } = getState().navigation; location = Location.fromNative(location); @@ -97,16 +97,16 @@ function listen(listener) { * @return {Action} action */ function fetchPage(uri, options = {}) { - const { replace } = options; + const shouldReplace = options.replace; return (dispatch, getState) => { const prevURI = location.href; dispatch({ type: ACTION_TYPES.PAGE_FETCH_START }); - if (replace) { - dispatch(replaceURI(uri)); + if (shouldReplace) { + dispatch(replace(uri)); } else { - dispatch(pushURI(uri)); + dispatch(push(uri)); } window.fetch(uri, { @@ -130,7 +130,7 @@ function fetchPage(uri, options = {}) { ) .catch( error => { - dispatch(replaceURI(prevURI)); + dispatch(replace(prevURI)); dispatch(redirect(uri)); dispatch({ type: ACTION_TYPES.PAGE_FETCH_ERROR, error }); @@ -148,31 +148,12 @@ function fetchArticle(article) { return fetchPage(article.path); } -/** - * Update anchor for current page - * @param {String} hash - * @return {Action} action - */ -function updateAnchor(hash) { - return pushURI({ hash }); -} - -/** - * Update query for current page - * @param {Object|Map} query - * @return {Action} action - */ -function updateQuery(query) { - return pushURI({ query }); -} - module.exports = { activate, deactivate, listen, - pushURI, + push, + replace, fetchPage, - fetchArticle, - updateAnchor, - updateQuery + fetchArticle }; diff --git a/packages/gitbook-plugin-search/src/actions/search.js b/packages/gitbook-plugin-search/src/actions/search.js index c71eda2..07d1311 100644 --- a/packages/gitbook-plugin-search/src/actions/search.js +++ b/packages/gitbook-plugin-search/src/actions/search.js @@ -17,7 +17,14 @@ const TYPES = require('./types'); */ function query(q) { return (dispatch, getState, { Navigation }) => { - dispatch(Navigation.updateQuery({ q })); + const searchState = getState().search; + const currentQuery = searchState.query; + + if (currentQuery && q) { + dispatch(Navigation.replace({ query: { q } })); + } else { + dispatch(Navigation.push({ query: { q } })); + } }; } @@ -33,6 +40,7 @@ function handleQuery(q) { return (dispatch, getState, { Navigation }) => { const { handlers } = getState().search; + dispatch({ type: TYPES.START, query: q }); return Promise.reduce( |