Skip to content

Commit 8611061

Browse files
committed
address review 2
1 parent b547351 commit 8611061

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

src/static/js/client/sidebar-search.js

+21-9
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ export const info = {
7474
stoppedScrollingTimeout: null,
7575

7676
indexDownloadStatuses: Object.create(null),
77+
78+
currentValue: null,
7779
},
7880

7981
session: {
@@ -298,22 +300,32 @@ export function mutatePageContent() {
298300
info.searchBox.appendChild(info.endSearchLine);
299301
}
300302

303+
function trackSidebarSearchInputChanged() {
304+
const {state} = info;
305+
306+
const newValue = info.searchInput.value;
307+
308+
if (newValue === state.currentValue) {
309+
return false;
310+
} else {
311+
state.currentValue = newValue;
312+
return !!newValue;
313+
}
314+
}
315+
301316
export function addPageListeners() {
302317
if (!info.searchInput) return;
303318

304-
let prevValue = null;
305319
info.searchInput.addEventListener('change', _domEvent => {
306-
if (info.searchInput.value && info.searchInput.value !== prevValue) {
320+
if (trackSidebarSearchInputChanged()) {
307321
activateSidebarSearch(info.searchInput.value);
308322
}
309-
prevValue = info.searchInput.value;
310323
});
311324

312325
info.searchInput.addEventListener('input', _domEvent => {
313326
const {settings, state} = info;
314327

315-
if (prevValue === info.searchInput.value) return;
316-
prevValue = info.searchInput.value;
328+
trackSidebarSearchInputChanged();
317329

318330
if (!info.searchInput.value) {
319331
clearSidebarSearch();
@@ -604,7 +616,7 @@ function showSidebarSearchResults(results) {
604616
}
605617

606618
for (const result of flatResults) {
607-
const el = generateSidebarSearchResult(result, info);
619+
const el = generateSidebarSearchResult(result);
608620
if (!el) continue;
609621

610622
info.results.appendChild(el);
@@ -620,7 +632,7 @@ function showSidebarSearchResults(results) {
620632
restoreSidebarSearchResultsScrollOffset();
621633
}
622634

623-
function generateSidebarSearchResult(result, info) {
635+
function generateSidebarSearchResult(result) {
624636
const preparedSlots = {
625637
color:
626638
result.data.color ?? null,
@@ -691,7 +703,7 @@ function generateSidebarSearchResult(result, info) {
691703
return null;
692704
}
693705

694-
return generateSidebarSearchResultTemplate(preparedSlots, info);
706+
return generateSidebarSearchResultTemplate(preparedSlots);
695707
}
696708

697709
function getSearchResultImageSource(result) {
@@ -704,7 +716,7 @@ function getSearchResultImageSource(result) {
704716
'rebaseThumb'));
705717
}
706718

707-
function generateSidebarSearchResultTemplate(slots, info) {
719+
function generateSidebarSearchResultTemplate(slots) {
708720
const link = document.createElement('a');
709721
link.classList.add('wiki-search-result');
710722

0 commit comments

Comments
 (0)