diff --git a/manage/filters.js b/manage/filters.js index 01e99b0a..8e128ac0 100644 --- a/manage/filters.js +++ b/manage/filters.js @@ -156,7 +156,7 @@ function filterOnChange({target: el, forceRefilter}) { if (installed) { reapplyFilter(); } - debounce(sorter().updateSort); + sorter().updateSort(); } diff --git a/manage/manage.js b/manage/manage.js index e16696cd..2a3d7940 100644 --- a/manage/manage.js +++ b/manage/manage.js @@ -459,7 +459,7 @@ function handleUpdate(style, {reason, method} = {}) { handleUpdateInstalled(entry, reason); } filterAndAppend({entry}); - debounce(sorter().updateSort); + sorter().updateSort(); if (!entry.matches('.hidden') && reason !== 'import') { animateElement(entry); scrollElementIntoView(entry); diff --git a/manage/sort.js b/manage/sort.js index a2742f90..0f1b1b0c 100644 --- a/manage/sort.js +++ b/manage/sort.js @@ -144,35 +144,24 @@ const sorter = (() => { } function updateSort() { - const renderBin = document.createDocumentFragment(); - const entries = sortStyles({parser: 'entry'}); - const isDiffSort = [...installed.children].find((entry, index) => entry.id !== entries[index].id); - let index = 0; - function moveEntries() { - const t0 = performance.now(); - let moved = 0; - while ( - index < entries.length && - (++moved < 10 || performance.now() - t0 < 10) - ) { - renderBin.appendChild(entries[index++]); + getStylesSafe().then(styles => { + const renderBin = document.createDocumentFragment(); + const entries = sortStyles(styles); + const current = [...installed.children]; + const isDiffSort = entries.length !== current.length || + current.find((entry, index) => entry.id !== entries[index].id); + if (isDiffSort) { + entries.forEach(entry => renderBin.appendChild(entry)); + installed.appendChild(renderBin); + updateStripes(); } - if (index < entries.length) { - requestAnimationFrame(moveEntries); - return; - } - } - if (isDiffSort !== undefined) { - moveEntries(); - installed.appendChild(renderBin); - updateStripes(); - } + }); } function manageSort(event) { event.preventDefault(); prefs.set('manage.newUI.sort', this.value); - debounce(updateSort); + updateSort(); } function showSortHelp(event) { diff --git a/manage/updater-ui.js b/manage/updater-ui.js index 3cf85c8c..6e88ed31 100644 --- a/manage/updater-ui.js +++ b/manage/updater-ui.js @@ -144,7 +144,7 @@ function reportUpdateState(state, style, details) { } if (filtersSelector.hide) { filterAndAppend({entry}); - debounce(sorter().updateSort); + sorter().updateSort(); } }