MCPcopy Create free account
hub / github.com/error311/FileRise / sortSubfoldersForCurrentOrder

Function sortSubfoldersForCurrentOrder

public/js/fileListView.js:7115–7251  ·  view source on GitHub ↗
(subfolders)

Source from the content-addressed store, hash-verified

7113}
7114
7115async function sortSubfoldersForCurrentOrder(subfolders) {
7116 const base = Array.isArray(subfolders) ? [...subfolders] : [];
7117 if (!base.length) return base;
7118
7119 const sourceId = getActivePaneSourceId();
7120 const col = sortOrder?.column || "uploaded";
7121 const ascending = sortOrder?.ascending !== false;
7122 const dir = ascending ? 1 : -1;
7123
7124 // Name sort (A–Z / Z–A)
7125 if (col === "name") {
7126 base.sort((a, b) => {
7127 const n1 = (a.name || "").toLowerCase();
7128 const n2 = (b.name || "").toLowerCase();
7129 if (n1 < n2) return -1 * dir;
7130 if (n1 > n2) return 1 * dir;
7131 return 0;
7132 });
7133 return base;
7134 }
7135
7136 // Size sort – use folder stats (bytes)
7137 if (col === "size" || col === "filesize") {
7138 const statsList = await Promise.all(
7139 base.map(sf => fetchFolderStats(sf.full, sourceId).catch(() => null))
7140 );
7141
7142 const decorated = base.map((sf, idx) => {
7143 const stats = statsList[idx];
7144 let bytes = 0;
7145
7146 if (stats) {
7147 const candidates = [
7148 stats.bytes,
7149 stats.sizeBytes,
7150 stats.size,
7151 stats.totalBytes
7152 ];
7153 for (const v of candidates) {
7154 const n = Number(v);
7155 if (Number.isFinite(n) && n >= 0) {
7156 bytes = n;
7157 break;
7158 }
7159 }
7160 }
7161
7162 return { sf, bytes };
7163 });
7164
7165 decorated.sort((a, b) => {
7166 if (a.bytes < b.bytes) return -1 * dir;
7167 if (a.bytes > b.bytes) return 1 * dir;
7168
7169 // tie-break by name
7170 const n1 = (a.sf.name || "").toLowerCase();
7171 const n2 = (b.sf.name || "").toLowerCase();
7172 if (n1 < n2) return -1 * dir;

Callers 1

renderFileTableFunction · 0.85

Calls 3

fetchFolderStatsFunction · 0.85
parseCustomDateFunction · 0.85
getActivePaneSourceIdFunction · 0.70

Tested by

no test coverage detected