summaryrefslogtreecommitdiff
path: root/frontend/lib/drive_server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/lib/drive_server.ts')
-rw-r--r--frontend/lib/drive_server.ts23
1 files changed, 22 insertions, 1 deletions
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<DriveTreeResponse> {
142 } 142 }
143 }); 143 });
144 144
145 return { root: rootNodes }; 145 // Third pass: sort all levels (directories first, then files, both alphabetically)
146 const sortNodes = (nodes: DriveTreeNode[]): DriveTreeNode[] => {
147 const sorted = nodes.sort((a, b) => {
148 // Directories first, then files
149 if (a.type === "dir" && b.type === "file") return -1;
150 if (a.type === "file" && b.type === "dir") return 1;
151
152 // Both same type, sort alphabetically by name (case-insensitive)
153 return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
154 });
155
156 // Recursively sort children
157 sorted.forEach(node => {
158 if (node.children) {
159 node.children = sortNodes(node.children);
160 }
161 });
162
163 return sorted;
164 };
165
166 return { root: sortNodes(rootNodes) };
146} \ No newline at end of file 167} \ No newline at end of file