Skip to content

Commit e1e9550

Browse files
committed
feat: added files sorting
1 parent 7b26f07 commit e1e9550

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

src/public/reducers/file-list.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,25 @@ const dummyFiles: TreeFile[] = [
238238
}
239239
];
240240

241+
const updateFile = (file: File, change: FileVague): File => {
242+
return Object.assign({}, file, change);
243+
}
244+
245+
const updateState = (state: FileListState, change: FileListStateVague) => {
246+
return Object.assign({}, state, change);
247+
}
248+
249+
/**
250+
* Returns new File object with sorted children inside
251+
* 1. Directories go before files.
252+
* 2. Alphabetic order.
253+
*/
254+
const sortChildrenOfFile = (state: FileListState, fileId: FileId): File => {
255+
const file = state.files.get(fileId);
256+
const children = state.files.get(fileId).children.map(fId => state.files.get(fId)).sort((f1, f2) => (+!(f1.isDirectory) - +!(f2.isDirectory)) || f1.filename.localeCompare(f2.filename)).map(f => f.id);
257+
return updateFile(file, { children });
258+
}
259+
241260
let filesFiles = Map<FileId, File>().withMutations((map) => {
242261
let nextId = 1;
243262

@@ -247,6 +266,7 @@ let filesFiles = Map<FileId, File>().withMutations((map) => {
247266
const children = treeFile.children ? treeFile.children.map(mapTreeFileToFile) : [];
248267
const file: File = { id, isRoot: false, filename, isSelected, isDirectory, isExpanded, extension, content, children: treeFile.children ? treeFile.children.map(mapTreeFileToFile) : [] };
249268
map.set(id, file)
269+
map.set(id, sortChildrenOfFile({ files: map, open: null, selected: null }, id))// fixme
250270

251271
return id;
252272
}
@@ -262,19 +282,12 @@ let filesFiles = Map<FileId, File>().withMutations((map) => {
262282
isExpanded: false,
263283
isSelected: false
264284
});
285+
map.set(0, sortChildrenOfFile({ files: map, open: null, selected: null }, 0))// fixme
265286
});
266287

267288
const dummyState: FileListState = { files: filesFiles, open: null, selected: null };
268289
(window as any).zzz = dummyState;
269290

270-
const updateFile = (file: File, change: FileVague): File => {
271-
return Object.assign({}, file, change);
272-
}
273-
274-
const updateState = (state: FileListState, change: FileListStateVague) => {
275-
return Object.assign({}, state, change);
276-
}
277-
278291
const reducer = (state = dummyState, action: FileListActions | CodeChangedLocalAction | CodeChangedRemoteAction) => {
279292
console.log(action);
280293
switch (action.type) {

0 commit comments

Comments
 (0)