Unify history interactions in search
This commit is contained in:
parent
0966f3202d
commit
9f509429cd
1 changed files with 14 additions and 15 deletions
|
@ -2160,6 +2160,18 @@ function initSearch(rawSearchIndex) {
|
|||
printTab(currentTab);
|
||||
}
|
||||
|
||||
function updateSearchHistory(url) {
|
||||
if (!browserSupportsHistoryApi()) {
|
||||
return;
|
||||
}
|
||||
const params = searchState.getQueryStringParams();
|
||||
if (!history.state && !params.search) {
|
||||
history.pushState(null, "", url);
|
||||
} else {
|
||||
history.replaceState(null, "", url);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a search based on the current state of the search input element
|
||||
* and display the results.
|
||||
|
@ -2196,15 +2208,7 @@ function initSearch(rawSearchIndex) {
|
|||
|
||||
// Because searching is incremental by character, only the most
|
||||
// recent search query is added to the browser history.
|
||||
if (browserSupportsHistoryApi()) {
|
||||
const newURL = buildUrl(query.original, filterCrates);
|
||||
|
||||
if (!history.state && !params.search) {
|
||||
history.pushState(null, "", newURL);
|
||||
} else {
|
||||
history.replaceState(null, "", newURL);
|
||||
}
|
||||
}
|
||||
updateSearchHistory(buildUrl(query.original, filterCrates));
|
||||
|
||||
showResults(
|
||||
execQuery(query, searchWords, filterCrates, window.currentCrate),
|
||||
|
@ -2670,13 +2674,8 @@ function initSearch(rawSearchIndex) {
|
|||
function updateCrate(ev) {
|
||||
if (ev.target.value === "all crates") {
|
||||
// If we don't remove it from the URL, it'll be picked up again by the search.
|
||||
const params = searchState.getQueryStringParams();
|
||||
const query = searchState.input.value.trim();
|
||||
if (!history.state && !params.search) {
|
||||
history.pushState(null, "", buildUrl(query, null));
|
||||
} else {
|
||||
history.replaceState(null, "", buildUrl(query, null));
|
||||
}
|
||||
updateSearchHistory(buildUrl(query, null));
|
||||
}
|
||||
// In case you "cut" the entry from the search input, then change the crate filter
|
||||
// before paste back the previous search, you get the old search results without
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue