From c2f5cd994d4d02b8b2ed7ba7b8ab8911c8ad6216 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Mon, 11 Aug 2025 16:49:07 +0100 Subject: Add sorted tree structure to Drive_tree function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sort directories first, then files - Both categories sorted alphabetically (case-insensitive) - Recursive sorting applied to all tree levels - Server-side sorting for better performance 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- frontend/lib/drive_server.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/frontend/lib/drive_server.ts b/frontend/lib/drive_server.ts index 7e2193c..e6dd833 100644 --- a/frontend/lib/drive_server.ts +++ b/frontend/lib/drive_server.ts @@ -142,5 +142,26 @@ export async function Drive_tree(): Promise { } }); - return { root: rootNodes }; + // Third pass: sort all levels (directories first, then files, both alphabetically) + const sortNodes = (nodes: DriveTreeNode[]): DriveTreeNode[] => { + const sorted = nodes.sort((a, b) => { + // Directories first, then files + if (a.type === "dir" && b.type === "file") return -1; + if (a.type === "file" && b.type === "dir") return 1; + + // Both same type, sort alphabetically by name (case-insensitive) + return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); + }); + + // Recursively sort children + sorted.forEach(node => { + if (node.children) { + node.children = sortNodes(node.children); + } + }); + + return sorted; + }; + + return { root: sortNodes(rootNodes) }; } \ No newline at end of file -- cgit