feat: implement sorting functionality for skins using default windows sorting algotythm

This commit is contained in:
HorizonCode committed 2026-02-23 18:23:46 +01:00
1 parent 1fc0391113
commit 31b7d17b09
2 files changed
+24 -3

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
const specialOrder = "'-!#$%&(),;@[]^_`{}~+=";
const priority = Object.fromEntries([...specialOrder].map((c, i) => [c, i]));
const osuSkinsCollator = new Intl.Collator(undefined, {
numeric: true,
sensitivity: 'base',
});
export const sortSkins = (skins: { name: string, author: string | undefined, modified: number}[]) =>
skins.sort((a, b) => {
const pa = priority[a.name[0]];
const pb = priority[b.name[0]];
if (pa !== undefined || pb !== undefined) {
if (pa === undefined) return 1;
if (pb === undefined) return -1;
return pa - pb;
}
return osuSkinsCollator.compare(a.name, b.name);
});