Skip to content

Commit 516000d

Browse files
authored
Feat/#372-K: 회의록 제목 변경 MomList에 반영 (#373)
* feat: UPDATE_TITLE 이벤트에 사이드바 momList 업데이트 * fix: dependency array 추가 및 optional chaining 제거
1 parent e452690 commit 516000d

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

client/src/components/Mom/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ function Mom() {
3838
const title = titleRef.current.innerText;
3939

4040
socket.emit(MOM_EVENT.UPDATE_TITLE, title);
41+
ee.emit(MOM_EVENT.UPDATE_TITLE, title);
4142
},
4243
500,
4344
);
@@ -149,6 +150,7 @@ function Mom() {
149150
if (!titleRef.current) return;
150151

151152
titleRef.current.innerText = title;
153+
ee.emit(MOM_EVENT.UPDATE_TITLE, title);
152154
});
153155

154156
socket.on(MOM_EVENT.UPDATED, () => {

client/src/components/Sidebar/MomList.tsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import { memo, useEffect, useState } from 'react';
44
import useSocketContext from 'src/hooks/context/useSocketContext';
55
import { TMom } from 'src/types/mom';
66

7+
import ee from '../Mom/EventEmitter';
78
import style from './style.module.scss';
89

910
interface MomListProps {
1011
moms: TMom[];
12+
selectedMom: TMom | null;
1113
setSelectedMom: React.Dispatch<React.SetStateAction<TMom | null>>;
1214
}
1315

14-
function MomList({ moms, setSelectedMom }: MomListProps) {
16+
function MomList({ moms, selectedMom, setSelectedMom }: MomListProps) {
1517
const { momSocket: socket } = useSocketContext();
1618
const [momList, setMomList] = useState<TMom[]>(moms);
1719

@@ -42,6 +44,25 @@ function MomList({ moms, setSelectedMom }: MomListProps) {
4244
};
4345
}, [moms]);
4446

47+
useEffect(() => {
48+
ee.on(MOM_EVENT.UPDATE_TITLE, (title) => {
49+
if (!selectedMom) return;
50+
51+
const updatedMomList = momList.map((mom) => {
52+
if (mom._id === selectedMom._id) {
53+
return { ...mom, title };
54+
}
55+
return mom;
56+
});
57+
58+
setMomList(updatedMomList);
59+
});
60+
61+
return () => {
62+
ee.off(MOM_EVENT.UPDATE_TITLE);
63+
};
64+
}, []);
65+
4566
return (
4667
<div className={style['mom-list-container']}>
4768
<div className={style['mom-list-header']}>

client/src/components/Sidebar/index.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,18 @@ interface SidebarProps {
1212
}
1313

1414
function Sidebar({ workspace }: SidebarProps) {
15-
const { setSelectedMom } = useSelectedMomContext();
15+
const { selectedMom, setSelectedMom } = useSelectedMomContext();
1616

1717
return (
1818
<div className={style['sidebar-container']}>
1919
<Header name={workspace.name} />
2020
<div className={style['sidebar-container__scrollable']}>
2121
<MemberList members={workspace.members} />
22-
<MomList moms={workspace.moms} setSelectedMom={setSelectedMom} />
22+
<MomList
23+
moms={workspace.moms}
24+
selectedMom={selectedMom}
25+
setSelectedMom={setSelectedMom}
26+
/>
2327
</div>
2428
<MeetingButton />
2529
</div>

0 commit comments

Comments
 (0)