Refactor sorting

This commit is contained in:
Rob Garrison 2018-12-27 06:21:12 -06:00
parent dfe47f3ca6
commit 1516f6c771

View File

@ -218,6 +218,16 @@ function initPopup() {
} }
function sortStyles({styles, getEnabled, getName}) {
const enabledFirst = prefs.get('popup.enabledFirst');
return styles.sort((a, b) => {
const aEnabled = getEnabled(a);
return enabledFirst && aEnabled !== getEnabled(b)
? aEnabled ? -1 : 1
: getName(a).localeCompare(getName(b));
});
}
function showStyles(styles) { function showStyles(styles) {
if (!styles) { if (!styles) {
return; return;
@ -228,31 +238,28 @@ function showStyles(styles) {
return; return;
} }
const enabledFirst = prefs.get('popup.enabledFirst');
styles.sort((a, b) => (
enabledFirst && a.enabled !== b.enabled
? a.enabled ? -1 : 1
: a.name.localeCompare(b.name)
));
const container = document.createDocumentFragment(); const container = document.createDocumentFragment();
styles.forEach(style => createStyleElement({style, container})); sortStyles({
styles,
getEnabled: entry => entry.enabled,
getName: entry => entry.name
})
.forEach(style => createStyleElement({style, container}));
installed.appendChild(container); installed.appendChild(container);
window.dispatchEvent(new Event('showStyles:done')); window.dispatchEvent(new Event('showStyles:done'));
} }
function sortStylesInPlace() { function sortStylesInPlace() {
if (prefs.get('popup.autoResort')) { if (prefs.get('popup.autoResort')) {
const enabledFirst = prefs.get('popup.enabledFirst');
const styles = $$('.entry', installed); const styles = $$('.entry', installed);
if (styles.length) { if (styles.length) {
styles.sort((a, b) => { sortStyles({
const aEnabled = a.styleMeta.enabled; styles,
return enabledFirst && aEnabled !== b.styleMeta.enabled getEnabled: entry => entry.styleMeta.enabled,
? aEnabled ? -1 : 1 getName: entry => entry.styleMeta.name
: a.styleMeta.name.localeCompare(b.styleMeta.name); })
}); .forEach(style => installed.appendChild(style));
styles.forEach(style => installed.appendChild(style));
} }
} }
} }