-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathRenderer.tsx
56 lines (52 loc) · 1.36 KB
/
Renderer.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import React from 'react';
import { useSelector } from 'react-redux';
import { RootState } from 'src/redux-state/reducers';
import { folderSelectors } from '../../state/folders/index';
import FileContainer from './FileContainer';
import FolderContainer from './FolderContainer';
type Props = {
selectedFile: string | null;
setSelectedFile: (id: string) => void;
};
export default function Renderer({ selectedFile, setSelectedFile }: Props) {
const folders = useSelector((state: RootState) =>
folderSelectors.getFolderState(state)
);
const folderItems = folders.items;
const renderItems = () =>
folderItems.map((item, index) => {
switch (item.type) {
case 'Folder':
return (
<FolderContainer
key={index}
id={item.id}
name={item.name}
selectedFile={selectedFile}
setSelectedFile={setSelectedFile}
/>
);
case 'File':
return (
<FileContainer
key={index}
id={item.id}
name={item.name}
selectedFile={selectedFile}
setSelectedFile={setSelectedFile}
/>
);
default:
return;
}
});
return (
<div
style={{
display: 'flex',
}}
>
{renderItems()}
</div>
);
}