Overnap

handleUpdateRoomUser에 state가 updated인 경우 추가

...@@ -31,7 +31,6 @@ export const Room: React.FC = () => { ...@@ -31,7 +31,6 @@ export const Room: React.FC = () => {
31 const handleUpdateRoomUser = useCallback((rawMessage: RawMessage) => { 31 const handleUpdateRoomUser = useCallback((rawMessage: RawMessage) => {
32 if (rawMessage.type == MessageType.ROOM_USER_UPDATE) { 32 if (rawMessage.type == MessageType.ROOM_USER_UPDATE) {
33 const data = rawMessage.message as UpdateRoomUser; 33 const data = rawMessage.message as UpdateRoomUser;
34 - console.log(data);
35 if (data.state == 'removed') { 34 if (data.state == 'removed') {
36 const newUsers = roomData.users; 35 const newUsers = roomData.users;
37 const index = newUsers.indexOf(data.user); 36 const index = newUsers.indexOf(data.user);
...@@ -44,7 +43,19 @@ export const Room: React.FC = () => { ...@@ -44,7 +43,19 @@ export const Room: React.FC = () => {
44 ...roomData, 43 ...roomData,
45 users: newUsers 44 users: newUsers
46 }); 45 });
47 - } else if (data.state == 'added') { 46 + } else if (data.state === 'updated') {
47 + const newUsers = roomData.users;
48 + const index = newUsers.findIndex(x => x.username === data.user.username);
49 + if (index < 0) {
50 + console.log('존재하지 않는 유저를 업데이트 시도');
51 + } else {
52 + newUsers[index] = data.user;
53 + }
54 + setRoomData({
55 + ...roomData,
56 + users: newUsers
57 + })
58 + } else {
48 setRoomData({ 59 setRoomData({
49 ...roomData, 60 ...roomData,
50 users: [data.user, ...roomData.users] 61 users: [data.user, ...roomData.users]
......