diff --git a/src/constants/testText.ts b/src/constants/testText.ts index 2260b8d..3458930 100644 --- a/src/constants/testText.ts +++ b/src/constants/testText.ts @@ -1,9 +1,40 @@ -export const TEST_TEXT: string = - "님이 이번 팀 프로젝트에서\n가장 챙겨가고 싶은 점은 무엇인가요?"; +export const TEST_TEXT: string[] = [ + "님이 이번 팀 프로젝트에서 가장 챙겨가고 싶은 점은 무엇인가요?", + "가장 중요하게 생각하는 협업 요소는 무엇인가요?", + "팀원들과의 관계에서 가장 중요하게 생각하는 점은 무엇인가요?", + "프로젝트가 끝난 후 팀원들에게 어떤 모습으로 기억되고 싶은가요?", + "프로젝트를 진행하면서 스스로에게 가장 엄격하게 적용하고 싶은 원칙은 무엇인가요?", +]; -export const TEST_BTN_TEXT: string[] = [ - "팀원들과의 네트워킹", - "새로운 개발 기술 도전", - "팀원들과의 협업 경험", - "문제 해결 능력 강화", +export const TEST_BTN_TEXT = [ + [ + "팀원들과의 네트워킹", + "새로운 개발 기술 도전", + "팀원들과의 협업 경험", + "문제 해결 능력 강화", + ], + [ + "명확한 목표와 방향 설정", + "팀원들 간의 신뢰와 존중", + "일정과 마감 기한 준수", + "자발적이고 적극적인 참여", + ], + [ + "신뢰와 존중", + "서로의 역할에 대한 이해와 존중", + "친밀한 관계와 팀워크", + "자유로운 의견 교환과 소통", + ], + [ + "항상 문제를 해결하려고 노력했던 사람", + "팀 분위기를 밝게 만들고 소통을 원활하게 했던 사람", + "신뢰할 수 있고 책임감 있게 맡은 일을 수행했던 사람", + "새로운 아이디어와 관점으로 프로젝트에 기여했던 사람", + ], + [ + "맡은 일에 끝까지 책임지는 자세", + "팀원들의 의견을 존중하고 경청하는 태도", + "정해진 일정과 마감을 철저히 지키는 시간 관리", + "문제에 직면했을 때 포기하지 않고 끝까지 해결하려는 의지", + ], ]; diff --git a/src/pages/invite/Invite.tsx b/src/pages/invite/Invite.tsx index 9d423b3..f5ce310 100644 --- a/src/pages/invite/Invite.tsx +++ b/src/pages/invite/Invite.tsx @@ -1,11 +1,12 @@ import Button from "@components/common/button/Button"; import HintText2 from "@components/common/hintText/HintText2"; import DeactivatedProfile from "@components/invite/profile/DeactivatedProfile"; +import ActivatedProfile from "@components/invite/profile/ActivatedProfile"; // ActivatedProfile import 추가 import UrlCopy from "@components/invite/urlCopy/UrlCopy"; import styled from "styled-components"; import { useParams } from "react-router-dom"; import { instance } from "@apis/instance"; -import { useEffect } from "react"; +import { useEffect, useState } from "react"; // useState import 추가 export const Container = styled.div` width: 350px; @@ -33,25 +34,40 @@ export const ProfileList = styled.div` margin: 0 0 20px 0; `; +// types.ts (또는 적절한 파일에 타입 선언) + +export interface Profile { + id: number; // id가 숫자라고 가정 + user_name: string; // 사용자 이름 + role: string; // 역할 + // 필요한 다른 필드도 추가 가능 +} + const Invite: React.FC = () => { const { team, count } = useParams(); + const [profiles, setProfiles] = useState([]); // 프로필 상태 관리 localStorage.setItem("team_id", team ? team : "test"); localStorage.setItem("member_count", count ? count : "test"); + useEffect(() => { fetchData(); }, []); + const fetchData = async () => { try { const response = await instance.get( `/teams/${localStorage.getItem("team_id")}/profiles/` ); - console.log(response); + setProfiles(response.data.profiles); // 받아온 프로필 데이터를 상태에 저장 } catch (err) { console.log(err); } }; + const registeredCount = profiles.length; // 등록된 팀원의 수 + const totalCount = Number(localStorage.getItem("member_count")); // 전체 팀원의 수 + return (
@@ -69,22 +85,22 @@ const Invite: React.FC = () => { 프로필 등록을 하지 않으면 다음을 진행할 수 없어요." /> - {Array.from( - { length: Number(localStorage.getItem("member_count")) }, - (_, index) => ( - - ) - )} + {profiles.map((profile, index) => ( + + ))} + {Array.from({ length: totalCount - registeredCount }, (_, index) => ( + + ))}