From 0edc73476633daeca3aa1bf5bc08fb0b4a1ac234 Mon Sep 17 00:00:00 2001 From: Andreas Schulte <0x0001f346@pm.me> Date: Wed, 3 Sep 2025 23:17:24 +0200 Subject: [PATCH] feat: add case-sensitive sorting for file list --- app/assets/script.js | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/app/assets/script.js b/app/assets/script.js index 4ee9fe4..42cddf2 100644 --- a/app/assets/script.js +++ b/app/assets/script.js @@ -80,7 +80,8 @@ } try { - const files = await fileListRequest(); + let files = await fileListRequest(); + files = fileSortFiles(files, "name-asc"); state.files = {}; fileListClear(); fileListRender(files); @@ -168,6 +169,32 @@ return cleanedFilename + extension; } + function fileSortFiles(files, mode = "name-asc") { + function cmpCodePoint(a, b) { + if (a === b) return 0; + return a < b ? -1 : 1; + } + + const arr = files.slice(); + + switch (mode) { + case "name-asc": + arr.sort((a, b) => cmpCodePoint(a.Name, b.Name)); + break; + case "name-desc": + arr.sort((a, b) => cmpCodePoint(b.Name, a.Name)); + break; + case "size-asc": + arr.sort((a, b) => a.Size - b.Size); + break; + case "size-desc": + arr.sort((a, b) => b.Size - a.Size); + break; + } + + return arr; + } + function fileValidateBeforeUpload(files) { for (const f of files) { const safeName = fileSanitizeName(f.name);