fix(search): ensure results are deduplicated
This commit is contained in:
parent
5684b461fd
commit
55da3dc27b
4 changed files with 31 additions and 23 deletions
|
@ -117,6 +117,7 @@ description: Search through posts and other content on my site.
|
|||
let total = 0;
|
||||
let debounceTimeout;
|
||||
let isLoading = false;
|
||||
const resultIds = new Set();
|
||||
|
||||
const generateResultHTML = ({ title, url, description, type, tags, genre_name, genre_url, total_plays }) => `
|
||||
<article class="search__results--result">
|
||||
|
@ -215,13 +216,14 @@ description: Search through posts and other content on my site.
|
|||
}
|
||||
|
||||
showLoadingMessage();
|
||||
|
||||
$loadMoreButton.style.display = "none";
|
||||
|
||||
const results = await loadSearchIndex(query, getSelectedSections(), 1);
|
||||
|
||||
currentResults = results;
|
||||
currentPage = 1;
|
||||
currentResults = results;
|
||||
resultIds.clear();
|
||||
results.forEach((r) => resultIds.add(r.id));
|
||||
|
||||
updateSearchResults(results);
|
||||
};
|
||||
|
@ -241,9 +243,15 @@ description: Search through posts and other content on my site.
|
|||
|
||||
const nextResults = await loadSearchIndex($input.value.trim(), getSelectedSections(), currentPage);
|
||||
|
||||
currentResults = [...currentResults, ...nextResults];
|
||||
const filteredResults = nextResults.filter((item) => {
|
||||
if (resultIds.has(item.id)) return false;
|
||||
resultIds.add(item.id);
|
||||
return true;
|
||||
});
|
||||
|
||||
updateSearchResults(nextResults);
|
||||
currentResults = [...currentResults, ...filteredResults];
|
||||
|
||||
updateSearchResults(filteredResults);
|
||||
});
|
||||
})();
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue