Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit 6b4082c

Browse files
committed
Refactoring
1 parent feef1c4 commit 6b4082c

File tree

2 files changed

+36
-17
lines changed

2 files changed

+36
-17
lines changed

src/helpers/ArrayHelper.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,7 @@ export function mapCurrentNext<T, Result = any>(
4848
export function last<T>(arr: T[]): T | undefined {
4949
return arr[arr.length - 1];
5050
}
51+
52+
export function first<T>(arr: T[]): T | undefined {
53+
return arr[0];
54+
}

src/screens/projects/ProjectsScreen.tsx

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useCallback, useState } from 'react';
22
import { Button, Layout, Space } from 'antd';
33
import { observer } from 'mobx-react';
44
import { Key } from 'rc-tree/lib/interface';
@@ -17,6 +17,8 @@ import TaskNode from './components/TaskNode/TaskNode';
1717
import DrawerTask from './components/DrawerTask/DrawerTask';
1818
import ProjectNode from './components/ProjectNode/ProjectNode';
1919
import EditProjectModal from './components/ProjectModals/EditProjectModal';
20+
import { first } from '../../helpers/ArrayHelper';
21+
import clsx from 'clsx';
2022

2123
const { Sider } = Layout;
2224

@@ -75,6 +77,16 @@ const ProjectList = TreeList<ProjectModel>(
7577
}
7678
);
7779

80+
function handleSelectProject(items: Key[]) {
81+
if (items.length > 0) {
82+
projectStore.setActiveProject(first(items) as string);
83+
}
84+
}
85+
86+
function clearEditableProject() {
87+
projectStore.setEditableProject(undefined);
88+
}
89+
7890
export default observer(function Projects() {
7991
const classes = useStyles();
8092
const [showProjectModal, setShowProjectModal] = useState<boolean>(false);
@@ -85,24 +97,26 @@ export default observer(function Projects() {
8597
setShowProjectModal(true);
8698
}
8799

88-
function handleSelectProject(items: Key[]) {
89-
if (items.length > 0) {
90-
projectStore.setActiveProject(items[0] as string);
91-
}
92-
}
93-
94-
function handleSelectTask(items: Key[]) {
100+
const handleSelectTask = useCallback((items: Key[]) => {
95101
if (items.length > 0) {
96102
setDrawerVisible(true);
97-
const task = tasksStore.getTaskByKey(items[0] as string);
103+
const task = tasksStore.getTaskByKey(first(items) as string);
98104
setSelectedTask(task);
99105
}
100-
}
106+
}, []);
107+
'';
108+
const handleCloseDrawer = useCallback(() => {
109+
setDrawerVisible(false);
110+
}, []);
111+
112+
const handleHideProjectModal = useCallback(() => {
113+
setShowProjectModal(false);
114+
}, []);
101115

102116
return (
103117
<Layout>
104118
<Sider width={250} className={classes.sider}>
105-
<Layout style={{ padding: '12px' }}>
119+
<Layout className={classes.padding}>
106120
<Space direction="vertical">
107121
<ProjectList onSelect={handleSelectProject} />
108122
<Button onClick={handleCreateProject} icon={<PlusOutlined />}>
@@ -111,23 +125,21 @@ export default observer(function Projects() {
111125
</Space>
112126
</Layout>
113127
</Sider>
114-
<Layout style={{ padding: '24px' }} className={classes.tasks}>
128+
<Layout className={clsx(classes.padding, classes.tasks)}>
115129
<Space className="root" direction="vertical">
116130
<TaskList onSelect={handleSelectTask} />
117131
<TaskInput />
118132
</Space>
119133
</Layout>
120-
{showProjectModal && (
121-
<ProjectModal onClose={() => setShowProjectModal(false)} />
122-
)}
134+
{showProjectModal && <ProjectModal onClose={handleHideProjectModal} />}
123135
<EditProjectModal
124136
project={projectStore.editProject}
125-
onClose={() => projectStore.setEditableProject(undefined)}
137+
onClose={clearEditableProject}
126138
/>
127139
<DrawerTask
128140
task={selectedTask}
129141
visible={drawerVisible}
130-
onClose={() => setDrawerVisible(false)}
142+
onClose={handleCloseDrawer}
131143
/>
132144
</Layout>
133145
);
@@ -141,4 +153,7 @@ const useStyles = createUseStyles({
141153
tasks: {
142154
overflowY: 'auto',
143155
},
156+
padding: {
157+
padding: 12,
158+
},
144159
});

0 commit comments

Comments
 (0)