diff --git a/packages/web/src/components/Chat/MessagesBody/MessageSet/index.tsx b/packages/web/src/components/Chat/MessagesBody/MessageSet/index.tsx
index ab62a70a1..06864f170 100644
--- a/packages/web/src/components/Chat/MessagesBody/MessageSet/index.tsx
+++ b/packages/web/src/components/Chat/MessagesBody/MessageSet/index.tsx
@@ -70,6 +70,7 @@ const MessageSet = ({ chats, layoutType, roomInfo }: MessageSetProps) => {
const authorName = "authorName" in chats?.[0] ? chats?.[0].authorName : "";
const isBot = authorId === "bot";
+ const isAlone = roomInfo.part.length === 1;
const style = {
position: "relative" as any,
@@ -148,8 +149,11 @@ const MessageSet = ({ chats, layoutType, roomInfo }: MessageSetProps) => {
{authorId !== userOid && (
!isBot && onClickProfileImage()}
+ css={{
+ ...styleProfile,
+ cursor: !isBot && !isAlone ? "pointer" : undefined,
+ }}
+ onClick={() => !isBot && !isAlone && onClickProfileImage()}
>
{isBot ? (
diff --git a/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx b/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx
index 306f1a2cc..e37671da8 100644
--- a/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx
+++ b/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx
@@ -125,6 +125,12 @@ const BodyRoomSelection = ({ roomInfo }: BodyRoomSelectionProps) => {
const isDepart = useIsTimeOver(dayServerToClient(roomInfo.time)); // 방 출발 여부
const requestJoin = useCallback(async () => {
+ if (isAlreadyPart) {
+ // 이미 참여 중인 방에서 버튼을 누르면 API 호출 관련 로직을 건너뛰고 해당 방으로 이동합니다.
+ history.push(`/myroom/${roomInfo._id}`);
+ return;
+ }
+ // 여기부터는 이미 참여 중인 방이 아닌 경우의 로직입니다.
if (onCall.current) return;
onCall.current = true;
await axios({
@@ -204,7 +210,7 @@ const BodyRoomSelection = ({ roomInfo }: BodyRoomSelectionProps) => {
{isLogin || isRoomFull || isDepart ? (
diff --git a/packages/web/src/pages/Mypage/langs/en.json b/packages/web/src/pages/Mypage/langs/en.json
index 365791c93..7c8413599 100644
--- a/packages/web/src/pages/Mypage/langs/en.json
+++ b/packages/web/src/pages/Mypage/langs/en.json
@@ -16,6 +16,7 @@
"terms_privacy": "Collection and Use of Personal Information",
"privacy_policy": "Privacy Policy",
"credit": "Credit",
+ "cancel_account": "Cancel Account",
"logout": "Logout",
"page_modify": {
"cancel": "Cancel",
diff --git a/packages/web/src/pages/Mypage/langs/ko.json b/packages/web/src/pages/Mypage/langs/ko.json
index 99afcaebe..c235bb6f7 100644
--- a/packages/web/src/pages/Mypage/langs/ko.json
+++ b/packages/web/src/pages/Mypage/langs/ko.json
@@ -16,6 +16,7 @@
"terms_privacy": "개인정보 수집 및 이용",
"privacy_policy": "개인정보 처리방침",
"credit": "만든 사람들",
+ "cancel_account": "회원 탈퇴하기",
"logout": "로그아웃",
"page_modify": {
"cancel": "취소",
diff --git a/packages/web/src/pages/Myroom/R1Myroom.tsx b/packages/web/src/pages/Myroom/R1Myroom.tsx
index f370da6db..43ad069f0 100644
--- a/packages/web/src/pages/Myroom/R1Myroom.tsx
+++ b/packages/web/src/pages/Myroom/R1Myroom.tsx
@@ -3,7 +3,7 @@ import { Link } from "react-router-dom";
import AdaptiveDiv from "@/components/AdaptiveDiv";
import Empty from "@/components/Empty";
import Pagination, { PAGE_MAX_ITEMS } from "@/components/Pagination";
-import Room from "@/components/Room";
+import AnimatedRoom from "@/components/Room/AnimatedRoom";
import Title from "@/components/Title";
/**
@@ -23,63 +23,67 @@ const R1Myroom = ({
ongoing = [],
done = [],
donePageInfo,
-}: R1MyroomProps) => (
-
-
- 참여 중인 방
-
- {ongoing.length === 0 ? (
- 참여 중인 방이 없습니다
- ) : (
- ongoing.map((item) => (
-
- {
+ return (
+
+
+ 참여 중인 방
+
+ {ongoing?.length === 0 ? (
+ 참여 중인 방이 없습니다
+ ) : (
+ ongoing.map((item) => (
+
+
+
+ ))
+ )}
+
+ 과거 참여 방
+
+ {done?.length === 0 ? (
+ 과거 참여했던 방이 없습니다
+ ) : (
+ <>
+ {done
+ ?.slice(
+ PAGE_MAX_ITEMS * (donePageInfo.currentPage - 1),
+ PAGE_MAX_ITEMS * donePageInfo.currentPage
+ )
+ .map((item) => (
+
+
+
+ ))}
+
-
- ))
- )}
-
- 과거 참여 방
-
- {done.length === 0 ? (
- 과거 참여했던 방이 없습니다
- ) : (
- <>
- {done
- .slice(
- PAGE_MAX_ITEMS * (donePageInfo.currentPage - 1),
- PAGE_MAX_ITEMS * donePageInfo.currentPage
- )
- .map((item) => (
-
-
-
- ))}
-
- >
- )}
-
-);
+ >
+ )}
+
+ );
+};
export default R1Myroom;
diff --git a/packages/web/src/pages/Myroom/R2Myroom.jsx b/packages/web/src/pages/Myroom/R2Myroom.jsx
index e64524732..82618053b 100644
--- a/packages/web/src/pages/Myroom/R2Myroom.jsx
+++ b/packages/web/src/pages/Myroom/R2Myroom.jsx
@@ -7,6 +7,7 @@ import DottedLine from "@/components/DottedLine";
import Empty from "@/components/Empty";
import Pagination, { PAGE_MAX_ITEMS } from "@/components/Pagination";
import Room from "@/components/Room";
+import AnimatedRoom from "@/components/Room/AnimatedRoom";
import Title from "@/components/Title";
import WhiteContainer from "@/components/WhiteContainer";
@@ -60,11 +61,12 @@ const R2Myroom = (props) => {
currentId={props.roomId}
id={item._id}
>
-
))
@@ -91,11 +93,12 @@ const R2Myroom = (props) => {
currentId={props.roomId}
id={item._id}
>
-
))}
diff --git a/packages/web/src/pages/Myroom/index.jsx b/packages/web/src/pages/Myroom/index.jsx
index 74addd835..2fba017e4 100644
--- a/packages/web/src/pages/Myroom/index.jsx
+++ b/packages/web/src/pages/Myroom/index.jsx
@@ -2,8 +2,13 @@ import { useEffect } from "react";
import { useHistory, useParams } from "react-router-dom";
import useButterflyState from "@/hooks/useButterflyState";
-import { useIsLogin, useValueRecoilState } from "@/hooks/useFetchRecoilState";
+import {
+ useFetchRecoilState,
+ useIsLogin,
+ useValueRecoilState,
+} from "@/hooks/useFetchRecoilState";
import usePageFromSearchParams from "@/hooks/usePageFromSearchParams";
+import useRoomListAnimationState from "@/hooks/useRoomListAnimationState";
import AdaptiveDiv from "@/components/AdaptiveDiv";
import { PAGE_MAX_ITEMS } from "@/components/Pagination";
@@ -20,10 +25,22 @@ const Myroom = () => {
const { roomId } = useParams();
const butterflyState = useButterflyState();
const myRooms = useValueRecoilState("myRooms");
+ const fetchMyRooms = useFetchRecoilState("myRooms");
const totalPages = Math.ceil((myRooms?.done?.length ?? 0) / PAGE_MAX_ITEMS);
const currentPage = usePageFromSearchParams(totalPages);
const isLogin = useIsLogin();
+ const { localRooms: ongoing } = useRoomListAnimationState(myRooms?.ongoing);
+ const { localRooms: done } = useRoomListAnimationState(myRooms?.done);
+
+ useEffect(() => {
+ const interval = setInterval(() => {
+ fetchMyRooms();
+ }, 1000 * 10);
+
+ return () => clearInterval(interval);
+ }, []);
+
useEffect(() => {
if (butterflyState === "fold" && roomId) {
history.replace(`/chatting/${roomId}`);
@@ -40,15 +57,15 @@ const Myroom = () => {
) : butterflyState === "fold" ? (
) : (
);
diff --git a/packages/web/src/static/members/members.ts b/packages/web/src/static/members/members.ts
index 50b8e0c67..9c1d0d711 100644
--- a/packages/web/src/static/members/members.ts
+++ b/packages/web/src/static/members/members.ts
@@ -23,7 +23,8 @@ const members: Members = [
{
position: "Project Manager",
list: [
- { name: "김건", id: "suwon", period: "2022 ~ 2023" }, // 22봄 ~ 23여름 (누적 6학기)
+ { name: "김민찬", id: "static", period: "2024" }, // 24봄 (누적 1학기)
+ { name: "김건", id: "suwon", period: "2022 ~ 2023" }, // 22봄 ~ 23겨울 (누적 8학기)
{ name: "이채영", id: "stitch", period: "2021" }, // 21봄 ~ 21겨울 (누적 4학기)
],
},
@@ -31,36 +32,41 @@ const members: Members = [
position: "Designer",
list: [
{ name: "최지헌", id: "agent", period: "2021 ~ 2022" }, // 21여름 ~ 22겨울 (누적 7학기)
+ { name: "황인태", id: "ricky", period: "2023 ~ 2024" }, // 23가을 ~ 24봄 (누적 2학기)
{ name: "조유민", id: "yumyum", period: "2023" }, // 23여름 ~ 23가을 (누적 3학기)
{ name: "이혜원", id: "chillo", period: "2021" }, // 21가을 ~ 21겨울 (누적 2학기)
- { name: "황인태", id: "ricky", period: "2023" }, // 23가을 (누적 1학기)
],
},
{
position: "Developer",
list: [
- { name: "정상", id: "macintosh", period: "2021 ~ 2023" }, // 21가을 ~ 23가을 (누적 9학기)
- { name: "예상우", id: "andy", period: "2022 ~ 2023" }, // 22봄 ~ 23가을 (누적 7학기)
- { name: "손성민", id: "happycastle", period: "2022 ~ 2023" }, // 22여름 ~ 23가을 (누적 6학기)
- { name: "최동원", id: "won", period: "2022 ~ 2023" }, // 22가을 ~ 23가을 (누적 5학기)
+ { name: "정상", id: "macintosh", period: "2021 ~ 2023" }, // 21가을 ~ 23겨울 (누적 10학기)
+ { name: "예상우", id: "andy", period: "2022 ~ 2024" }, // 22봄 ~ 24봄 (누적 9학기)
+ { name: "손성민", id: "happycastle", period: "2022 ~ 2024" }, // 22여름 ~ 24봄 (누적 8학기)
+ { name: "최동원", id: "won", period: "2022 ~ 2024" }, // 22가을 ~ 24봄 (누적 7학기)
+ { name: "김효경", id: "diana", period: "2022 ~ 2023" }, // 22가을 ~ 23겨울 (누적 6학기)
{ name: "이서완", id: "swany", period: "2022 ~ 2023" }, // 22봄 ~ 23봄 (누적 5학기)
- { name: "김효경", id: "diana", period: "2022 ~ 2023" }, // 22가을 ~ 23가을 (누적 5학기)
- { name: "최지헌", id: "agent", period: "2022" }, // 22봄 ~ 22겨울 (누적 4학기)
- { name: "최준영", id: "dogma", period: "2021" }, // 21봄 ~ 21겨울 (누적 4학기)
+ { name: "윤부민", id: "nimby", period: "2023 ~ 2024" }, // 23여름 ~ 24봄 (누적 4학기)
+ { name: "한우영", id: "hanu", period: "2023 ~ 2024" }, // 23여름 ~ 24봄 (누적 4학기)
{ name: "김태우", id: "toby", period: "2021 ~ 2023" }, // 21가을 ~ 22봄, 23가을 (누적 4학기)
{ name: "안태찬", id: "return", period: "2022 ~ 2023" }, // 22가을 ~ 23봄, 23가을 (누적 4학기)
+ { name: "최지헌", id: "agent", period: "2022" }, // 22봄 ~ 22겨울 (누적 4학기)
+ { name: "최준영", id: "dogma", period: "2021" }, // 21봄 ~ 21겨울 (누적 4학기)
{ name: "이진우", id: "jaydub", period: "2022" }, // 22봄 ~ 22겨울 (누적 3학기)
- { name: "윤부민", id: "nimby", period: "2023" }, // 23여름 ~ 23가을 (누적 2학기)
- { name: "한우영", id: "hanu", period: "2023" }, // 23여름 ~ 23가을 (누적 2학기)
+ { name: "박태현", id: "source", period: "2023 ~ 2024" }, // 23가을 ~ 24봄 (누적 2학기)
+ { name: "권진현", id: "daystar", period: "2023 ~ 2024" }, // 23가을 ~ 24봄 (누적 2학기)
+ { name: "박지호", id: "night", period: "2022" }, // 22여름 ~ 22가을 (누적 2학기)
{ name: "신태현", id: "kiko", period: "2022" }, // 22봄 ~ 22여름 (누적 2학기)
{ name: "박진호", id: "bread", period: "2021" }, // 21가을 ~ 21겨울 (누적 2학기)
{ name: "송인화", id: "ina", period: "2021" }, // 21봄 ~ 21여름 (누적 2학기)
- { name: "박지호", id: "night", period: "2022" }, // 22여름 ~ 22가을 (누적 2학기)
- { name: "김민찬", id: "static", period: "2023" }, // 23가을 (누적 1학기)
- { name: "박태현", id: "source", period: "2023" }, // 23가을 (누적 1학기)
- { name: "권진현", id: "daystar", period: "2023" }, // 23가을 (누적 1학기)
+ { name: "김제윤", id: "doolly", period: "2024" }, // 24봄 (누적 1학기)
+ { name: "황민성", id: "minseong", period: "2024" }, // 24봄 (누적 1학기)
+ { name: "박병찬", id: "chan", period: "2023" }, // 23겨울 (누적 1학기)
+ { name: "권순호", id: "snowsuno", period: "2023" }, // 23겨울 (누적 1학기)
+ { name: "민지연", id: "mingle", period: "2023" }, // 23겨울 (누적 1학기)
{ name: "김현수", id: "default", period: "2023" }, // 23가을 (누적 1학기)
- { name: "김건", id: "suwon", period: "2021 ~ 2023" }, // 21봄 ~ 21겨울 (누적 4학기)
+ { name: "김민찬", id: "static", period: "2023 ~ 2024" }, // 23가을 ~ 24봄 (누적 2학기)
+ { name: "김건", id: "suwon", period: "2021 ~ 2023" }, // 21봄 ~ 23겨울 (누적 12학기)
{ name: "이채영", id: "stitch", period: "2021" }, // 21봄 ~ 21겨울 (누적 4학기)
],
},