Skip to content

Commit bdf7fca

Browse files
josh-ramos-22Josh Ramos
andauthored
[WEB-31] Bug renaming reordering issue (and also WEB-68) (#377)
* temp fix to rename input field not updating after 1st refresh * possible workaround of having files displayed in alphabetical order * added code to add priority to folders * capitalised type names in comparator * removed debugging console statements * removed more dangling debugging comments * revereded renameFileEntity to its original format --------- Co-authored-by: Josh Ramos <josh.ramos@student.unsw.edu.au>
1 parent 46a336b commit bdf7fca

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
lines changed

frontend/src/packages/dashboard/components/FileRenderer/FolderContainer.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ export default function FolderContainer({
5454
console.log(id);
5555
dispatch(traverseIntoFolder(id));
5656
};
57-
5857
return (
5958
<IconContainer>
6059
<FolderIcon

frontend/src/packages/dashboard/components/FileRenderer/Renamable.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ interface Props {
1717

1818
export default function Renamable({ name, id }: Props) {
1919
const [toggle, setToggle] = useState(true);
20-
const [inputName, setInputName] = useState(name);
20+
const [inputName, setInputName] = useState<string>(name);
2121

2222
const dispatch = useDispatch();
2323

@@ -30,7 +30,12 @@ export default function Renamable({ name, id }: Props) {
3030
return (
3131
<>
3232
{toggle ? (
33-
<div onDoubleClick={() => setToggle(false)}>{name}</div>
33+
<div onDoubleClick={() => {
34+
setToggle(false);
35+
// required as browser doesn't update inputName
36+
// after first refresh of page after renaming
37+
setInputName(name);
38+
}}>{name}</div>
3439
) : (
3540
<input
3641
style={{

frontend/src/packages/dashboard/components/FileRenderer/Renderer.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { RootState } from 'src/redux-state/reducers';
44
import { folderSelectors } from '../../state/folders/index';
55
import FileContainer from './FileContainer';
66
import FolderContainer from './FolderContainer';
7+
import { FileEntity } from '../../state/folders/types';
78

89
type Props = {
910
selectedFile: string | null;
@@ -17,8 +18,29 @@ export default function Renderer({ selectedFile, setSelectedFile }: Props) {
1718

1819
const folderItems = folders.items;
1920

20-
const renderItems = () =>
21-
folderItems.map((item, index) => {
21+
// folderItems
22+
23+
const fileComparator = (a : FileEntity, b : FileEntity) => {
24+
if (a.type === b.type) {
25+
return (
26+
a.name.toLowerCase() < b.name.toLowerCase()
27+
? -1
28+
: ( a.name.toLowerCase() > b.name.toLowerCase()
29+
? 1
30+
: 0
31+
)
32+
);
33+
} else if (a.type === "File") {
34+
return 1
35+
}
36+
return -1;
37+
};
38+
39+
const renderItems = () =>
40+
41+
[...folderItems]
42+
.sort(fileComparator)
43+
.map((item, index) => {
2244
switch (item.type) {
2345
case 'Folder':
2446
return (

frontend/src/packages/dashboard/state/folders/reducers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export function renameFileEntity(
5858
state: sliceState,
5959
action: PayloadAction<RenamePayloadType>
6060
) {
61+
6162
const { id, newName } = action.payload;
6263
return {
6364
...state,

0 commit comments

Comments
 (0)