Skip to content

Commit daf8728

Browse files
authored
feat: 워크스페이스 생성 시 해당 워크스페이스로 이동 (#217)
1 parent 9e58b2c commit daf8728

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

client/src/components/WorkspaceModal/CreateModal.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,22 @@ import React, { useState } from 'react';
22
import { postWorkspace, postWorkspaceJoin } from 'src/apis/workspace';
33
import { MENU } from 'src/constants/workspace';
44
import useWorkspacesContext from 'src/hooks/useWorkspacesContext';
5+
import { Workspace } from 'src/types/workspace';
56

67
import FormModal, { ModalContents } from './FormModal';
78

89
interface CreateModalProps {
910
modalContents: ModalContents;
1011
onClose: () => void;
1112
setSelectedMenu: React.Dispatch<React.SetStateAction<number>>;
12-
setCode: React.Dispatch<React.SetStateAction<string>>;
13+
setWorkspace: React.Dispatch<React.SetStateAction<Workspace | undefined>>;
1314
}
1415

1516
function CreateModal({
1617
modalContents,
1718
onClose,
1819
setSelectedMenu,
19-
setCode,
20+
setWorkspace,
2021
}: CreateModalProps) {
2122
const { setWorkspaces } = useWorkspacesContext();
2223

@@ -29,7 +30,7 @@ function CreateModal({
2930
await postWorkspaceJoin({ code });
3031

3132
setWorkspaces((workspaces) => [...workspaces, workspace]);
32-
setCode(code);
33+
setWorkspace(workspace);
3334
setSelectedMenu(MENU.CREATE_SUCCESS);
3435

3536
return;

client/src/components/WorkspaceModal/CreateSuccessModal.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
1+
import { useNavigate } from 'react-router-dom';
2+
import { Workspace } from 'src/types/workspace';
3+
14
import FormModal, { ModalContents } from './FormModal';
25

36
interface CreateSuccessModalProps {
47
modalContents: ModalContents;
5-
code: string;
8+
workspace?: Workspace;
69
onClose: () => void;
710
}
811

912
function CreateSuccessModal({
1013
modalContents,
11-
code,
14+
workspace,
1215
onClose,
1316
}: CreateSuccessModalProps) {
17+
const navigate = useNavigate();
18+
19+
if (!workspace) {
20+
throw new Error('일어날 수 없는 일이 일어났어요 ^^');
21+
}
22+
23+
const { id, code } = workspace;
24+
1425
const onSubmit = () => {
1526
onClose();
27+
navigate(`/workspace/${id}`);
1628
return;
1729
};
1830

client/src/components/WorkspaceModal/index.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useState } from 'react';
22
import { MENU, MODAL_MENUS } from 'src/constants/workspace';
3+
import { Workspace } from 'src/types/workspace';
34

45
import CreateModal from './CreateModal';
56
import CreateSuccessModal from './CreateSuccessModal';
@@ -14,7 +15,7 @@ function WorkspaceModal({
1415
selectedMenu,
1516
setSelectedMenu,
1617
}: WorkspaceModalProps) {
17-
const [code, setCode] = useState<string>('');
18+
const [workspace, setWorkspace] = useState<Workspace>();
1819

1920
const modalContents = MODAL_MENUS[selectedMenu];
2021

@@ -27,15 +28,15 @@ function WorkspaceModal({
2728
modalContents={modalContents}
2829
onClose={onClose}
2930
setSelectedMenu={setSelectedMenu}
30-
setCode={setCode}
31+
setWorkspace={setWorkspace}
3132
/>
3233
);
3334
case MENU.CREATE_SUCCESS:
3435
return (
3536
<CreateSuccessModal
3637
modalContents={modalContents}
3738
onClose={onClose}
38-
code={code}
39+
workspace={workspace}
3940
/>
4041
);
4142
case MENU.JOIN:

0 commit comments

Comments
 (0)